/** * Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.collect.named; import static com.opengamma.collect.TestHelper.assertThrows; import static org.testng.Assert.assertEquals; import java.util.logging.Level; import java.util.logging.Logger; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; /** * Test {@link ExtendedEnum}. */ @Test public class ExtendedEnumTest { public void test_enum_MockNamed() { ExtendedEnum<MockNamed> test = ExtendedEnum.of(MockNamed.class); assertEquals(test.lookupAll(), ImmutableMap.of("Standard", MockNameds.STANDARD, "More", MoreMockNameds.MORE, "Other", OtherMockNameds.OTHER)); assertEquals(test.alternateNames(), ImmutableMap.of("Alternate", "Standard")); assertEquals(test.lookup("Standard"), MockNameds.STANDARD); assertEquals(test.lookup("Alternate"), MockNameds.STANDARD); assertEquals(test.lookup("More"), MoreMockNameds.MORE); assertEquals(test.lookup("More", MoreMockNameds.class), MoreMockNameds.MORE); assertEquals(test.lookup("Other"), OtherMockNameds.OTHER); assertEquals(test.lookup("Other", OtherMockNameds.class), OtherMockNameds.OTHER); assertThrows(() -> test.lookup("Rubbish"), IllegalArgumentException.class); assertThrows(() -> test.lookup(null), IllegalArgumentException.class); assertThrows(() -> test.lookup("Other", MoreMockNameds.class), IllegalArgumentException.class); assertEquals(test.toString(), "ExtendedEnum[MockNamed]"); } public void test_enum_MockOther() { ExtendedEnum<MockOther> test = ExtendedEnum.of(MockOther.class); assertEquals(test.lookupAll(), ImmutableMap.of()); assertEquals(test.alternateNames(), ImmutableMap.of()); assertThrows(() -> test.lookup("Rubbish"), IllegalArgumentException.class); assertThrows(() -> test.lookup(null), IllegalArgumentException.class); assertEquals(test.toString(), "ExtendedEnum[MockOther]"); } public void test_enum_invalid() { Logger logger = Logger.getLogger(ExtendedEnum.class.getName()); Level level = logger.getLevel(); try { logger.setLevel(Level.OFF); // these return empty instances to avoid ExceptionInInitializerError assertEquals(ExtendedEnum.of(MockInvalid1.class).lookupAll().isEmpty(), true); assertEquals(ExtendedEnum.of(MockInvalid2.class).lookupAll().isEmpty(), true); assertEquals(ExtendedEnum.of(MockInvalid3.class).lookupAll().isEmpty(), true); assertEquals(ExtendedEnum.of(MockInvalid4.class).lookupAll().isEmpty(), true); } finally { logger.setLevel(level); } } }