< prev index next >

test/langtools/tools/javac/classfiles/attributes/innerclasses/InnerClassesInLocalClassTest.java

Print this page

 40  */
 41 
 42 import java.util.*;
 43 
 44 public class InnerClassesInLocalClassTest extends InnerClassesTestBase {
 45 
 46     private final static Modifier[] LOCAL_CLASS_MODIFIERS =
 47             new Modifier[]{Modifier.EMPTY, Modifier.ABSTRACT, Modifier.FINAL};
 48     private final static String CLASS_TEMPLATE =
 49             "public %CLASS% OuterClass {\n" +
 50             "%SOURCE%\n" +
 51             "}";
 52 
 53     private final List<Data> innerClassesData;
 54 
 55     public InnerClassesInLocalClassTest() {
 56         innerClassesData = new ArrayList<>();
 57         for (Modifier outerModifier : LOCAL_CLASS_MODIFIERS) {
 58             StringBuilder sb = new StringBuilder();
 59             sb.append(outerModifier.getString()).append(' ');
 60             sb.append("class Local {");
 61             Map<String, Set<String>> class2Flags = new HashMap<>();
 62             for (int i = 0; i < LOCAL_CLASS_MODIFIERS.length; ++i) {
 63                 Modifier innerModifier = LOCAL_CLASS_MODIFIERS[i];
 64                 sb.append(innerModifier.getString()).append(' ')
 65                         .append("class").append(' ')
 66                         .append('A').append(i).append("{}\n");
 67                 class2Flags.put("A" + i, getFlags(innerModifier));
 68             }
 69             sb.append("};");
 70             class2Flags.put("1Local", getFlags(outerModifier));
 71             innerClassesData.add(new Data(sb.toString(), class2Flags));
 72         }
 73     }
 74 
 75     public static void main(String[] args) throws TestFailedException {
 76         InnerClassesTestBase test = new InnerClassesInLocalClassTest();
 77         test.test("OuterClass$1Local", "1Local");
 78     }
 79 
 80     @Override

138                 list.addAll(generate(template,
139                         String.format("%s %s void method() {",
140                                 modifier.getString(),
141                                 otherMod.getString()),
142                         "}"));
143             }
144         }
145         return list;
146     }
147 
148     private List<TestCase> staticAndInstanceInitializer(String template) {
149         List<TestCase> list = new ArrayList<>();
150         for (Modifier modifier : new Modifier[]{Modifier.EMPTY, Modifier.STATIC}) {
151             list.addAll(generate(template, modifier.getString() + "{", "}"));
152         }
153         return list;
154     }
155 
156     private Set<String> getFlags(Modifier modifier) {
157         HashSet<String> set = new HashSet<>();

158         if (modifier != Modifier.EMPTY) {
159             set.add("ACC_" + modifier.getString().toUpperCase());
160         }
161         return set;
162     }
163 
164     /**
165      * Class represents part of sources which is inserted in other code.
166      */
167     private static class Data {
168         public final String sources;
169         public final Map<String, Set<String>> class2Flags;
170 
171         public Data(String sources, Map<String, Set<String>> class2Flags) {
172             this.sources = sources;
173             this.class2Flags = class2Flags;
174         }
175     }
176 }

 40  */
 41 
 42 import java.util.*;
 43 
 44 public class InnerClassesInLocalClassTest extends InnerClassesTestBase {
 45 
 46     private final static Modifier[] LOCAL_CLASS_MODIFIERS =
 47             new Modifier[]{Modifier.EMPTY, Modifier.ABSTRACT, Modifier.FINAL};
 48     private final static String CLASS_TEMPLATE =
 49             "public %CLASS% OuterClass {\n" +
 50             "%SOURCE%\n" +
 51             "}";
 52 
 53     private final List<Data> innerClassesData;
 54 
 55     public InnerClassesInLocalClassTest() {
 56         innerClassesData = new ArrayList<>();
 57         for (Modifier outerModifier : LOCAL_CLASS_MODIFIERS) {
 58             StringBuilder sb = new StringBuilder();
 59             sb.append(outerModifier.getString()).append(' ');
 60             sb.append("class Local { int f; "); // impose identity to make testing predictable.
 61             Map<String, Set<String>> class2Flags = new HashMap<>();
 62             for (int i = 0; i < LOCAL_CLASS_MODIFIERS.length; ++i) {
 63                 Modifier innerModifier = LOCAL_CLASS_MODIFIERS[i];
 64                 sb.append(innerModifier.getString()).append(' ')
 65                         .append("class").append(' ')
 66                         .append('A').append(i).append("{}\n");
 67                 class2Flags.put("A" + i, getFlags(innerModifier));
 68             }
 69             sb.append("};");
 70             class2Flags.put("1Local", getFlags(outerModifier));
 71             innerClassesData.add(new Data(sb.toString(), class2Flags));
 72         }
 73     }
 74 
 75     public static void main(String[] args) throws TestFailedException {
 76         InnerClassesTestBase test = new InnerClassesInLocalClassTest();
 77         test.test("OuterClass$1Local", "1Local");
 78     }
 79 
 80     @Override

138                 list.addAll(generate(template,
139                         String.format("%s %s void method() {",
140                                 modifier.getString(),
141                                 otherMod.getString()),
142                         "}"));
143             }
144         }
145         return list;
146     }
147 
148     private List<TestCase> staticAndInstanceInitializer(String template) {
149         List<TestCase> list = new ArrayList<>();
150         for (Modifier modifier : new Modifier[]{Modifier.EMPTY, Modifier.STATIC}) {
151             list.addAll(generate(template, modifier.getString() + "{", "}"));
152         }
153         return list;
154     }
155 
156     private Set<String> getFlags(Modifier modifier) {
157         HashSet<String> set = new HashSet<>();
158         set.add("ACC_IDENTITY");
159         if (modifier != Modifier.EMPTY) {
160             set.add("ACC_" + modifier.getString().toUpperCase());
161         }
162         return set;
163     }
164 
165     /**
166      * Class represents part of sources which is inserted in other code.
167      */
168     private static class Data {
169         public final String sources;
170         public final Map<String, Set<String>> class2Flags;
171 
172         public Data(String sources, Map<String, Set<String>> class2Flags) {
173             this.sources = sources;
174             this.class2Flags = class2Flags;
175         }
176     }
177 }
< prev index next >