@@ -24,6 +24,57 @@ def setUp(self) -> None:
2424 print (f"\n { self ._testMethodName } started..." )
2525 self .out_folder = manifest .demo_folder
2626
27+ def test_get_node_by_name (self ):
28+ from emod_api .demographics .Demographics import DemographicsBase
29+
30+ mars = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Mars' )
31+ venus = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Venus' )
32+ earth = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Earth' )
33+ nodes = [mars , venus ]
34+ demographics = Demographics .Demographics (nodes = nodes , default_node = earth )
35+
36+ # a non default node
37+ node = demographics .get_node_by_name (node_name = mars .name )
38+ self .assertEqual (node , nodes [0 ])
39+
40+ # the default node, checked explicitly then implicitly
41+ node = demographics .get_node_by_name (node_name = earth .name )
42+ self .assertEqual (node , earth )
43+
44+ node = demographics .get_node_by_name (node_name = None )
45+ self .assertEqual (node , earth )
46+
47+ # a node name that does not exist (yet, at least!)
48+ self .assertRaises (DemographicsBase .UnknownNodeException , demographics .get_node_by_name , node_name = 'Planet X' )
49+
50+ def test_get_nodes_by_name (self ):
51+ from emod_api .demographics .Demographics import DemographicsBase
52+
53+ mars = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Mars' )
54+ venus = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Venus' )
55+ earth = Node .Node (lat = 0 , lon = 0 , pop = 100 , name = 'Earth' )
56+ nodes = [mars , venus ]
57+ demographics = Demographics .Demographics (nodes = nodes , default_node = earth )
58+
59+ # just getting some nodes, also checking explicit default node request, too.
60+ nodes = demographics .get_nodes_by_name (node_names = ['Mars' , 'Earth' ])
61+ expected = {earth .name : earth , mars .name : mars }
62+ self .assertEqual (nodes , expected )
63+
64+ # verify that a node name of None will yield the default node
65+ nodes = demographics .get_nodes_by_name (node_names = ['Mars' , None ])
66+ expected = {earth .name : earth , mars .name : mars }
67+ self .assertEqual (nodes , expected )
68+
69+ nodes = demographics .get_nodes_by_name (node_names = None )
70+ expected = {earth .name : earth }
71+ self .assertEqual (nodes , expected )
72+
73+ # a node name that does not exist (yet, at least!)
74+ self .assertRaises (DemographicsBase .UnknownNodeException , demographics .get_nodes_by_name ,
75+ node_names = ['Planet X' , earth .name ])
76+
77+
2778 def test_demo_basic_node (self ):
2879 out_filename = os .path .join (self .out_folder , "demographics_basic_node.json" )
2980 demog = Demographics .from_template_node ()
@@ -2609,7 +2660,6 @@ def test_SetEquilibriumVitalDynamicsFromWorldBank_EH_06(self):
26092660 self .from_csv_with_country ("Least developed countries: UN classification" , 1980 )
26102661 def test_SetEquilibriumVitalDynamicsFromWorldBank_EH_07 (self ):
26112662 self .from_csv_with_country ("Turks and Caicos Islands" , 1980 )
2612-
26132663 #endregion
26142664if __name__ == '__main__' :
26152665 unittest .main ()
0 commit comments