/**
* 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.RestructuringClause.CUM_RESTRUCTURING_2003;
import static com.opengamma.strata.product.credit.RestructuringClause.CUM_RESTRUCTURING_2014;
import static com.opengamma.strata.product.credit.RestructuringClause.MODIFIED_RESTRUCTURING_2003;
import static com.opengamma.strata.product.credit.RestructuringClause.MODIFIED_RESTRUCTURING_2014;
import static com.opengamma.strata.product.credit.RestructuringClause.MOD_MOD_RESTRUCTURING_2003;
import static com.opengamma.strata.product.credit.RestructuringClause.MOD_MOD_RESTRUCTURING_2014;
import static com.opengamma.strata.product.credit.RestructuringClause.NO_RESTRUCTURING_2003;
import static com.opengamma.strata.product.credit.RestructuringClause.NO_RESTRUCTURING_2014;
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 {@link RestructuringClause}.
*/
@Test
public class RestructuringClauseTest {
//-----------------------------------------------------------------------
public void test_constants() {
assertEquals(RestructuringClause.of("ModModRestructuring2014"), MOD_MOD_RESTRUCTURING_2014);
assertEquals(RestructuringClause.valueOf("MOD_MOD_RESTRUCTURING_2014"), MOD_MOD_RESTRUCTURING_2014);
assertEquals(RestructuringClause.of("ModModRestructuring2003"), MOD_MOD_RESTRUCTURING_2003);
assertEquals(RestructuringClause.valueOf("MOD_MOD_RESTRUCTURING_2003"), MOD_MOD_RESTRUCTURING_2003);
assertEquals(RestructuringClause.of("ModifiedRestructuring2014"), MODIFIED_RESTRUCTURING_2014);
assertEquals(RestructuringClause.valueOf("MODIFIED_RESTRUCTURING_2014"), MODIFIED_RESTRUCTURING_2014);
assertEquals(RestructuringClause.of("ModifiedRestructuring2003"), MODIFIED_RESTRUCTURING_2003);
assertEquals(RestructuringClause.valueOf("MODIFIED_RESTRUCTURING_2003"), MODIFIED_RESTRUCTURING_2003);
assertEquals(RestructuringClause.valueOf("CUM_RESTRUCTURING_2014"), CUM_RESTRUCTURING_2014);
assertEquals(RestructuringClause.valueOf("CUM_RESTRUCTURING_2003"), CUM_RESTRUCTURING_2003);
assertEquals(RestructuringClause.valueOf("NO_RESTRUCTURING_2014"), NO_RESTRUCTURING_2014);
assertEquals(RestructuringClause.valueOf("NO_RESTRUCTURING_2003"), NO_RESTRUCTURING_2003);
}
//-----------------------------------------------------------------------
public void test_all_values() {
Set<RestructuringClause> available = Sets.newHashSet(RestructuringClause.values());
assertTrue(available.contains(MOD_MOD_RESTRUCTURING_2014));
available.remove(MOD_MOD_RESTRUCTURING_2014);
assertTrue(available.contains(MOD_MOD_RESTRUCTURING_2003));
available.remove(MOD_MOD_RESTRUCTURING_2003);
assertTrue(available.contains(MODIFIED_RESTRUCTURING_2014));
available.remove(MODIFIED_RESTRUCTURING_2014);
assertTrue(available.contains(MODIFIED_RESTRUCTURING_2003));
available.remove(MODIFIED_RESTRUCTURING_2003);
assertTrue(available.contains(CUM_RESTRUCTURING_2014));
available.remove(CUM_RESTRUCTURING_2014);
assertTrue(available.contains(CUM_RESTRUCTURING_2003));
available.remove(CUM_RESTRUCTURING_2003);
assertTrue(available.contains(NO_RESTRUCTURING_2014));
available.remove(NO_RESTRUCTURING_2014);
assertTrue(available.contains(NO_RESTRUCTURING_2003));
available.remove(NO_RESTRUCTURING_2003);
assertTrue(available.isEmpty());
}
//-----------------------------------------------------------------------
@DataProvider(name = "ofBad")
Object[][] data_ofBad() {
return new Object[][] {
{""},
{"NA"},
{"MODMODRESTRUCTURING2014"},
{"ModModRestructuring"},
{"MMR"},
{null},
};
}
@Test(dataProvider = "ofBad", expectedExceptions = {IllegalArgumentException.class, NullPointerException.class})
public void test_of_String_bad(String input) {
RestructuringClause.valueOf(input);
}
//-----------------------------------------------------------------------
public void test_equals_hashCode() {
RestructuringClause a1 = MOD_MOD_RESTRUCTURING_2014;
RestructuringClause a2 = RestructuringClause.valueOf("MOD_MOD_RESTRUCTURING_2014");
RestructuringClause b = NO_RESTRUCTURING_2003;
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() {
RestructuringClause a = MOD_MOD_RESTRUCTURING_2014;
assertEquals(a.equals(null), false);
assertEquals(a.equals("String"), false);
assertEquals(a.equals(new Object()), false);
}
//-----------------------------------------------------------------------
public void test_toString() {
RestructuringClause test = MOD_MOD_RESTRUCTURING_2014;
assertEquals(test.toString(), "ModModRestructuring2014");
}
//-----------------------------------------------------------------------
public void coverage() {
coverEnum(RestructuringClause.class);
}
public void test_serialization() {
assertSerialization(MOD_MOD_RESTRUCTURING_2014);
assertSerialization(RestructuringClause.valueOf("MOD_MOD_RESTRUCTURING_2014"));
}
public void test_jodaConvert() {
assertJodaConvert(RestructuringClause.class, MOD_MOD_RESTRUCTURING_2014);
assertJodaConvert(RestructuringClause.class, RestructuringClause.valueOf("MOD_MOD_RESTRUCTURING_2014"));
}
}