28 import java.util.ArrayList; |
28 import java.util.ArrayList; |
29 import java.util.List; |
29 import java.util.List; |
30 import java.util.Map; |
30 import java.util.Map; |
31 import javax.tools.JavaFileObject; |
31 import javax.tools.JavaFileObject; |
32 |
32 |
|
33 /** |
|
34 * Base class for Source file attribute tests. Checks expected file name for specified classes in the SourceFile attribute. |
|
35 * To add new tests you should extend the SourceFileTestBase class and invoke {@link #test} for static sources |
|
36 * or {@link #compileAndTest} for generated sources. For more information see corresponding methods. |
|
37 * |
|
38 * @see #test |
|
39 * @see #compileAndTest |
|
40 */ |
33 public class SourceFileTestBase extends TestBase { |
41 public class SourceFileTestBase extends TestBase { |
34 |
42 /** |
|
43 * Checks expected fileName for the specified class in the SourceFile attribute. |
|
44 * |
|
45 * @param classToTest class to check its SourceFile attribute |
|
46 * @param fileName expected name of the file from which the test file is compiled. |
|
47 */ |
35 protected void test(Class<?> classToTest, String fileName) throws Exception { |
48 protected void test(Class<?> classToTest, String fileName) throws Exception { |
36 assertAttributePresent(ClassFile.read(getClassFile(classToTest)), fileName); |
49 assertAttributePresent(ClassFile.read(getClassFile(classToTest)), fileName); |
37 } |
50 } |
38 |
51 |
|
52 /** |
|
53 * Checks expected fileName for the specified class in the SourceFile attribute. |
|
54 * |
|
55 * @param classToTest class name to check its SourceFile attribute |
|
56 * @param fileName expected name of the file from which the test file is compiled. |
|
57 */ |
39 protected void test(String classToTest, String fileName) throws Exception { |
58 protected void test(String classToTest, String fileName) throws Exception { |
40 assertAttributePresent(ClassFile.read(getClassFile(classToTest + ".class")), fileName); |
59 assertAttributePresent(ClassFile.read(getClassFile(classToTest + ".class")), fileName); |
41 } |
60 } |
42 |
61 |
43 /** |
62 /** |
44 * Compile sourceCode and for all "classesToTest" checks SourceFile attribute. |
63 * Compiles sourceCode and for each specified class name checks the SourceFile attribute. |
|
64 * The file name is extracted from source code. |
|
65 * |
|
66 * @param sourceCode source code to compile |
|
67 * @param classesToTest class names to check their SourceFile attribute. |
45 */ |
68 */ |
46 protected void compileAndTest(String sourceCode, String... classesToTest) throws Exception { |
69 protected void compileAndTest(String sourceCode, String... classesToTest) throws Exception { |
47 |
70 |
48 Map<String, ? extends JavaFileObject> classes = compile(sourceCode).getClasses(); |
71 Map<String, ? extends JavaFileObject> classes = compile(sourceCode).getClasses(); |
49 String fileName = ToolBox.getJavaFileNameFromSource(sourceCode); |
72 String fileName = ToolBox.getJavaFileNameFromSource(sourceCode); |