def test_process_conditional_not_equals_true_false(self): parser = BaseParser("") # check != with true and false self.assertTrue(parser.ProcessConditional("!IF RACECAR != RACECAR")) self.assertFalse(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF")) self.assertTrue(parser.ProcessConditional("!IF false != FALSE")) self.assertFalse(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF"))
def test_process_conditional_single_boolean(self): parser = BaseParser("") # check that nothing is on the stack self.assertEqual(len(parser.ConditionalStack), 0) # check that we're in active code self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF TRUE")) # make sure we've added some to the stack - should we even be checking this? self.assertEqual(len(parser.ConditionalStack), 1) self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF FALSE")) self.assertFalse(parser.InActiveCode()) # make sure if pass in a true thing we aren't back in active self.assertTrue(parser.ProcessConditional("!IF TRUE")) self.assertFalse(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF")) self.assertFalse(parser.InActiveCode()) # pop off the false statement and make sure we're back to active code self.assertTrue(parser.ProcessConditional("!EnDiF")) self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF")) self.assertTrue(parser.InActiveCode()) # check that nothing is on the stack self.assertEqual(len(parser.ConditionalStack), 0) # lower case false self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF false")) self.assertFalse(parser.InActiveCode())
def test_process_conditional_greater_than(self): parser = BaseParser("") self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF 30 > 50")) self.assertFalse(parser.InActiveCode()) parser.ProcessConditional("!endif") self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF 30 > 30")) self.assertFalse(parser.InActiveCode()) parser.ProcessConditional("!endif") self.assertTrue(parser.ProcessConditional("!IF 50 > 30")) self.assertTrue(parser.InActiveCode())
def test_emulator_conditional_or_double_in(self): parser = BaseParser("") parser.SetInputVars({"ARCH": "X64"}) self.assertTrue(parser.ProcessConditional( '!if "IA32" in $(ARCH) || "X64" in $(ARCH)')) self.assertTrue(parser.InActiveCode()) parser.ResetParserState() parser.SetInputVars({"ARCH": "IA32"}) self.assertTrue(parser.ProcessConditional( '!if "IA32" in $(ARCH) || "X64" in $(ARCH)')) self.assertTrue(parser.InActiveCode()) parser.ResetParserState()
def test_process_conditional_hex_number(self): parser = BaseParser("") # check that a hex number doesn't equal itself self.assertTrue(parser.ProcessConditional("!IF 0x30 == 30")) self.assertFalse(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!endif")) # Check that two hex doesn't equal each other self.assertTrue(parser.ProcessConditional("!IF 0x20 == 0x30")) self.assertFalse(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!endif")) # check that hex equals decimal self.assertTrue(parser.ProcessConditional("!IF 0x20 == 32")) self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!endif"))
def test_conditional_ifndef(self): parser = BaseParser("") # simple confirmation of expected behavior # don't need to test VariableReplacement # that is done in the tests replace methods self.assertTrue(parser.InActiveCode()) parser.ProcessConditional("!ifndef 0") self.assertTrue(parser.InActiveCode()) parser.PopConditional() self.assertTrue(parser.InActiveCode()) parser.ProcessConditional("!ifndef blahblah") self.assertFalse(parser.InActiveCode()) parser.PopConditional()
def test_process_conditional_reset(self): parser = BaseParser("") # test reset self.assertTrue(parser.ProcessConditional("!IF FALSE")) parser.ResetParserState() self.assertTrue(parser.InActiveCode()) self.assertEqual(len(parser.ConditionalStack), 0)
def test_emulator_conditional_not_in(self): parser = BaseParser("") parser.SetInputVars({"TOOL_CHAIN_TAG": "VS2019"}) self.assertTrue( parser.ProcessConditional('!if "XCODE5" not in $(TOOL_CHAIN_TAG)')) self.assertTrue(parser.InActiveCode()) parser.ResetParserState()
def test_process_in_conditional(self): parser = BaseParser("") parser.SetInputVars({"TOOL_CHAIN_TAG": "GCC5_TEST"}) self.assertTrue(parser.ProcessConditional( '!if ("GCC49" in $(TOOL_CHAIN_TAG)) OR ("GCC5" in $(TOOL_CHAIN_TAG))')) self.assertTrue(parser.InActiveCode()) parser.ResetParserState() parser.SetInputVars({"TOOL_CHAIN_TAG": "TESTGCC49"}) self.assertTrue(parser.ProcessConditional( '!if ("GCC49" in $(TOOL_CHAIN_TAG)) OR ("GCC5" in $(TOOL_CHAIN_TAG))')) self.assertTrue(parser.InActiveCode()) parser.ResetParserState() # Don't give it a tool chain tag that isn't in the things we're searching for parser.SetInputVars({"TOOL_CHAIN_TAG": "NOTFOUND"}) self.assertTrue(parser.ProcessConditional( '!if ("GCC49" in $(TOOL_CHAIN_TAG)) OR ("GCC5" in $(TOOL_CHAIN_TAG))')) self.assertFalse(parser.InActiveCode())
def test_process_conditional_less_than(self): parser = BaseParser("") self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF 70 < 50")) self.assertFalse(parser.InActiveCode()) parser.ProcessConditional("!endif") self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF 70 < 70")) self.assertFalse(parser.InActiveCode()) parser.ProcessConditional("!endif") self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!IF 50 < 70")) self.assertTrue(parser.InActiveCode())
def test_process_else(self): parser = BaseParser("") # check to make sure we can't do a malformed endif self.assertTrue(parser.ProcessConditional("!if TRUE")) self.assertTrue(parser.ProcessConditional("!else")) self.assertFalse(parser.InActiveCode())
def test_process_conditional_true_equals_one(self): parser = BaseParser("") # check != with true and false self.assertTrue(parser.ProcessConditional("!IF TRUE == 1")) self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF"))
def test_process_conditional_false_equals_zero(self): parser = BaseParser("") self.assertTrue(parser.ProcessConditional("!IF FALSE == 0")) self.assertTrue(parser.InActiveCode()) self.assertTrue(parser.ProcessConditional("!EnDiF"))