@@ -39,6 +39,12 @@ public final class TestFlagSet extends AbstractHadoopTestBase {
3939
4040 private static final String KEY = "key" ;
4141
42+ public static final String CAPABILITY_B = KEY + ".b" ;
43+
44+ public static final String CAPABILITY_C = KEY + ".c" ;
45+
46+ public static final String CAPABILITY_A = KEY + ".a" ;
47+
4248 private static final String KEYDOT = KEY + "." ;
4349
4450 /**
@@ -48,7 +54,7 @@ public final class TestFlagSet extends AbstractHadoopTestBase {
4854 createFlagSet (SimpleEnum .class , KEYDOT , noneOf (SimpleEnum .class ));
4955
5056 /**
51- * Simple Enums.
57+ * Simple Enums for the tests .
5258 */
5359 private enum SimpleEnum { a , b , c }
5460
@@ -146,9 +152,10 @@ public void assertConfigurationStringMatches(final String expected) {
146152 public void testConfEntry () {
147153 flagSet = flagSetFromConfig ("a\t ,\n c " , true );
148154 assertFlagSetMatches (flagSet , SimpleEnum .a , SimpleEnum .c );
149- assertHasCapability (KEY + ".a" );
150- assertHasCapability (KEY + ".c" );
151- assertLacksCapability (KEY + ".b" );
155+ assertHasCapability (CAPABILITY_A );
156+ assertHasCapability (CAPABILITY_C );
157+ assertLacksCapability (CAPABILITY_B );
158+ assertPathCapabilitiesMatch (flagSet , CAPABILITY_A , CAPABILITY_C );
152159 }
153160
154161 /**
@@ -160,8 +167,7 @@ public void testConfEntry() {
160167 private static FlagSet <SimpleEnum > flagSetFromConfig (final String string ,
161168 final boolean ignoreUnknown ) {
162169 final Configuration conf = mkConf (string );
163- final FlagSet <SimpleEnum > fs = buildFlagSet (SimpleEnum .class , conf , KEY , ignoreUnknown );
164- return fs ;
170+ return buildFlagSet (SimpleEnum .class , conf , KEY , ignoreUnknown );
165171 }
166172
167173 /**
@@ -172,8 +178,8 @@ private static FlagSet<SimpleEnum> flagSetFromConfig(final String string,
172178 public void testConfEntryWithUnknownIgnored () {
173179 flagSet = flagSetFromConfig ("a, unknown" , true );
174180 assertFlagSetMatches (flagSet , SimpleEnum .a );
175- assertHasCapability (KEY + ".a" );
176- assertLacksCapability (KEY + ".b" );
181+ assertHasCapability (CAPABILITY_A );
182+ assertLacksCapability (CAPABILITY_B );
177183 }
178184
179185 /**
@@ -184,7 +190,7 @@ public void testConfEntryWithUnknownIgnored() {
184190 public void testDuplicateConfEntry () {
185191 flagSet = flagSetFromConfig ("a,\t a,\n a\" " , true );
186192 assertFlagSetMatches (flagSet , SimpleEnum .a );
187- assertHasCapability (KEY + ".a" );
193+ assertHasCapability (CAPABILITY_A );
188194 }
189195
190196 /**
@@ -231,16 +237,21 @@ private void assertLacksCapability(final String capability) {
231237 * Test the * binding.
232238 */
233239 @ Test
234- public void testFlagSetStarEntry () {
240+ public void testStarEntry () {
235241 flagSet = flagSetFromConfig ("*" , false );
236242 assertFlags (SimpleEnum .a , SimpleEnum .b , SimpleEnum .c );
237- assertHasCapability (KEY + ".a" );
238- assertHasCapability (KEY + ".b" );
243+ assertHasCapability (CAPABILITY_A );
244+ assertHasCapability (CAPABILITY_B );
245+ Assertions .assertThat (flagSet .pathCapabilities ())
246+ .describedAs ("path capabilities of %s" , flagSet )
247+ .containsExactlyInAnyOrder (CAPABILITY_A , CAPABILITY_B , CAPABILITY_C );
239248 }
240249
241250 @ Test
242251 public void testRoundTrip () {
243- final FlagSet <SimpleEnum > s1 = createFlagSet (SimpleEnum .class , KEYDOT , allOf (SimpleEnum .class ));
252+ final FlagSet <SimpleEnum > s1 = createFlagSet (SimpleEnum .class ,
253+ KEYDOT ,
254+ allOf (SimpleEnum .class ));
244255 final FlagSet <SimpleEnum > s2 = roundTrip (s1 );
245256 Assertions .assertThat (s1 .flags ()).isEqualTo (s2 .flags ());
246257 assertFlagSetMatches (s2 , SimpleEnum .a , SimpleEnum .b , SimpleEnum .c );
@@ -257,6 +268,9 @@ public void testEmptyRoundTrip() {
257268 .describedAs ("empty flagset %s" , s2 )
258269 .isTrue ();
259270 assertFlagSetMatches (flagSet );
271+ Assertions .assertThat (flagSet .pathCapabilities ())
272+ .describedAs ("path capabilities of %s" , flagSet )
273+ .isEmpty ();
260274 }
261275
262276 @ Test
@@ -323,8 +337,8 @@ private void assertEnabled(final SimpleEnum flag) {
323337 * @param flag flag to check
324338 */
325339 private void assertDisabled (final SimpleEnum flag ) {
326- Assertions .assertThat (flagSet .enabled (flag )).
327- describedAs ("status of flag %s in %s" , flag , flagSet )
340+ Assertions .assertThat (flagSet .enabled (flag ))
341+ . describedAs ("status of flag %s in %s" , flag , flagSet )
328342 .isFalse ();
329343 }
330344
@@ -345,7 +359,23 @@ private void assertFlags(final SimpleEnum... flags) {
345359 private void assertFlagSetMatches (
346360 FlagSet <SimpleEnum > fs ,
347361 SimpleEnum ... flags ) {
348- Assertions .assertThat (fs .flags ()).containsExactly (flags );
362+ Assertions .assertThat (fs .flags ())
363+ .describedAs ("path capabilities of %s" , fs )
364+ .containsExactly (flags );
349365 }
350366
367+ /**
368+ * Assert that a flagset contains exactly the capabilities.
369+ * This is calculated by getting the list of active capabilities
370+ * and asserting on the list.
371+ * @param fs flagset
372+ * @param capabilities capabilities
373+ */
374+ private void assertPathCapabilitiesMatch (
375+ FlagSet <SimpleEnum > fs ,
376+ String ... capabilities ) {
377+ Assertions .assertThat (fs .pathCapabilities ())
378+ .describedAs ("path capabilities of %s" , fs )
379+ .containsExactlyInAnyOrder (capabilities );
380+ }
351381}
0 commit comments