1 /***
2 * Copyright (C) 2009, Gajo Csaba
3 *
4 * This file is free software; the author gives unlimited
5 * permission to copy and/or distribute it, with or without
6 * modifications, as long as this notice is preserved.
7 *
8 * For more information read the LICENSE file that came
9 * with this distribution.
10 */
11 package net.sourceforge.makefileparser.test.objects;
12
13 import net.sourceforge.makefileparser.managers.VariableManager;
14 import net.sourceforge.makefileparser.objects.Variable;
15 import junit.framework.TestCase;
16
17 /***
18 * @author cgajo
19 */
20 public class VariableTest extends TestCase {
21
22 private Variable var;
23 private VariableManager manager = new VariableManager();
24
25 protected void setUp() throws Exception {
26 super.setUp();
27 manager.addNew(new Variable("x", "y"));
28 manager.addNew(new Variable("y", "z"));
29 manager.addNew(new Variable("a", "c"));
30 manager.addNew(new Variable("ccc", "ddd"));
31
32 manager.addNew(new Variable("ex1", "$(a)"));
33 manager.addNew(new Variable("ex2", "$(ex1)"));
34 manager.addNew(new Variable("ex3", "$(ex2)"));
35 manager.addNew(new Variable("loop", "$(loop)"));
36 }
37
38 public void testExpansion1() {
39 var = new Variable("aaa", "bbb$(x)bbb");
40 var.expand(manager);
41 assertEquals("bbbybbb", var.getValue());
42 }
43
44 public void testExpansion2() {
45 var = new Variable("aaa", "bbbbbb$(x)");
46 var.expand(manager);
47 assertEquals("bbbbbby", var.getValue());
48 }
49
50
51 public void testExpansion3() {
52 var = new Variable("aaa", "$(x)bbbbbb");
53 var.expand(manager);
54 assertEquals("ybbbbbb", var.getValue());
55 }
56
57 public void testExpansion4() {
58 var = new Variable("aaa", "bbb$(x)bbb");
59 var.expand(manager);
60 assertEquals("bbbybbb", var.getValue());
61 }
62
63 public void testExpansion5() {
64 var = new Variable("aaa", "bbb$($(x))bbb");
65 var.expand(manager);
66 assertEquals("bbbzbbb", var.getValue());
67 }
68
69 public void testExpansion6() {
70 var = new Variable("aaa", "$(x)");
71 var.expand(manager);
72 assertEquals("y", var.getValue());
73 }
74
75 public void testExpansion7() {
76 var = new Variable("aaa", "$($(x))");
77 var.expand(manager);
78 assertEquals("z", var.getValue());
79 }
80
81 public void testExpansion8() {
82 var = new Variable("aaa", "$($(a)$(a)$(a))");
83 var.expand(manager);
84 assertEquals("ddd", var.getValue());
85 }
86
87 public void testEscapeChar1() {
88 var = new Variable("aaa", "a//$//(aaa//)aaa");
89 var.expand(manager);
90 assertEquals("a////(aaa//)aaa", var.getValue());
91 }
92
93 public void testEscapeChar2() {
94 var = new Variable("aaa", "aaa$aaa");
95 var.expand(manager);
96 assertEquals("aaaaaa", var.getValue());
97 }
98
99 public void testEscapeChar3() {
100 var = new Variable("aaa", "aaa$$aaa");
101 var.expand(manager);
102 assertEquals("aaa$aaa", var.getValue());
103 }
104
105 public void testEscapeChar4() {
106 var = new Variable("aaa", "//$a//$//(aaa//)aaa//(");
107 var.expand(manager);
108 assertEquals("//a////(aaa//)aaa//(", var.getValue());
109 }
110
111 public void testEscapeChar5() {
112 var = new Variable("aaa", "$aaa$aaa$");
113 var.expand(manager);
114 assertEquals("aaaaaa", var.getValue());
115 }
116
117 public void testEscapeChar6() {
118 var = new Variable("aaa", "$$aaa$$aaa$$");
119 var.expand(manager);
120 assertEquals("$aaa$aaa$", var.getValue());
121 }
122
123 public void testEscapeChar7() {
124 var = new Variable("aaa", "$$a//$//(aaa//)aaa$");
125 var.expand(manager);
126 assertEquals("$a////(aaa//)aaa", var.getValue());
127 }
128
129 public void testEscapeChar8() {
130 var = new Variable("aaa", "aaa$aaa////////");
131 var.expand(manager);
132 assertEquals("aaaaaa////////", var.getValue());
133 }
134
135 public void testEscapeChar9() {
136 var = new Variable("aaa", "aaa$$aaa$$////$");
137 var.expand(manager);
138 assertEquals("aaa$aaa$////", var.getValue());
139 }
140
141 public void testOverride1() {
142 var = new Variable("x", "zzz", false, false);
143 boolean result = manager.addNew(var);
144 assertTrue(result);
145 }
146
147 public void testOverride2() {
148 var = new Variable("x", "zzz", true, false);
149 boolean result = manager.addNew(var);
150 assertTrue(result);
151 }
152
153 public void testOverride3() {
154 manager.addNew(new Variable("x", "zzz", true, false));
155 var = new Variable("x", "hhh", false, true);
156 boolean result = manager.addNew(var);
157 assertFalse(result);
158 }
159
160 public void testOverride4() {
161 var = new Variable("x", "y", true, true);
162 boolean result = manager.addNew(var);
163 assertTrue(result);
164 }
165
166 public void testComplexExpansion1() {
167 String value = manager.getValue("ex2");
168 assertEquals("c", value);
169 }
170
171 public void testComplexExpansion2() {
172 String value = manager.getValue("ex3");
173 assertEquals("c", value);
174 }
175
176
177
178
179
180
181
182
183
184
185 public void testLoop() {
186 try {
187 String value = manager.getValue("loop");
188 fail("Must throw an error!");
189 } catch (Error ex) {
190 assertTrue(true);
191 }
192 }
193
194 public void testBuiltInVars() {
195 String value = manager.getValue("CXX");
196 assertEquals("g++", value);
197 value = manager.getValue("CPP");
198 assertEquals("cc -g", value);
199 }
200
201 }