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_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_emulator_conditional_parens_order(self): ''' Makes sure the parenthesis affect the order of expressions ''' parser = BaseParser("") self.assertFalse( parser.EvaluateConditional('!if TRUE OR FALSE AND FALSE')) self.assertTrue( parser.EvaluateConditional('!if TRUE OR (FALSE AND FALSE)')) parser.ResetParserState()
def test_emulator_conditional_not_it_all(self): ''' Makes sure the parenthesis affect the order of expressions ''' parser = BaseParser("") self.assertTrue(parser.EvaluateConditional('!if NOT FALSE OR FALSE')) self.assertFalse(parser.EvaluateConditional('!if NOT TRUE OR FALSE')) # check to make sure it works with parenthesis self.assertFalse(parser.EvaluateConditional('!if NOT(TRUE)')) self.assertTrue(parser.EvaluateConditional('!if NOT(FALSE)')) # make sure it works with the bang symbol self.assertFalse(parser.EvaluateConditional('!if !(TRUE)')) self.assertTrue(parser.EvaluateConditional('!if !(FALSE)')) parser.ResetParserState()