public void test_enum_SampleNamed_externals() { ExtendedEnum<SampleNamed> test = ExtendedEnum.of(SampleNamed.class); assertEquals(test.externalNameGroups(), ImmutableSet.of("Foo", "Bar")); assertThrowsIllegalArg(() -> test.externalNames("Rubbish")); ExternalEnumNames<SampleNamed> fooExternals = test.externalNames("Foo"); assertEquals(fooExternals.lookup("Foo1"), SampleNameds.STANDARD); assertEquals(fooExternals.lookup("Foo1", SampleNamed.class), SampleNameds.STANDARD); assertEquals(fooExternals.lookup("Foo1", SampleNamed.class), SampleNameds.STANDARD); assertEquals(fooExternals.externalNames(), ImmutableMap.of("Foo1", "Standard")); assertThrowsIllegalArg(() -> fooExternals.lookup("Rubbish")); assertThrowsIllegalArg(() -> fooExternals.lookup(null)); assertThrowsIllegalArg(() -> fooExternals.lookup("Other", MoreSampleNameds.class)); assertEquals(fooExternals.toString(), "ExternalEnumNames[SampleNamed:Foo]"); ExternalEnumNames<SampleNamed> barExternals = test.externalNames("Bar"); assertEquals(barExternals.lookup("Foo1"), MoreSampleNameds.MORE); assertEquals(barExternals.lookup("Foo2"), SampleNameds.STANDARD); assertEquals(barExternals.reverseLookup(MoreSampleNameds.MORE), "Foo1"); assertEquals(barExternals.reverseLookup(SampleNameds.STANDARD), "Foo2"); assertThrowsIllegalArg(() -> barExternals.reverseLookup(OtherSampleNameds.OTHER)); assertEquals(barExternals.externalNames(), ImmutableMap.of("Foo1", "More", "Foo2", "Standard")); assertEquals(barExternals.toString(), "ExternalEnumNames[SampleNamed:Bar]"); }