def test_create_strategy(self,get_g): from lxml import etree xml = """ <strategy name="decrease" region="a"> <description>Test to check variable management works</description> <treatments> <t> <affectVariable var="dist"> <decrease>1</decrease> </affectVariable> </t> </treatments> </strategy> """ tree = etree.parse(StringIO(xml)) strategy_node = tree.getroot() mock_model= Mock() s = ManagementStrategy(strategy_node,mock_model) self.assertEqual(s.grass_i, get_g.return_value) a= Mock() s.set_instance(a) self.assertEqual(s.instance, a) self.assertRaises(NotImplementedError,s.init_strategy, mock_model) self.assertRaises(NotImplementedError,ManagementStrategy,None,mock_model) mock_model.get_regions.return_value = ['r1','r2'] s.set_region('r2') self.assertEqual(s.node.attrib['region'],'r2') s.set_description("test description") self.assertEqual(s.get_description(),"test description") s.set_name("meatball") self.assertEqual(s.get_name(),"meatball") mock_model.get_period.return_value = (0,10) self.assertEqual(len(s.get_treatments_for_param("dist",0)),1) self.assertEqual(len(s.get_treatments_for_param("meatball",0)),0) t = s.get_treatments()[0] self.assertEqual(t.get_treatment_area_map(None), None) self.assertEqual(t.get_ls(), None)
def test_s_with_delay(self,get_g): from lxml import etree xml = """ <strategy name="decrease" region="a"> <delay>10</delay> <description>Test to check variable management works</description> <treatments> <t> <affectVariable var="dist"> <decrease>1</decrease> </affectVariable> </t> </treatments> </strategy> """ tree = etree.parse(StringIO(xml)) strategy_node = tree.getroot() mock_model= Mock() s = ManagementStrategy(strategy_node,mock_model) self.assertEqual(s.get_delay(), 10) s.set_delay(200) self.assertEqual(s.get_delay(), 200) desc_node = s.node.xpath("delay") desc_node[0].text = "string_test" self.assertRaises(ValueError,s.get_delay) # test 0 delay with no element s.node.remove(desc_node[0]) self.assertEqual(s.get_delay(), 0) # test adding a delay node s.set_delay(2) self.assertEqual(s.get_delay(), 2) mock_model.get_period.return_value = (0,10) self.assertEqual(len(s.get_treatments_for_param("dist",0)),0) self.assertEqual(len(s.get_treatments_for_param("dist",3)),1)
def test_s_with_ls(self,get_g): from lxml import etree xml = """ <strategy name="area_or" region="a"> <description>Test to check map area combined with OR works.</description> <treatments> <t> <area ls="all" combine="or"> <mapcalc>if(!isnull(START_MAP),1,null())</mapcalc> <mapcalc>if(x()>3,1,null())</mapcalc> </area> <event ls="all" name="r.mdig.survival"> <param name="survival"> <value>80</value> </param> <!-- Survival needs seed parameter, otherwise it inits from time and just removes the same cells --> <param name="seed"> <seed/> </param> </event> </t> </treatments> </strategy> """ tree = etree.parse(StringIO(xml)) strategy_node = tree.getroot() mock_model= Mock() s = ManagementStrategy(strategy_node,mock_model) mock_model.get_period.return_value = (0,10) self.assertEqual(len(s.get_treatments_for_ls("all",0)),1) self.assertEqual(len(s.get_treatments_for_ls("kibble",0)),0) s.set_delay(2) self.assertEqual(len(s.get_treatments_for_ls("all",0)),0) self.assertEqual(len(s.get_treatments_for_ls("all",3)),1)