/** * Copyright (C) 2015 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.market.sensitivity; import static com.opengamma.strata.basics.currency.Currency.GBP; import static com.opengamma.strata.basics.currency.Currency.USD; import static com.opengamma.strata.collect.TestHelper.date; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertSame; import java.util.ArrayList; import org.testng.annotations.Test; import com.google.common.collect.ImmutableList; import com.google.common.collect.Lists; /** * Test {@link MutablePointSensitivities}. */ @Test public class MutablePointSensitivitiesTest { private static final PointSensitivity CS1 = DummyPointSensitivity.of(GBP, date(2015, 6, 30), 12d); private static final PointSensitivity CS2 = DummyPointSensitivity.of(GBP, date(2015, 7, 30), 22d); private static final PointSensitivity CS3 = DummyPointSensitivity.of(GBP, date(2015, 8, 30), 32d); private static final PointSensitivity CS3B = DummyPointSensitivity.of(GBP, date(2015, 8, 30), 3d); //------------------------------------------------------------------------- public void test_size_add_getSensitivities() { MutablePointSensitivities test = new MutablePointSensitivities(); assertEquals(test.size(), 0); assertEquals(test.getSensitivities(), ImmutableList.of()); test.add(CS1); assertEquals(test.size(), 1); assertEquals(test.getSensitivities(), ImmutableList.of(CS1)); test.add(CS2); assertEquals(test.size(), 2); assertEquals(test.getSensitivities(), ImmutableList.of(CS1, CS2)); } public void test_size_addAll_getSensitivities() { MutablePointSensitivities test = new MutablePointSensitivities(); assertEquals(test.getSensitivities(), ImmutableList.of()); test.addAll(Lists.newArrayList(CS2, CS1)); assertEquals(test.size(), 2); assertEquals(test.getSensitivities(), ImmutableList.of(CS2, CS1)); } public void test_construcor_getSensitivities() { MutablePointSensitivities test = new MutablePointSensitivities(Lists.newArrayList(CS2, CS1)); assertEquals(test.size(), 2); assertEquals(test.getSensitivities(), ImmutableList.of(CS2, CS1)); } //------------------------------------------------------------------------- public void test_addAll() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS2, CS1)); MutablePointSensitivities test2 = new MutablePointSensitivities(); test2.addAll(Lists.newArrayList(CS3)); test.addAll(test2); assertEquals(test.getSensitivities(), ImmutableList.of(CS2, CS1, CS3)); } //------------------------------------------------------------------------- public void test_withCurrency() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); test.withCurrency(USD); assertEquals( test.getSensitivities(), ImmutableList.of(CS3.withCurrency(USD), CS2.withCurrency(USD), CS1.withCurrency(USD))); } public void test_multiplyBy() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); test.multipliedBy(2d); assertEquals( test.getSensitivities(), ImmutableList.of(CS3.withSensitivity(64d), CS2.withSensitivity(44d), CS1.withSensitivity(24d))); } public void test_mapSensitivities() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); test.mapSensitivity(s -> s / 2); assertEquals( test.getSensitivities(), ImmutableList.of(CS3.withSensitivity(16d), CS2.withSensitivity(11d), CS1.withSensitivity(6d))); } //------------------------------------------------------------------------- public void test_combinedWith() { MutablePointSensitivities base1 = new MutablePointSensitivities(CS1); MutablePointSensitivities base2 = new MutablePointSensitivities(CS2); MutablePointSensitivities expected = new MutablePointSensitivities(); expected.addAll(base1).addAll(base2); PointSensitivityBuilder test = base1.combinedWith(base2); assertEquals(test, expected); } //------------------------------------------------------------------------- public void test_buildInto() { MutablePointSensitivities base = new MutablePointSensitivities(CS1); MutablePointSensitivities combo = new MutablePointSensitivities(); MutablePointSensitivities test = base.buildInto(combo); assertSame(test, combo); assertEquals(test.getSensitivities(), ImmutableList.of(CS1)); } public void test_buildInto_same() { MutablePointSensitivities base = new MutablePointSensitivities(CS1); MutablePointSensitivities test = base.buildInto(base); assertSame(test, base); assertEquals(test.getSensitivities(), ImmutableList.of(CS1)); } //------------------------------------------------------------------------- public void test_build() { MutablePointSensitivities base = new MutablePointSensitivities(); PointSensitivities test = base.build(); assertEquals(test, base.toImmutable()); } //------------------------------------------------------------------------- public void test_cloned() { MutablePointSensitivities base = new MutablePointSensitivities(); base.add(CS3); MutablePointSensitivities test = base.cloned(); base.add(CS2); test.add(CS1); MutablePointSensitivities baseExpected = new MutablePointSensitivities(); baseExpected.addAll(Lists.newArrayList(CS3, CS2)); assertEquals(base, baseExpected); MutablePointSensitivities testExpected = new MutablePointSensitivities(); testExpected.addAll(Lists.newArrayList(CS3, CS1)); assertEquals(test, testExpected); } //------------------------------------------------------------------------- public void test_sort() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); test.sort(); assertEquals(test.getSensitivities(), ImmutableList.of(CS1, CS2, CS3)); } public void test_normalize() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1, CS3B)); test.normalize(); assertEquals(test.getSensitivities(), ImmutableList.of(CS1, CS2, CS3.withSensitivity(35d))); } //------------------------------------------------------------------------- public void test_toImmutable() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); assertEquals(test.toImmutable(), PointSensitivities.of(ImmutableList.of(CS3, CS2, CS1))); } //------------------------------------------------------------------------- public void test_equals() { MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(Lists.newArrayList(CS3, CS2, CS1)); MutablePointSensitivities test2 = new MutablePointSensitivities(); test2.addAll(Lists.newArrayList(CS3, CS2, CS1)); MutablePointSensitivities test3 = new MutablePointSensitivities(); test3.addAll(Lists.newArrayList(CS3, CS1)); assertEquals(test.equals(test), true); assertEquals(test.equals(test2), true); assertEquals(test.equals(test3), false); assertEquals(test.equals("Bad"), false); assertEquals(test.equals(null), false); assertEquals(test.hashCode(), test2.hashCode()); } public void test_toString() { ArrayList<PointSensitivity> list = Lists.newArrayList(CS3, CS2, CS1); MutablePointSensitivities test = new MutablePointSensitivities(); test.addAll(list); assertEquals(test.toString().contains(list.toString()), true); } }