author | jlahoda |
Thu, 09 Oct 2014 10:08:52 +0200 | |
changeset 26993 | 513b2cae81c3 |
parent 26101 | d5dd2ecd2353 |
permissions | -rw-r--r-- |
26101
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
1 |
The description of the tests for the InnerClasses attribute. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
2 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
3 |
InnerClassesTestBase is the base class for tests of inner classes attribute. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
4 |
Each tests extends the base class. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
5 |
The scenario of tests: |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
6 |
1. set possible values of class modifiers, outer/inner class types. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
7 |
2. according to set class modifiers, a test generates sources |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
8 |
and golden data with generateTestCases. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
9 |
3. a test loops through all test cases and checks InnerClasses attribute in method test(). |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
10 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
11 |
Example, possible flags for outer class are Modifier.PRIVATE and Modifier.PUBLIC, |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
12 |
possible flags for inner class are Modifier.EMPTY, outer class type is CLASS |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
13 |
and inner class type is CLASS. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
14 |
At the second step the test generates two test cases: |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
15 |
1. public class A { |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
16 |
public class B { |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
17 |
class C {} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
18 |
} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
19 |
} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
20 |
2. public class A { |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
21 |
private class B { |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
22 |
class C {} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
23 |
} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
24 |
} |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
25 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
26 |
The list of tests. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
27 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
28 |
Test: test if there is not inner class, the InnerClasses attribute |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
29 |
is not generated (NoInnerClasses.java). |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
30 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
31 |
Test: inner classes in anonymous class (InnerClassesInAnonymousClassTest.java). |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
32 |
Possible access flags of the inner class: abstract and final. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
33 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
34 |
Test: inner classes in local class (InnerClassesInLocalClassTest.java). |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
35 |
Locations of local class: static and instance initializer, constructor, method, lambda, |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
36 |
default and static methods of interface. |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
37 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
38 |
Test: test the outer_class_info_index and inner_name_index of |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
39 |
local and anonymous classes (InnerClassesIndexTest.java). |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
40 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
41 |
List of test cases for Inner*InInner*Test: |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
42 |
* InnerClassesInInnerClassTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
43 |
outer flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
44 |
inner flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
45 |
* InnerClassesInInnerEnumTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
46 |
outer flags: all access flags, abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
47 |
inner flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
48 |
* InnerClassesInInnerAnnotationTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
49 |
outer flags: all access flags, abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
50 |
inner flags: all flags, except private and protected |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
51 |
* InnerClassesInInnerInterfaceTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
52 |
outer flags: all access flags, abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
53 |
inner flags: all flags, except private and protected |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
54 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
55 |
* InnerEnumsInInnerClassTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
56 |
outer flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
57 |
inner flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
58 |
* InnerEnumsInInnerEnumTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
59 |
outer flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
60 |
inner flags: all possible flags |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
61 |
* InnerEnumsInInnerAnnotationTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
62 |
outer flags: all access flags, abstract, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
63 |
inner flags: public, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
64 |
* InnerEnumsInInnerInterfaceTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
65 |
outer flags: all access flags, abstract, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
66 |
inner flags: public, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
67 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
68 |
* InnerAnnotationInInnerClassTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
69 |
outer flags: all possible flags, except static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
70 |
inner flags: all access flags, abstract and static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
71 |
* InnerAnnotationInInnerEnumTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
72 |
outer flags: all access flags, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
73 |
inner flags: all access flags, abstract and static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
74 |
* InnerAnnotationInInnerAnnotation |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
75 |
outer flags: all access flags, static and abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
76 |
inner flags: public, abstract, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
77 |
* InnerAnnotationInInnerInterface |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
78 |
outer flags: all access flags, static and abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
79 |
inner flags: public, abstract, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
80 |
|
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
81 |
* InnerInterfaceInInnerClassTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
82 |
outer flags: all possible flags, except static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
83 |
inner flags: all access flags, abstract and static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
84 |
* InnerInterfaceInInnerEnumTest |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
85 |
outer flags: all access flags, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
86 |
inner flags: all access flags, abstract and static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
87 |
* InnerInterfaceInInnerAnnotation |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
88 |
outer flags: all access flags, static and abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
89 |
inner flags: public, abstract, static |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
90 |
* InnerInterfaceInInnerInterface |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
91 |
outer flags: all access flags, static and abstract |
d5dd2ecd2353
8042251: Implement classfile tests for InnerClasses attribute.
aeremeev
parents:
diff
changeset
|
92 |
inner flags: public, abstract, static |