48
49 Lookup lookup = fullPowerLookup.dropLookupMode(PRIVATE);
50 assertTrue(lookup.lookupClass() == lc);
51 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
52
53 lookup = fullPowerLookup.dropLookupMode(PROTECTED);
54 assertTrue(lookup.lookupClass() == lc);
55 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
56
57 lookup = fullPowerLookup.dropLookupMode(PACKAGE);
58 assertTrue(lookup.lookupClass() == lc);
59 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE));
60
61 lookup = fullPowerLookup.dropLookupMode(MODULE);
62 assertTrue(lookup.lookupClass() == lc);
63 assertTrue(lookup.lookupModes() == (PUBLIC));
64
65 lookup = fullPowerLookup.dropLookupMode(PUBLIC);
66 assertTrue(lookup.lookupClass() == lc);
67 assertTrue(lookup.lookupModes() == 0);
68 }
69
70 /**
71 * Starting with a full power Lookup, use dropLookupMode to create new Lookups
72 * with reduced access.
73 */
74 public void testReducingAccess() {
75 Lookup lookup = MethodHandles.lookup();
76 final Class<?> lc = lookup.lookupClass();
77 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PROTECTED|PRIVATE));
78
79 lookup = lookup.dropLookupMode(PROTECTED);
80 assertTrue(lookup.lookupClass() == lc);
81 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
82
83 lookup = lookup.dropLookupMode(PRIVATE);
84 assertTrue(lookup.lookupClass() == lc);
85 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
86
87 lookup = lookup.dropLookupMode(PACKAGE);
91 lookup = lookup.dropLookupMode(MODULE);
92 assertTrue(lookup.lookupClass() == lc);
93 assertTrue(lookup.lookupModes() == PUBLIC);
94
95 lookup = lookup.dropLookupMode(PUBLIC);
96 assertTrue(lookup.lookupClass() == lc);
97 assertTrue(lookup.lookupModes() == 0);
98
99 // repeat with lookup has no access
100 lookup = lookup.dropLookupMode(PUBLIC);
101 assertTrue(lookup.lookupClass() == lc);
102 assertTrue(lookup.lookupModes() == 0);
103 }
104
105 /**
106 * Test dropLookupMode on the public Lookup.
107 */
108 public void testPublicLookup() {
109 final Lookup publicLookup = MethodHandles.publicLookup();
110 final Class<?> lc = publicLookup.lookupClass();
111 assertTrue(publicLookup.lookupModes() == PUBLIC);
112
113 Lookup lookup = publicLookup.dropLookupMode(PRIVATE);
114 assertTrue(lookup.lookupClass() == lc);
115 assertTrue(lookup.lookupModes() == PUBLIC);
116
117 lookup = publicLookup.dropLookupMode(PROTECTED);
118 assertTrue(lookup.lookupClass() == lc);
119 assertTrue(lookup.lookupModes() == PUBLIC);
120
121 lookup = publicLookup.dropLookupMode(PACKAGE);
122 assertTrue(lookup.lookupClass() == lc);
123 assertTrue(lookup.lookupModes() == PUBLIC);
124
125 lookup = publicLookup.dropLookupMode(MODULE);
126 assertTrue(lookup.lookupClass() == lc);
127 assertTrue(lookup.lookupModes() == PUBLIC);
128
129 lookup = publicLookup.dropLookupMode(PUBLIC);
130 assertTrue(lookup.lookupClass() == lc);
131 assertTrue(lookup.lookupModes() == 0);
132 }
133
134 @DataProvider(name = "badInput")
135 public Object[][] badInput() {
136 return new Object[][] {
137 { 0, null },
138 { (PACKAGE|PRIVATE), null }, // two modes
139 { Integer.MAX_VALUE, null },
140 { Integer.MIN_VALUE, null },
141 };
142 }
143
144 /**
145 * Check that IllegalArgumentException is thrown for bad input
146 */
147 @Test(dataProvider = "badInput", expectedExceptions = {IllegalArgumentException.class})
148 public void testBadInput(Integer modeToDrop, Object ignore) {
149 MethodHandles.lookup().dropLookupMode(modeToDrop);
150 }
151
|
48
49 Lookup lookup = fullPowerLookup.dropLookupMode(PRIVATE);
50 assertTrue(lookup.lookupClass() == lc);
51 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
52
53 lookup = fullPowerLookup.dropLookupMode(PROTECTED);
54 assertTrue(lookup.lookupClass() == lc);
55 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
56
57 lookup = fullPowerLookup.dropLookupMode(PACKAGE);
58 assertTrue(lookup.lookupClass() == lc);
59 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE));
60
61 lookup = fullPowerLookup.dropLookupMode(MODULE);
62 assertTrue(lookup.lookupClass() == lc);
63 assertTrue(lookup.lookupModes() == (PUBLIC));
64
65 lookup = fullPowerLookup.dropLookupMode(PUBLIC);
66 assertTrue(lookup.lookupClass() == lc);
67 assertTrue(lookup.lookupModes() == 0);
68
69 lookup = fullPowerLookup.dropLookupMode(UNCONDITIONAL);
70 assertTrue(lookup.lookupClass() == lc);
71 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
72 }
73
74 /**
75 * Starting with a full power Lookup, use dropLookupMode to create new Lookups
76 * with reduced access.
77 */
78 public void testReducingAccess() {
79 Lookup lookup = MethodHandles.lookup();
80 final Class<?> lc = lookup.lookupClass();
81 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PROTECTED|PRIVATE));
82
83 lookup = lookup.dropLookupMode(PROTECTED);
84 assertTrue(lookup.lookupClass() == lc);
85 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE|PRIVATE));
86
87 lookup = lookup.dropLookupMode(PRIVATE);
88 assertTrue(lookup.lookupClass() == lc);
89 assertTrue(lookup.lookupModes() == (PUBLIC|MODULE|PACKAGE));
90
91 lookup = lookup.dropLookupMode(PACKAGE);
95 lookup = lookup.dropLookupMode(MODULE);
96 assertTrue(lookup.lookupClass() == lc);
97 assertTrue(lookup.lookupModes() == PUBLIC);
98
99 lookup = lookup.dropLookupMode(PUBLIC);
100 assertTrue(lookup.lookupClass() == lc);
101 assertTrue(lookup.lookupModes() == 0);
102
103 // repeat with lookup has no access
104 lookup = lookup.dropLookupMode(PUBLIC);
105 assertTrue(lookup.lookupClass() == lc);
106 assertTrue(lookup.lookupModes() == 0);
107 }
108
109 /**
110 * Test dropLookupMode on the public Lookup.
111 */
112 public void testPublicLookup() {
113 final Lookup publicLookup = MethodHandles.publicLookup();
114 final Class<?> lc = publicLookup.lookupClass();
115 assertTrue(publicLookup.lookupModes() == (PUBLIC|UNCONDITIONAL));
116
117 Lookup lookup = publicLookup.dropLookupMode(PRIVATE);
118 assertTrue(lookup.lookupClass() == lc);
119 assertTrue(lookup.lookupModes() == PUBLIC);
120
121 lookup = publicLookup.dropLookupMode(PROTECTED);
122 assertTrue(lookup.lookupClass() == lc);
123 assertTrue(lookup.lookupModes() == PUBLIC);
124
125 lookup = publicLookup.dropLookupMode(PACKAGE);
126 assertTrue(lookup.lookupClass() == lc);
127 assertTrue(lookup.lookupModes() == PUBLIC);
128
129 lookup = publicLookup.dropLookupMode(MODULE);
130 assertTrue(lookup.lookupClass() == lc);
131 assertTrue(lookup.lookupModes() == PUBLIC);
132
133 lookup = publicLookup.dropLookupMode(PUBLIC);
134 assertTrue(lookup.lookupClass() == lc);
135 assertTrue(lookup.lookupModes() == 0);
136
137 lookup = publicLookup.dropLookupMode(UNCONDITIONAL);
138 assertTrue(lookup.lookupClass() == lc);
139 assertTrue(lookup.lookupModes() == PUBLIC);
140 }
141
142 @DataProvider(name = "badInput")
143 public Object[][] badInput() {
144 return new Object[][] {
145 { 0, null },
146 { (PACKAGE|PRIVATE), null }, // two modes
147 { Integer.MAX_VALUE, null },
148 { Integer.MIN_VALUE, null },
149 };
150 }
151
152 /**
153 * Check that IllegalArgumentException is thrown for bad input
154 */
155 @Test(dataProvider = "badInput", expectedExceptions = {IllegalArgumentException.class})
156 public void testBadInput(Integer modeToDrop, Object ignore) {
157 MethodHandles.lookup().dropLookupMode(modeToDrop);
158 }
159
|