def test_process_conditional_variables(self):
     parser = BaseParser("")
     # check variables
     with self.assertRaises(RuntimeError):
         parser.ProcessConditional("!ifdef")
     with self.assertRaises(RuntimeError):
         parser.ProcessConditional("!ifndef")
 def test_process_conditional_non_numerical(self):
     parser = BaseParser("")
     # check non numerical values
     with self.assertRaises(ValueError):
         parser.ProcessConditional("!IF ROCKETSHIP > 50")
     with self.assertRaises(ValueError):
         parser.ProcessConditional("!if 50 < ROCKETSHIPS")
 def test_process_bad_endif(self):
     parser = BaseParser("")
     # check to make sure we can't do a malformed endif
     with self.assertRaises(RuntimeError):
         self.assertTrue(parser.ProcessConditional("!endif test"))
     # try to pop the empty stack
     with self.assertRaises(IndexError):
         self.assertTrue(parser.ProcessConditional("!endif"))
    def test_process_extra_tokens(self):
        parser = BaseParser("")
        # make sure we can't do 5 tokens
        with self.assertRaises(RuntimeError):
            parser.ProcessConditional("!if 3 == 6 ==")

        # make sure we can't do three tokens
        with self.assertRaises(RuntimeError):
            parser.ProcessConditional("!if 3 ==")
 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_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_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_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_garbage_input(self):
     parser = BaseParser("")
     # make sure we fail the garbage input
     conditional_count = len(parser.ConditionalStack)
     self.assertFalse(parser.ProcessConditional("GARBAGE INPUT"))
     # make sure our count didn't change
     self.assertEqual(len(parser.ConditionalStack), conditional_count)
 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)
Beispiel #12
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_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_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_process_conditional_ands_ors(self):
     parser = BaseParser("")
     self.assertTrue(parser.ProcessConditional("!if TRUE == FALSE OR TRUE == TRUE"))
 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_invalid_operators(self):
     parser = BaseParser("")
     # check weird operators
     with self.assertRaises(RuntimeError):
         self.assertTrue(parser.ProcessConditional("!IF 50 <> 50"))
 def test_process_conditional_true_cannot_be_greater_than_hex(self):
     parser = BaseParser("")
     # check != with true and false
     with self.assertRaises(ValueError):
         parser.ProcessConditional("!IF 0x7 >= TRUE")
 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"))