View | Details | Raw Unified | Return to bug 6584 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jdt/core/tests/builder/GetResourcesTests.java (+1010 lines)
Added Link Here
1
/*******************************************************************************
2
 * Copyright (c) 2006 IBM Corporation and others.
3
 * All rights reserved. This program and the accompanying materials
4
 * are made available under the terms of the Eclipse Public License v1.0
5
 * which accompanies this distribution, and is available at
6
 * http://www.eclipse.org/legal/epl-v10.html
7
 *
8
 * Contributors:
9
 *     IBM Corporation - initial API and implementation
10
 *******************************************************************************/
11
package org.eclipse.jdt.core.tests.builder;
12
13
import java.io.PrintWriter;
14
import java.io.StringWriter;
15
import java.util.Arrays;
16
import java.util.Comparator;
17
18
import junit.framework.Test;
19
import junit.framework.TestSuite;
20
21
import org.eclipse.core.resources.IResource;
22
import org.eclipse.core.runtime.IPath;
23
import org.eclipse.core.runtime.Path;
24
import org.eclipse.jdt.core.ICompilationUnit;
25
import org.eclipse.jdt.core.IJavaProject;
26
import org.eclipse.jdt.core.IPackageFragment;
27
import org.eclipse.jdt.core.IPackageFragmentRoot;
28
import org.eclipse.jdt.core.IRegion;
29
import org.eclipse.jdt.core.JavaCore;
30
import org.eclipse.jdt.core.JavaModelException;
31
import org.eclipse.jdt.core.tests.util.Util;
32
33
/**
34
 * Basic tests of {@link JavaCore#getGeneratedResources(IRegion, boolean)}.
35
 */
36
public class GetResourcesTests extends BuilderTests {
37
38
	private static final Comparator COMPARATOR = new Comparator() {
39
		public int compare(Object o1, Object o2) {
40
			IResource resource1 = (IResource) o1;
41
			IResource resource2 = (IResource) o2;
42
			String path1 = resource1.getFullPath().toString();
43
			String path2 = resource2.getFullPath().toString();
44
			int length1 = path1.length();
45
			int length2 = path2.length();
46
47
			if (length1 != length2) {
48
				return length1 - length2;
49
			}
50
			return path1.toString().compareTo(path2.toString());
51
		}
52
	};
53
54
	public GetResourcesTests(String name) {
55
		super(name);
56
	}
57
58
	public static Test suite() {
59
		if (true)
60
			return buildTestSuite(GetResourcesTests.class);
61
		TestSuite suite = new TestSuite(GetResourcesTests.class.getName());
62
		suite.addTest(new GetResourcesTests("test015"));
63
		return suite;
64
	}
65
66
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
67
	public void test001() throws JavaModelException {
68
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
69
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
70
		fullBuild(projectPath);
71
72
		// remove old package fragment root so that names don't collide
73
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
74
75
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
76
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
77
78
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
79
			"package p1;\n"+ //$NON-NLS-1$
80
			"public class Hello {\n"+ //$NON-NLS-1$
81
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
82
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
83
			"   }\n"+ //$NON-NLS-1$
84
			"}\n" //$NON-NLS-1$
85
		);
86
87
		incrementalBuild(projectPath);
88
89
		IJavaProject project = env.getJavaProject(projectPath);
90
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
91
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
92
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
93
		IRegion region = JavaCore.newRegion();
94
		region.add(compilationUnit);
95
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
96
		assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$
97
		String actualOutput = getResourceOuput(resources);
98
		String expectedOutput = "/Project/bin/p1/Hello.class\n";
99
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
100
		env.removeProject(projectPath);
101
	}
102
103
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
104
	public void test002() throws JavaModelException {
105
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
106
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
107
		fullBuild(projectPath);
108
109
		// remove old package fragment root so that names don't collide
110
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
111
112
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
113
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
114
115
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
116
			"package p1;\n"+ //$NON-NLS-1$
117
			"public class Hello {\n"+ //$NON-NLS-1$
118
			"	Object foo() {\n" + //$NON-NLS-1$
119
			"		return new Object() {};\n" + //$NON-NLS-1$
120
			"	}\n" + //$NON-NLS-1$
121
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
122
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
123
			"   }\n"+ //$NON-NLS-1$
124
			"}\n" //$NON-NLS-1$
125
			);
126
127
		incrementalBuild(projectPath);
128
129
		IJavaProject project = env.getJavaProject(projectPath);
130
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
131
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
132
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
133
134
		IRegion region = JavaCore.newRegion();
135
		region.add(compilationUnit);
136
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
137
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
138
		Arrays.sort(resources, COMPARATOR);
139
		String actualOutput = getResourceOuput(resources);
140
		String expectedOutput =
141
			"/Project/bin/p1/Hello.class\n" +
142
			"/Project/bin/p1/Hello$1.class\n";
143
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
144
		env.removeProject(projectPath);
145
	}
146
147
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
148
	public void test003() throws JavaModelException {
149
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
150
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
151
		fullBuild(projectPath);
152
153
		// remove old package fragment root so that names don't collide
154
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
155
156
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
157
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
158
159
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
160
			"package p1;\n"+ //$NON-NLS-1$
161
			"public class Hello {\n"+ //$NON-NLS-1$
162
			"	Object foo() {\n" +
163
			"		if(false) {\n" + //$NON-NLS-1$
164
			"			return new Object() {};\n" +
165
			"		}\n" +
166
			"		return null;\n" + //$NON-NLS-1$
167
			"	}\n" + //$NON-NLS-1$
168
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
169
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
170
			"   }\n"+ //$NON-NLS-1$
171
			"}\n" //$NON-NLS-1$
172
			);
173
174
		incrementalBuild(projectPath);
175
176
		IJavaProject project = env.getJavaProject(projectPath);
177
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
178
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
179
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
180
		IRegion region = JavaCore.newRegion();
181
		region.add(compilationUnit);
182
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
183
		assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$
184
		String actualOutput = getResourceOuput(resources);
185
		String expectedOutput = "/Project/bin/p1/Hello.class\n";
186
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
187
		env.removeProject(projectPath);
188
	}
189
190
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
191
	public void test004() throws JavaModelException {
192
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
193
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
194
		fullBuild(projectPath);
195
196
		// remove old package fragment root so that names don't collide
197
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
198
199
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
200
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
201
202
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
203
			"package p1;\n"+ //$NON-NLS-1$
204
			"public class Hello {\n"+ //$NON-NLS-1$
205
			"	Object foo() {\n" +
206
			"		return new Object() {};\n" +
207
			"	}\n" + //$NON-NLS-1$
208
			"	Object foo2() {\n" +
209
			"		return new Object() {};\n" +
210
			"	}\n" + //$NON-NLS-1$
211
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
212
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
213
			"   }\n"+ //$NON-NLS-1$
214
			"}\n" //$NON-NLS-1$
215
			);
216
217
		incrementalBuild(projectPath);
218
219
		IJavaProject project = env.getJavaProject(projectPath);
220
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
221
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
222
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
223
		IRegion region = JavaCore.newRegion();
224
		region.add(compilationUnit);
225
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
226
		assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$
227
		Arrays.sort(resources, COMPARATOR);
228
		String actualOutput = getResourceOuput(resources);
229
		String expectedOutput =
230
			"/Project/bin/p1/Hello.class\n" +
231
			"/Project/bin/p1/Hello$1.class\n" +
232
			"/Project/bin/p1/Hello$2.class\n";
233
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
234
		env.removeProject(projectPath);
235
	}
236
237
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
238
	public void test005() throws JavaModelException {
239
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
240
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
241
		fullBuild(projectPath);
242
243
		// remove old package fragment root so that names don't collide
244
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
245
246
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
247
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
248
249
		env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$
250
			"package a;\n" +
251
			"\n" +
252
			"public class Anon {\n" +
253
			"\n" +
254
			"    Anon() {\n" +
255
			"        Object o1 = new Object() {\n" +
256
			"            public String toString() {\n" +
257
			"                return \"1\"; // a/Anon$3 in 1.5,  a/Anon$11 in 1.4\n" +
258
			"            }\n" +
259
			"        };\n" +
260
			"        Object o2 = new Object() {\n" +
261
			"            public String toString() {\n" +
262
			"                return \"2\"; // a/Anon$4 in 1.5,  a/Anon$12 in 1.4\n" +
263
			"            }\n" +
264
			"        };\n" +
265
			"    }\n" +
266
			"\n" +
267
			"    void hello() {\n" +
268
			"        Object o3 = new Object() {\n" +
269
			"            public String toString() {\n" +
270
			"                return \"3\"; // a/Anon$5 in 1.5,  a/Anon$13 in 1.4\n" +
271
			"            }\n" +
272
			"        };\n" +
273
			"        Object o4 = new Object() {\n" +
274
			"            public String toString() {\n" +
275
			"                return \"4\"; // a/Anon$6 in 1.5,  a/Anon$14 in 1.4\n" +
276
			"            }\n" +
277
			"        };\n" +
278
			"    }\n" +
279
			"\n" +
280
			"    static void hello2() {\n" +
281
			"        Object o5 = new Object() {\n" +
282
			"            public String toString() {\n" +
283
			"                return \"5\"; // a/Anon$7 in 1.5,  a/Anon$15 in 1.4\n" +
284
			"            }\n" +
285
			"        };\n" +
286
			"        Object o6 = new Object() {\n" +
287
			"            public String toString() {\n" +
288
			"                return \"6\"; // a/Anon$8 in 1.5,  a/Anon$16 in 1.4\n" +
289
			"            }\n" +
290
			"        };\n" +
291
			"    }\n" +
292
			"\n" +
293
			"    static {\n" +
294
			"        Object o7 = new Object() {\n" +
295
			"            public String toString() {\n" +
296
			"                return \"7\"; // a/Anon$1 in 1.5,  a/Anon$1 in 1.4\n" +
297
			"            }\n" +
298
			"        };\n" +
299
			"\n" +
300
			"        Object o8 = new Object() {\n" +
301
			"            public String toString() {\n" +
302
			"                return \"8\"; // a/Anon$2 in 1.5,  a/Anon$2 in 1.4\n" +
303
			"            }\n" +
304
			"        };\n" +
305
			"    }\n" +
306
			"\n" +
307
			"    static class Anon2 {\n" +
308
			"        // it\'s an object init block which has different prio as constructor!\n" +
309
			"        {\n" +
310
			"            Object o1 = new Object() {\n" +
311
			"                public String toString() {\n" +
312
			"                    return \"1\"; // a/Anon$Anon2$1 in 1.5,  a/Anon$3 in 1.4\n" +
313
			"                }\n" +
314
			"            };\n" +
315
			"            Object o2 = new Object() {\n" +
316
			"                public String toString() {\n" +
317
			"                    return \"2\"; // a/Anon$Anon2$2 in 1.5,  a/Anon$4 in 1.4\n" +
318
			"                }\n" +
319
			"            };\n" +
320
			"        }\n" +
321
			"\n" +
322
			"        void hello() {\n" +
323
			"            Object o3 = new Object() {\n" +
324
			"                public String toString() {\n" +
325
			"                    return \"3\"; // a/Anon$Anon2$5 in 1.5,  a/Anon$7 in 1.4\n" +
326
			"                }\n" +
327
			"            };\n" +
328
			"            Object o4 = new Object() {\n" +
329
			"                public String toString() {\n" +
330
			"                    return \"4\"; // a/Anon$Anon2$6 in 1.5,  a/Anon$8 in 1.4\n" +
331
			"                }\n" +
332
			"            };\n" +
333
			"        }\n" +
334
			"\n" +
335
			"        static void hello2() {\n" +
336
			"            Object o5 = new Object() {\n" +
337
			"                public String toString() {\n" +
338
			"                    return \"5\"; // a/Anon$Anon2$7 in 1.5,  a/Anon$9 in 1.4\n" +
339
			"                }\n" +
340
			"            };\n" +
341
			"            Object o6 = new Object() {\n" +
342
			"                public String toString() {\n" +
343
			"                    return \"6\"; //  a/Anon$Anon2$8 in 1.5,  a/Anon$10 in 1.4\n" +
344
			"                }\n" +
345
			"            };\n" +
346
			"        }\n" +
347
			"\n" +
348
			"        static {\n" +
349
			"            Object o7 = new Object() {\n" +
350
			"                public String toString() {\n" +
351
			"                    return \"7\"; // a/Anon$Anon2$3 in 1.5,  a/Anon$5 in 1.4\n" +
352
			"                }\n" +
353
			"            };\n" +
354
			"\n" +
355
			"            Object o8 = new Object() {\n" +
356
			"                public String toString() {\n" +
357
			"                    return \"8\"; // a/Anon$Anon2$4 in 1.5,  a/Anon$6 in 1.4\n" +
358
			"                }\n" +
359
			"            };\n" +
360
			"        }\n" +
361
			"    }\n" +
362
			"}");
363
364
		incrementalBuild(projectPath);
365
366
		IJavaProject project = env.getJavaProject(projectPath);
367
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
368
		IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$
369
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$
370
		IRegion region = JavaCore.newRegion();
371
		region.add(compilationUnit);
372
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
373
		assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$
374
		Arrays.sort(resources, COMPARATOR);
375
		String actualOutput = getResourceOuput(resources);
376
		String expectedOutput =
377
			"/Project/bin/a/Anon.class\n" +
378
			"/Project/bin/a/Anon$1.class\n" +
379
			"/Project/bin/a/Anon$2.class\n" +
380
			"/Project/bin/a/Anon$3.class\n" +
381
			"/Project/bin/a/Anon$4.class\n" +
382
			"/Project/bin/a/Anon$5.class\n" +
383
			"/Project/bin/a/Anon$6.class\n" +
384
    		"/Project/bin/a/Anon$7.class\n" +
385
    		"/Project/bin/a/Anon$8.class\n" +
386
    		"/Project/bin/a/Anon$9.class\n" +
387
    		"/Project/bin/a/Anon$10.class\n" +
388
			"/Project/bin/a/Anon$11.class\n" +
389
			"/Project/bin/a/Anon$12.class\n" +
390
			"/Project/bin/a/Anon$13.class\n" +
391
			"/Project/bin/a/Anon$14.class\n" +
392
			"/Project/bin/a/Anon$15.class\n" +
393
			"/Project/bin/a/Anon$16.class\n" +
394
			"/Project/bin/a/Anon$Anon2.class\n";
395
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
396
		env.removeProject(projectPath);
397
	}
398
399
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
400
	public void test006() throws JavaModelException {
401
		IPath projectPath = env.addProject("Project", "1.5"); //$NON-NLS-1$
402
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
403
		fullBuild(projectPath);
404
405
		// remove old package fragment root so that names don't collide
406
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
407
408
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
409
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
410
411
		env.addClass(root, "a", "Anon", //$NON-NLS-1$ //$NON-NLS-2$
412
			"package a;\n" +
413
			"\n" +
414
			"public class Anon {\n" +
415
			"\n" +
416
			"    Anon() {\n" +
417
			"        Object o1 = new Object() {\n" +
418
			"            public String toString() {\n" +
419
			"                return \"1\"; // a/Anon$3 in 1.5,  a/Anon$11 in 1.4\n" +
420
			"            }\n" +
421
			"        };\n" +
422
			"        Object o2 = new Object() {\n" +
423
			"            public String toString() {\n" +
424
			"                return \"2\"; // a/Anon$4 in 1.5,  a/Anon$12 in 1.4\n" +
425
			"            }\n" +
426
			"        };\n" +
427
			"    }\n" +
428
			"\n" +
429
			"    void hello() {\n" +
430
			"        Object o3 = new Object() {\n" +
431
			"            public String toString() {\n" +
432
			"                return \"3\"; // a/Anon$5 in 1.5,  a/Anon$13 in 1.4\n" +
433
			"            }\n" +
434
			"        };\n" +
435
			"        Object o4 = new Object() {\n" +
436
			"            public String toString() {\n" +
437
			"                return \"4\"; // a/Anon$6 in 1.5,  a/Anon$14 in 1.4\n" +
438
			"            }\n" +
439
			"        };\n" +
440
			"    }\n" +
441
			"\n" +
442
			"    static void hello2() {\n" +
443
			"        Object o5 = new Object() {\n" +
444
			"            public String toString() {\n" +
445
			"                return \"5\"; // a/Anon$7 in 1.5,  a/Anon$15 in 1.4\n" +
446
			"            }\n" +
447
			"        };\n" +
448
			"        Object o6 = new Object() {\n" +
449
			"            public String toString() {\n" +
450
			"                return \"6\"; // a/Anon$8 in 1.5,  a/Anon$16 in 1.4\n" +
451
			"            }\n" +
452
			"        };\n" +
453
			"    }\n" +
454
			"\n" +
455
			"    static {\n" +
456
			"        Object o7 = new Object() {\n" +
457
			"            public String toString() {\n" +
458
			"                return \"7\"; // a/Anon$1 in 1.5,  a/Anon$1 in 1.4\n" +
459
			"            }\n" +
460
			"        };\n" +
461
			"\n" +
462
			"        Object o8 = new Object() {\n" +
463
			"            public String toString() {\n" +
464
			"                return \"8\"; // a/Anon$2 in 1.5,  a/Anon$2 in 1.4\n" +
465
			"            }\n" +
466
			"        };\n" +
467
			"    }\n" +
468
			"\n" +
469
			"    static class Anon2 {\n" +
470
			"        // it\'s an object init block which has different prio as constructor!\n" +
471
			"        {\n" +
472
			"            Object o1 = new Object() {\n" +
473
			"                public String toString() {\n" +
474
			"                    return \"1\"; // a/Anon$Anon2$1 in 1.5,  a/Anon$3 in 1.4\n" +
475
			"                }\n" +
476
			"            };\n" +
477
			"            Object o2 = new Object() {\n" +
478
			"                public String toString() {\n" +
479
			"                    return \"2\"; // a/Anon$Anon2$2 in 1.5,  a/Anon$4 in 1.4\n" +
480
			"                }\n" +
481
			"            };\n" +
482
			"        }\n" +
483
			"\n" +
484
			"        void hello() {\n" +
485
			"            Object o3 = new Object() {\n" +
486
			"                public String toString() {\n" +
487
			"                    return \"3\"; // a/Anon$Anon2$5 in 1.5,  a/Anon$7 in 1.4\n" +
488
			"                }\n" +
489
			"            };\n" +
490
			"            Object o4 = new Object() {\n" +
491
			"                public String toString() {\n" +
492
			"                    return \"4\"; // a/Anon$Anon2$6 in 1.5,  a/Anon$8 in 1.4\n" +
493
			"                }\n" +
494
			"            };\n" +
495
			"        }\n" +
496
			"\n" +
497
			"        static void hello2() {\n" +
498
			"            Object o5 = new Object() {\n" +
499
			"                public String toString() {\n" +
500
			"                    return \"5\"; // a/Anon$Anon2$7 in 1.5,  a/Anon$9 in 1.4\n" +
501
			"                }\n" +
502
			"            };\n" +
503
			"            Object o6 = new Object() {\n" +
504
			"                public String toString() {\n" +
505
			"                    return \"6\"; //  a/Anon$Anon2$8 in 1.5,  a/Anon$10 in 1.4\n" +
506
			"                }\n" +
507
			"            };\n" +
508
			"        }\n" +
509
			"\n" +
510
			"        static {\n" +
511
			"            Object o7 = new Object() {\n" +
512
			"                public String toString() {\n" +
513
			"                    return \"7\"; // a/Anon$Anon2$3 in 1.5,  a/Anon$5 in 1.4\n" +
514
			"                }\n" +
515
			"            };\n" +
516
			"\n" +
517
			"            Object o8 = new Object() {\n" +
518
			"                public String toString() {\n" +
519
			"                    return \"8\"; // a/Anon$Anon2$4 in 1.5,  a/Anon$6 in 1.4\n" +
520
			"                }\n" +
521
			"            };\n" +
522
			"        }\n" +
523
			"    }\n" +
524
			"}");
525
526
		incrementalBuild(projectPath);
527
528
		IJavaProject project = env.getJavaProject(projectPath);
529
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
530
		IPackageFragment packageFragment = root2.getPackageFragment("a");//$NON-NLS-1$
531
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Anon.java");//$NON-NLS-1$
532
		IRegion region = JavaCore.newRegion();
533
		region.add(compilationUnit);
534
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
535
		assertEquals("Wrong size", 18, resources.length);//$NON-NLS-1$
536
		Arrays.sort(resources, COMPARATOR);
537
		String actualOutput = getResourceOuput(resources);
538
		String expectedOutput =
539
			"/Project/bin/a/Anon.class\n" +
540
			"/Project/bin/a/Anon$1.class\n" +
541
			"/Project/bin/a/Anon$2.class\n" +
542
			"/Project/bin/a/Anon$3.class\n" +
543
			"/Project/bin/a/Anon$4.class\n" +
544
			"/Project/bin/a/Anon$5.class\n" +
545
			"/Project/bin/a/Anon$6.class\n" +
546
			"/Project/bin/a/Anon$7.class\n" +
547
			"/Project/bin/a/Anon$8.class\n" +
548
			"/Project/bin/a/Anon$Anon2.class\n" +
549
			"/Project/bin/a/Anon$Anon2$1.class\n" +
550
			"/Project/bin/a/Anon$Anon2$2.class\n" +
551
			"/Project/bin/a/Anon$Anon2$3.class\n" +
552
			"/Project/bin/a/Anon$Anon2$4.class\n" +
553
			"/Project/bin/a/Anon$Anon2$5.class\n" +
554
			"/Project/bin/a/Anon$Anon2$6.class\n" +
555
			"/Project/bin/a/Anon$Anon2$7.class\n" +
556
			"/Project/bin/a/Anon$Anon2$8.class\n";
557
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
558
		env.removeProject(projectPath);
559
	}
560
561
	private String getResourceOuput(IResource[] resources) {
562
		StringWriter stringWriter = new StringWriter();
563
		PrintWriter writer = new PrintWriter(stringWriter);
564
		for (int i = 0, max = resources.length; i < max; i++) {
565
			writer.println(resources[i].getFullPath().toString());
566
		}
567
		writer.flush();
568
		writer.close();
569
		return Util.convertToIndependantLineDelimiter(String.valueOf(stringWriter));
570
	}
571
572
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
573
	public void test007() throws JavaModelException {
574
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
575
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
576
		fullBuild(projectPath);
577
578
		// remove old package fragment root so that names don't collide
579
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
580
581
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
582
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
583
584
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
585
			"package p1;\n"+ //$NON-NLS-1$
586
			"public class Hello {\n"+ //$NON-NLS-1$
587
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
588
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
589
			"   }\n"+ //$NON-NLS-1$
590
			"}\n" + //$NON-NLS-1$
591
			"class Foo {\n"+ //$NON-NLS-1$
592
			"}\n" //$NON-NLS-1$
593
			);
594
595
		incrementalBuild(projectPath);
596
597
		IJavaProject project = env.getJavaProject(projectPath);
598
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
599
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
600
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
601
		IRegion region = JavaCore.newRegion();
602
		region.add(compilationUnit);
603
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
604
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
605
		env.removeProject(projectPath);
606
	}
607
608
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
609
	public void test008() throws JavaModelException {
610
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
611
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
612
		fullBuild(projectPath);
613
614
		// remove old package fragment root so that names don't collide
615
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
616
617
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
618
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
619
620
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
621
			"package p1;\n"+ //$NON-NLS-1$
622
			"public class Hello {\n" +
623
			"   public class Z {}\n"+ //$NON-NLS-1$
624
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
625
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
626
			"   }\n"+ //$NON-NLS-1$
627
			"}\n" //$NON-NLS-1$
628
		);
629
630
		incrementalBuild(projectPath);
631
632
		IJavaProject project = env.getJavaProject(projectPath);
633
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
634
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
635
		IRegion region = JavaCore.newRegion();
636
		region.add(packageFragment);
637
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
638
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
639
		Arrays.sort(resources, COMPARATOR);
640
		String actualOutput = getResourceOuput(resources);
641
		String expectedOutput =
642
			"/Project/bin/p1/Hello.class\n" +
643
			"/Project/bin/p1/Hello$Z.class\n";
644
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
645
		env.removeProject(projectPath);
646
	}
647
648
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
649
	public void test009() throws JavaModelException {
650
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
651
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
652
		fullBuild(projectPath);
653
654
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
655
656
		env.addClass(projectPath, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
657
			"package p1;\n"+ //$NON-NLS-1$
658
			"public class Hello {\n"+ //$NON-NLS-1$
659
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
660
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
661
			"   }\n"+ //$NON-NLS-1$
662
			"}\n" //$NON-NLS-1$
663
		);
664
665
		incrementalBuild(projectPath);
666
667
		IJavaProject project = env.getJavaProject(projectPath);
668
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getUnderlyingResource());
669
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
670
		ICompilationUnit compilationUnit = packageFragment.getCompilationUnit("Hello.java");//$NON-NLS-1$
671
		IRegion region = JavaCore.newRegion();
672
		region.add(compilationUnit);
673
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
674
		assertEquals("Wrong size", 1, resources.length);//$NON-NLS-1$
675
		String actualOutput = getResourceOuput(resources);
676
		String expectedOutput =
677
			"/Project/bin/p1/Hello.class\n";
678
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
679
		env.removeProject(projectPath);
680
	}
681
682
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
683
	public void test010() throws JavaModelException {
684
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
685
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
686
		fullBuild(projectPath);
687
688
		// remove old package fragment root so that names don't collide
689
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
690
691
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
692
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
693
694
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
695
			"package p1;\n"+ //$NON-NLS-1$
696
			"public class Hello {\n" +
697
			"   public class Z {}\n"+ //$NON-NLS-1$
698
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
699
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
700
			"   }\n"+ //$NON-NLS-1$
701
			"}\n" //$NON-NLS-1$
702
		);
703
704
		env.addFile(root, "p1/Test.txt", "This is a non-java resource");
705
		incrementalBuild(projectPath);
706
707
		IJavaProject project = env.getJavaProject(projectPath);
708
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
709
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
710
		IRegion region = JavaCore.newRegion();
711
		region.add(packageFragment);
712
		IResource[] resources = JavaCore.getGeneratedResources(region, false);
713
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
714
		Arrays.sort(resources, COMPARATOR);
715
		String actualOutput = getResourceOuput(resources);
716
		String expectedOutput =
717
			"/Project/bin/p1/Hello.class\n" +
718
			"/Project/bin/p1/Hello$Z.class\n";
719
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
720
721
		resources = JavaCore.getGeneratedResources(region, true);
722
		assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$
723
		Arrays.sort(resources, COMPARATOR);
724
		actualOutput = getResourceOuput(resources);
725
		expectedOutput =
726
			"/Project/bin/p1/Test.txt\n" +
727
			"/Project/bin/p1/Hello.class\n" +
728
			"/Project/bin/p1/Hello$Z.class\n";
729
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
730
731
		env.removeProject(projectPath);
732
	}
733
734
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
735
	public void test011() throws JavaModelException {
736
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
737
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
738
		fullBuild(projectPath);
739
740
		// remove old package fragment root so that names don't collide
741
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
742
743
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
744
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
745
746
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
747
			"package p1;\n"+ //$NON-NLS-1$
748
			"public class Hello {\n" +
749
			"   public class Z {}\n"+ //$NON-NLS-1$
750
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
751
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
752
			"   }\n"+ //$NON-NLS-1$
753
			"}\n" //$NON-NLS-1$
754
		);
755
756
		incrementalBuild(projectPath);
757
758
		IJavaProject project = env.getJavaProject(projectPath);
759
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
760
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
761
		IRegion region = JavaCore.newRegion();
762
		region.add(packageFragment);
763
		IResource[] resources = JavaCore.getGeneratedResources(region, true);
764
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
765
		Arrays.sort(resources, COMPARATOR);
766
		String actualOutput = getResourceOuput(resources);
767
		String expectedOutput =
768
			"/Project/bin/p1/Hello.class\n" +
769
			"/Project/bin/p1/Hello$Z.class\n";
770
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
771
772
		env.addFile(root, "p1/Test.txt", "This is a non-java resource");
773
		incrementalBuild(projectPath);
774
775
		resources = JavaCore.getGeneratedResources(region, true);
776
		assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$
777
		Arrays.sort(resources, COMPARATOR);
778
		actualOutput = getResourceOuput(resources);
779
		expectedOutput =
780
			"/Project/bin/p1/Test.txt\n" +
781
			"/Project/bin/p1/Hello.class\n" +
782
			"/Project/bin/p1/Hello$Z.class\n";
783
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
784
785
		env.removeProject(projectPath);
786
	}
787
788
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
789
	public void test012() throws JavaModelException {
790
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
791
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
792
		fullBuild(projectPath);
793
794
		// remove old package fragment root so that names don't collide
795
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
796
797
		IPath root = env.addPackageFragmentRoot(projectPath, "src"); //$NON-NLS-1$
798
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
799
800
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
801
			"package p1;\n"+ //$NON-NLS-1$
802
			"public class Hello {\n" +
803
			"   public class Z {}\n"+ //$NON-NLS-1$
804
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
805
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
806
			"   }\n"+ //$NON-NLS-1$
807
			"}\n" //$NON-NLS-1$
808
		);
809
810
		incrementalBuild(projectPath);
811
812
		IJavaProject project = env.getJavaProject(projectPath);
813
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
814
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
815
		IRegion region = JavaCore.newRegion();
816
		region.add(packageFragment);
817
		IResource[] resources = JavaCore.getGeneratedResources(region, true);
818
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
819
		Arrays.sort(resources, COMPARATOR);
820
		String actualOutput = getResourceOuput(resources);
821
		String expectedOutput =
822
			"/Project/bin/p1/Hello.class\n" +
823
			"/Project/bin/p1/Hello$Z.class\n";
824
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
825
826
		env.addFile(root, "p1/Test.txt", "This is a non-java resource");
827
828
		resources = JavaCore.getGeneratedResources(region, true);
829
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
830
		Arrays.sort(resources, COMPARATOR);
831
		actualOutput = getResourceOuput(resources);
832
		expectedOutput =
833
			"/Project/bin/p1/Hello.class\n" +
834
			"/Project/bin/p1/Hello$Z.class\n";
835
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
836
837
		env.removeProject(projectPath);
838
	}
839
840
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
841
	public void test013() throws JavaModelException {
842
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
843
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
844
		fullBuild(projectPath);
845
846
		// remove old package fragment root so that names don't collide
847
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
848
849
		IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$
850
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
851
852
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
853
			"package p1;\n"+ //$NON-NLS-1$
854
			"public class Hello {\n" +
855
			"   public class Z {}\n"+ //$NON-NLS-1$
856
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
857
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
858
			"   }\n"+ //$NON-NLS-1$
859
			"}\n" //$NON-NLS-1$
860
		);
861
862
		incrementalBuild(projectPath);
863
864
		IJavaProject project = env.getJavaProject(projectPath);
865
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
866
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
867
		IRegion region = JavaCore.newRegion();
868
		region.add(packageFragment);
869
		IResource[] resources = JavaCore.getGeneratedResources(region, true);
870
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
871
		Arrays.sort(resources, COMPARATOR);
872
		String actualOutput = getResourceOuput(resources);
873
		String expectedOutput =
874
			"/Project/bin/p1/Hello.class\n" +
875
			"/Project/bin/p1/Hello$Z.class\n";
876
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
877
878
		env.addFile(root, "p1/Test.txt", "This is a non-java resource");
879
		incrementalBuild(projectPath);
880
881
		resources = JavaCore.getGeneratedResources(region, true);
882
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
883
		Arrays.sort(resources, COMPARATOR);
884
		actualOutput = getResourceOuput(resources);
885
		expectedOutput =
886
			"/Project/bin/p1/Hello.class\n" +
887
			"/Project/bin/p1/Hello$Z.class\n";
888
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
889
890
		env.removeProject(projectPath);
891
	}
892
893
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
894
	public void test014() throws JavaModelException {
895
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
896
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
897
		fullBuild(projectPath);
898
899
		// remove old package fragment root so that names don't collide
900
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
901
902
		IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$
903
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
904
905
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
906
			"package p1;\n"+ //$NON-NLS-1$
907
			"public class Hello {\n" +
908
			"   public class Z {}\n"+ //$NON-NLS-1$
909
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
910
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
911
			"   }\n"+ //$NON-NLS-1$
912
			"}\n" //$NON-NLS-1$
913
		);
914
915
		incrementalBuild(projectPath);
916
917
		IJavaProject project = env.getJavaProject(projectPath);
918
		IPackageFragmentRoot root2 = project.getPackageFragmentRoot(project.getProject().getWorkspace().getRoot().findMember(root.makeAbsolute()));
919
		IPackageFragment packageFragment = root2.getPackageFragment("p1");//$NON-NLS-1$
920
		IRegion region = JavaCore.newRegion();
921
		region.add(packageFragment);
922
		IResource[] resources = JavaCore.getGeneratedResources(region, true);
923
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
924
		Arrays.sort(resources, COMPARATOR);
925
		String actualOutput = getResourceOuput(resources);
926
		String expectedOutput =
927
			"/Project/bin/p1/Hello.class\n" +
928
			"/Project/bin/p1/Hello$Z.class\n";
929
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
930
931
		env.addFile(root, "p1/Test.txt", "This is an excluded non-java resource");
932
		env.addFile(root, "p1/Test.log", "This is an included non-java resource");
933
		incrementalBuild(projectPath);
934
935
		resources = JavaCore.getGeneratedResources(region, true);
936
		assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$
937
		Arrays.sort(resources, COMPARATOR);
938
		actualOutput = getResourceOuput(resources);
939
		expectedOutput =
940
			"/Project/bin/p1/Test.log\n" +
941
			"/Project/bin/p1/Hello.class\n" +
942
			"/Project/bin/p1/Hello$Z.class\n";
943
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
944
945
		env.removeProject(projectPath);
946
	}
947
948
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
949
	public void test015() throws JavaModelException {
950
		IPath projectPath = env.addProject("Project"); //$NON-NLS-1$
951
		env.addExternalJars(projectPath, Util.getJavaClassLibs());
952
		fullBuild(projectPath);
953
954
		// remove old package fragment root so that names don't collide
955
		env.removePackageFragmentRoot(projectPath, ""); //$NON-NLS-1$
956
957
		IPath root = env.addPackageFragmentRoot(projectPath, "src", new Path[] {new Path("**/*.txt")}, null); //$NON-NLS-1$
958
		env.setOutputFolder(projectPath, "bin"); //$NON-NLS-1$
959
960
		env.addClass(root, "p1", "Hello", //$NON-NLS-1$ //$NON-NLS-2$
961
			"package p1;\n"+ //$NON-NLS-1$
962
			"public class Hello {\n" +
963
			"   public class Z {}\n"+ //$NON-NLS-1$
964
			"   public static void main(String args[]) {\n"+ //$NON-NLS-1$
965
			"      System.out.println(\"Hello world\");\n"+ //$NON-NLS-1$
966
			"   }\n"+ //$NON-NLS-1$
967
			"}\n" //$NON-NLS-1$
968
		);
969
970
		incrementalBuild(projectPath);
971
972
		IJavaProject project = env.getJavaProject(projectPath);
973
		IRegion region = JavaCore.newRegion();
974
		region.add(project);
975
		IResource[] resources = JavaCore.getGeneratedResources(region, true);
976
		assertEquals("Wrong size", 2, resources.length);//$NON-NLS-1$
977
		Arrays.sort(resources, COMPARATOR);
978
		String actualOutput = getResourceOuput(resources);
979
		String expectedOutput =
980
			"/Project/bin/p1/Hello.class\n" +
981
			"/Project/bin/p1/Hello$Z.class\n";
982
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
983
984
		env.addFile(root, "p1/Test.txt", "This is an excluded non-java resource");
985
		env.addFile(root, "p1/Test.log", "This is an included non-java resource");
986
		incrementalBuild(projectPath);
987
988
		resources = JavaCore.getGeneratedResources(region, true);
989
		assertEquals("Wrong size", 3, resources.length);//$NON-NLS-1$
990
		Arrays.sort(resources, COMPARATOR);
991
		actualOutput = getResourceOuput(resources);
992
		expectedOutput =
993
			"/Project/bin/p1/Test.log\n" +
994
			"/Project/bin/p1/Hello.class\n" +
995
			"/Project/bin/p1/Hello$Z.class\n";
996
		assertEquals("Wrong names", Util.convertToIndependantLineDelimiter(expectedOutput), actualOutput);
997
998
		env.removeProject(projectPath);
999
	}
1000
1001
	//https://bugs.eclipse.org/bugs/show_bug.cgi?id=6584
1002
	public void test016() throws JavaModelException {
1003
		try {
1004
			JavaCore.getGeneratedResources(null, true);
1005
			assertTrue("Region cannot be null", false);
1006
		} catch(IllegalArgumentException e) {
1007
			// ignore: expected exception
1008
		}
1009
	}
1010
}

Return to bug 6584