def test_target_specific(self):
        foo = StringExpansion('FOO', None)
        bar = StringExpansion('BAR', None)

        v = SetVariable(foo, '+=', 'value', None, bar)

        self.assertEqual(v.to_source(), 'BAR: FOO += value')
    def test_simple(self):
        name = StringExpansion('foo', None)
        c = StringExpansion('%.c', None)
        o = StringExpansion('%.o', None)
        s = SubstitutionRef(None, name, c, o)

        self.assertEqual(s.to_source(), '$(foo:%.c=%.o)')
    def test_wordlist(self):
        e1 = StringExpansion('foo', None)
        e2 = StringExpansion('bar ', None)
        e3 = StringExpansion(' baz', None)

        w = WordlistFunction(None)
        w.append(e1)
        w.append(e2)
        w.append(e3)

        self.assertEqual(w.to_source(), '$(wordlist foo,bar , baz)')
    def test_include(self):
        e = StringExpansion('rules.mk', None)
        i = Include(e, True, False)
        self.assertEqual(i.to_source(), 'include rules.mk')

        i = Include(e, False, False)
        self.assertEqual(i.to_source(), '-include rules.mk')
    def test_multiline(self):
        s = 'hello\nworld'
        foo = StringExpansion('FOO', None)

        v = SetVariable(foo, '=', s, None, None)

        self.assertEqual(v.to_source(), 'define FOO\nhello\nworld\nendef')
    def test_basename(self):
        e1 = StringExpansion('foo', None)
        v = VariableRef(None, e1)
        e2 = Expansion(None)
        e2.appendfunc(v)

        b = BasenameFunction(None)
        b.append(e2)

        self.assertEqual(b.to_source(), '$(basename $(foo))')
    def test_escaping(self):
        e = StringExpansion('$var', None)
        self.assertEqual(e.to_source(escape_variables=True), '$$var')

        e = StringExpansion('this is # not a comment', None)
        self.assertEqual(e.to_source(escape_comments=True),
                         'this is \# not a comment')
    def test_empty(self):
        e = StringExpansion('', None)
        self.assertEqual(e.to_source(), '')

        e = StringExpansion(' ', None)
        self.assertEqual(e.to_source(), ' ')
    def test_simple(self):
        e = StringExpansion('foobar', None)
        self.assertEqual(e.to_source(), 'foobar')

        e = StringExpansion('$var', None)
        self.assertEqual(e.to_source(), '$var')
    def test_special_variable(self):
        e = StringExpansion('<', None)
        v = VariableRef(None, e)

        self.assertEqual(v.to_source(), '$<')
    def test_string_name(self):
        e = StringExpansion('foo', None)
        v = VariableRef(None, e)

        self.assertEqual(v.to_source(), '$(foo)')
 def test_simple(self):
     v = SetVariable(StringExpansion('foo', None), '=', 'bar', None, None)
     self.assertEqual(v.to_source(), 'foo = bar')