def test_add_agents(self): x = BaseAgingAgent(graph='test') with self.assertRaises(ValueError): x.add_agents({'age': ['test', 'test2']}) with self.assertRaises(KeyError): x.add_agents({'wrong_col_name': [0, 0]}) x.add_agents({'age': [1, 2, 3, 4]}) self.assertTrue((x.df_population['age'] == np.array([1, 2, 3, 4])).all()) self.assertTrue((x.df_population['col_id'] == np.array([0, 1, 2, 3])).all()) self.assertEqual(x.df_population.shape, (4, 2)) x.add_attribute('test_attr', def_value=10) x.add_agents({'age': 1}) self.assertTrue((x.df_population['age'] == np.array([1, 2, 3, 4, 1])).all()) self.assertTrue((x.df_population['col_id'] == np.array([0, 1, 2, 3, 4])).all()) self.assertTrue( (x.df_population['test_attr'] == np.array([10, 10, 10, 10, 10])).all()) self.assertEqual(x.df_population.shape, (5, 3)) x.add_attribute('test_attr2') x.add_agents({'age': 17}) self.assertTrue( (x.df_population['age'] == np.array([1, 2, 3, 4, 1, 17])).all()) self.assertTrue( (x.df_population['col_id'] == np.array([0, 1, 2, 3, 4, 5])).all()) self.assertTrue( (x.df_population['test_attr'] == np.array([10, 10, 10, 10, 10, 10])).all()) self.assertTrue( (np.nan_to_num(x.df_population['test_attr2'], 0.) == np.array([0., 0., 0., 0., 0., 0.])).all()) self.assertEqual(x.df_population.shape, (6, 4)) x.add_agents({'age': [3, 4], 'test_attr2': 3.}) self.assertTrue( (x.df_population['age'] == np.array([1, 2, 3, 4, 1, 17, 3, 4])).all()) self.assertTrue( (x.df_population['col_id'] == np.array([0, 1, 2, 3, 4, 5, 6, 7])).all()) self.assertTrue((x.df_population['test_attr'] == np.array( [10, 10, 10, 10, 10, 10, 10, 10])).all()) self.assertTrue( (np.nan_to_num(x.df_population['test_attr2'], 0.) == np.array([0., 0., 0., 0., 0., 0., 3., 3.])).all()) self.assertEqual(x.df_population.shape, (8, 4)) with self.assertRaises(ValueError): x.add_agents({'age': [1, 2], 'test_attr': [4, 5, 6]})
def test_change_default_val(self): x = BaseAgingAgent(graph='test') with self.assertRaises(TypeError): x.set_default_val([]) with self.assertRaises(KeyError): x.set_default_val({'test': 10}) x.add_attribute('test', def_value=10) self.assertEqual(x.dict_default_val, {'age': 0, 'test': 10}) x.set_default_val({'age': 2}, replace=True) self.assertEqual(x.dict_default_val, {'age': 2})
def test_count_agents_per_vertex(self): class FakeGraph: weights = np.array([0, 0, 0, 0, 0]) x = BaseAgingAgent(graph=FakeGraph()) x.add_attribute('position', def_value=0) x.add_agents({'age': 0, 'position': [0, 0, 0, 1, 1, 3, 4, 3, 2, 0, 2]}) count_all = x.count_pop_per_vertex() self.assertEqual(count_all.sum(), 11) self.assertTrue((count_all == np.array([4, 2, 2, 2, 1])).all()) with self.assertRaises(ValueError): condition = np.array([True, False]) x.count_pop_per_vertex(condition=condition) with self.assertRaises(ValueError): condition = np.array([0, 0, 0, 1, 1, 3, 4, 3, 2, 0, 2]) x.count_pop_per_vertex(condition=condition) with self.assertRaises(ValueError): condition = np.array([[0, 0, 0, 1, 1, 3, 4, 3, 2, 0, 2]]) x.count_pop_per_vertex(condition=condition) with self.assertRaises(ValueError): condition = {} x.count_pop_per_vertex(condition=condition) condition = np.array([ False, False, False, True, True, True, True, True, True, False, True ]) count_cond = x.count_pop_per_vertex(condition=condition) self.assertEqual(count_cond.sum(), 7) self.assertTrue((count_cond == np.array([0, 2, 2, 2, 1])).all())