@@ -366,14 +366,22 @@ def test_agenttype_reporter_multiple_types(self):
366366 self .assertNotIn ("type_b_val" , agent_a_data .columns )
367367 self .assertNotIn ("type_a_val" , agent_b_data .columns )
368368
369- def test_agenttype_reporter_not_in_model (self ):
370- """Test NotImplementedError is raised when agent type is not in model.agents_by_type ."""
369+ def test_agenttype_superclass_reporter (self ):
370+ """Test adding a reporter for a superclass of an agent type ."""
371371 model = MockModelWithAgentTypes ()
372- # MockAgent is a legit Agent subclass, but it is not in model.agents_by_type
373372 model .datacollector ._new_agenttype_reporter (MockAgent , "val" , lambda a : a .val )
374- with self .assertRaises (NotImplementedError ):
373+ model .datacollector ._new_agenttype_reporter (Agent , "val" , lambda a : a .val )
374+ for _ in range (3 ):
375375 model .step ()
376376
377+ super_data = model .datacollector .get_agenttype_vars_dataframe (MockAgent )
378+ agent_data = model .datacollector .get_agenttype_vars_dataframe (Agent )
379+ self .assertIn ("val" , super_data .columns )
380+ self .assertIn ("val" , agent_data .columns )
381+ self .assertEqual (len (super_data ), 30 ) # 10 agents * 3 steps
382+ self .assertEqual (len (agent_data ), 30 )
383+ self .assertTrue (super_data .equals (agent_data ))
384+
377385
378386if __name__ == "__main__" :
379387 unittest .main ()
0 commit comments