/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.product.credit; import static com.opengamma.strata.collect.TestHelper.assertJodaConvert; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.coverEnum; import static com.opengamma.strata.product.credit.SeniorityLevel.SENIOR_SECURED_DOMESTIC; import static com.opengamma.strata.product.credit.SeniorityLevel.SENIOR_UNSECURED_FOREIGN; import static com.opengamma.strata.product.credit.SeniorityLevel.SUBORDINATE_LOWER_TIER_2; import static com.opengamma.strata.product.credit.SeniorityLevel.SUBORDINATE_TIER_1; import static com.opengamma.strata.product.credit.SeniorityLevel.SUBORDINATE_UPPER_TIER_2; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; import java.util.Set; import org.testng.annotations.DataProvider; import org.testng.annotations.Test; import com.google.common.collect.Sets; /** * Test SeniorityLevel. */ @Test public class SeniorityLevelTest { //----------------------------------------------------------------------- public void test_constants() { assertEquals(SeniorityLevel.of("SeniorSecuredDomestic"), SENIOR_SECURED_DOMESTIC); assertEquals(SeniorityLevel.valueOf("SENIOR_SECURED_DOMESTIC"), SENIOR_SECURED_DOMESTIC); assertEquals(SeniorityLevel.of("SeniorUnsecuredForeign"), SENIOR_UNSECURED_FOREIGN); assertEquals(SeniorityLevel.valueOf("SENIOR_UNSECURED_FOREIGN"), SENIOR_UNSECURED_FOREIGN); assertEquals(SeniorityLevel.of("SubordinateLowerTier2"), SUBORDINATE_LOWER_TIER_2); assertEquals(SeniorityLevel.valueOf("SUBORDINATE_LOWER_TIER_2"), SUBORDINATE_LOWER_TIER_2); assertEquals(SeniorityLevel.of("SubordinateTier1"), SUBORDINATE_TIER_1); assertEquals(SeniorityLevel.valueOf("SUBORDINATE_TIER_1"), SUBORDINATE_TIER_1); assertEquals(SeniorityLevel.of("SubordinateUpperTier2"), SUBORDINATE_UPPER_TIER_2); assertEquals(SeniorityLevel.valueOf("SUBORDINATE_UPPER_TIER_2"), SUBORDINATE_UPPER_TIER_2); } //----------------------------------------------------------------------- public void test_all_values() { Set<SeniorityLevel> available = Sets.newHashSet(SeniorityLevel.values()); assertTrue(available.contains(SENIOR_SECURED_DOMESTIC)); available.remove(SENIOR_SECURED_DOMESTIC); assertTrue(available.contains(SENIOR_UNSECURED_FOREIGN)); available.remove(SENIOR_UNSECURED_FOREIGN); assertTrue(available.contains(SUBORDINATE_LOWER_TIER_2)); available.remove(SUBORDINATE_LOWER_TIER_2); assertTrue(available.contains(SUBORDINATE_TIER_1)); available.remove(SUBORDINATE_TIER_1); assertTrue(available.contains(SUBORDINATE_UPPER_TIER_2)); available.remove(SUBORDINATE_UPPER_TIER_2); assertTrue(available.isEmpty()); } //----------------------------------------------------------------------- @DataProvider(name = "ofBad") Object[][] data_ofBad() { return new Object[][] { {""}, {"NA"}, {"SENIORSECUREDDOMESTIC"}, {"SeniorSecureDomestic"}, {"SRNFOR"}, {null}, }; } @Test(dataProvider = "ofBad", expectedExceptions = {IllegalArgumentException.class, NullPointerException.class}) public void test_of_String_bad(String input) { SeniorityLevel.valueOf(input); } //----------------------------------------------------------------------- public void test_equals_hashCode() { SeniorityLevel a1 = SENIOR_SECURED_DOMESTIC; SeniorityLevel a2 = SeniorityLevel.valueOf("SENIOR_SECURED_DOMESTIC"); SeniorityLevel b = SUBORDINATE_LOWER_TIER_2; assertEquals(a1.equals(a1), true); assertEquals(a1.equals(b), false); assertEquals(a1.equals(a2), true); assertEquals(a2.equals(a1), true); assertEquals(a2.equals(a2), true); assertEquals(a2.equals(b), false); assertEquals(b.equals(a1), false); assertEquals(b.equals(a2), false); assertEquals(b.equals(b), true); assertEquals(a1.hashCode(), a2.hashCode()); } public void test_equals_bad() { SeniorityLevel a = SENIOR_SECURED_DOMESTIC; assertEquals(a.equals(null), false); assertEquals(a.equals("String"), false); assertEquals(a.equals(new Object()), false); } //----------------------------------------------------------------------- public void test_toString() { SeniorityLevel test = SENIOR_SECURED_DOMESTIC; assertEquals("SeniorSecuredDomestic", test.toString()); } //----------------------------------------------------------------------- public void coverage() { coverEnum(SeniorityLevel.class); } public void test_serialization() { assertSerialization(SENIOR_SECURED_DOMESTIC); assertSerialization(SeniorityLevel.valueOf("SENIOR_SECURED_DOMESTIC")); } public void test_jodaConvert() { assertJodaConvert(SeniorityLevel.class, SENIOR_SECURED_DOMESTIC); assertJodaConvert(SeniorityLevel.class, SeniorityLevel.valueOf("SENIOR_SECURED_DOMESTIC")); } }