View Javadoc

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);  // because an override was added first
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");   // ex2 = $(ex1) = $(a) = c
168 		assertEquals("c", value);
169 	}
170 	
171 	public void testComplexExpansion2() {
172 		String value = manager.getValue("ex3");   // ex3 = ex2 = $(ex1) = $(a) = c
173 		assertEquals("c", value);
174 	}
175 	
176 	/*
177 	public void testComplexExpansion3() {
178 		manager.addNew(new Variable("lala", "$(lele)"));
179 		manager.addNew(new Variable("lele", "//$//(lele//)"));
180 		String value = manager.getValue("lala");   
181 		assertEquals("(lele)", value);
182 	}
183 	*/
184 	
185 	public void testLoop() {
186 		try {
187 			String value = manager.getValue("loop");   // loop = $(loop)
188 			fail("Must throw an error!");			
189 		} catch (Error ex) {
190 			assertTrue(true);  // ok
191 		}
192 	}
193 	
194 	public void testBuiltInVars() {
195 		String value = manager.getValue("CXX");   // loop = $(loop)
196 		assertEquals("g++", value);
197 		value = manager.getValue("CPP");   // loop = $(loop)
198 		assertEquals("cc -g", value);
199 	}
200 	
201 }