def test_replace_local_variables(self):
     parser = BaseParser("")
     variables = {
         "FIFTY": 50,
         "TEST": "TEST",
         "LOWER NUMBER": 40,
         "HEX": "0x20",
         "BOOLEAN": "TRUE",
         "BOOLEAN FALSE": "FALSE",
     }
     parser.LocalVars = variables
     # check to make sure we don't modify if we don't have variables
     no_var = "this has no variables"
     no_var_result = parser.ReplaceVariables(no_var)
     self.assertEqual(no_var_result, no_var)
     # make sure we don't fail when we have unknown variables
     na_var = "unknown var $(UNKNOWN)"
     na_var_after = "unknown var $(UNKNOWN)"
     na_var_result = parser.ReplaceVariables(na_var)
     self.assertEqual(na_var_result, na_var_after)
     # make sure we're good for all the variables
     variable_str = "var $(%s)"
     for variable_key in variables:
         line = variable_str % variable_key
         result = parser.ReplaceVariables(line)
         val = "var " + str(variables[variable_key])
         self.assertEqual(result, val)
    def test_replace_macro_elseif(self):
        parser = BaseParser("")
        parser.SetInputVars({"name": "matt"})
        line = "!elseif $(name)"
        self.assertEqual(parser.ReplaceVariables(line), "!elseif matt")

        line = "!ELSEIF $(Invalid_Token)"
        self.assertEqual(parser.ReplaceVariables(line), "!ELSEIF 0")
    def test_replace_macro_ifndef(self):
        parser = BaseParser("")
        parser.SetInputVars({"name": "sean"})
        line = "!IfNDef name"
        self.assertEqual(parser.ReplaceVariables(line), "!IfNDef sean")

        line = "!ifndef Invalid_Token"
        self.assertEqual(parser.ReplaceVariables(line), "!ifndef 0")

        line = "!IFnDEF name"
        self.assertEqual(parser.ReplaceVariables(line), "!IFnDEF sean")
    def test_replace_macro_ifdef_dollarsign(self):
        parser = BaseParser("")
        parser.SetInputVars({"name": "sean"})
        line = "!ifdef $(name)"
        self.assertEqual(parser.ReplaceVariables(line), "!ifdef sean")

        line = "!ifdef $(Invalid_Token)"
        self.assertEqual(parser.ReplaceVariables(line), "!ifdef 0")

        line = "!IFDEF $(name)"
        self.assertEqual(parser.ReplaceVariables(line), "!IFDEF sean")
 def test_replace_macro_without_resolution(self):
     parser = BaseParser("")
     parser.SetInputVars({
         "name": "sean"
     })
     line = "!if $(Unknown_Token)!"
     self.assertEqual(parser.ReplaceVariables(line), "!if 0!")
 def test_replace_macro_using_dollarsign(self):
     parser = BaseParser("")
     parser.SetInputVars({
         "name": "sean"
     })
     line = "Hello $(name)!"
     self.assertEqual(parser.ReplaceVariables(line), "Hello sean!")
 def test_replace_boolean_constants(self):
     parser = BaseParser("")
     parser.SetInputVars({
         "true": "True",
         "false": "False",
         "b_true": True,
         "b_false": False
     })
     line = "$(true)"
     self.assertEqual(parser.ReplaceVariables(line), "TRUE")
     line = "$(false)"
     self.assertEqual(parser.ReplaceVariables(line), "FALSE")
     line = "$(b_true)"
     self.assertEqual(parser.ReplaceVariables(line), "TRUE")
     line = "$(b_false)"
     self.assertEqual(parser.ReplaceVariables(line), "FALSE")
 def test_replace_macro_local_var_priority(self):
     parser = BaseParser("")
     parser.SetInputVars({
         "name": "sean"
     })
     parser.LocalVars["name"] = "fred"
     line = "Hello $(name)!"
     self.assertEqual(parser.ReplaceVariables(line), "Hello fred!")