/** * Copyright (C) 2016 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.strata.product; import static com.opengamma.strata.basics.currency.Currency.GBP; import static com.opengamma.strata.collect.TestHelper.assertSerialization; import static com.opengamma.strata.collect.TestHelper.assertThrowsIllegalArg; import static com.opengamma.strata.collect.TestHelper.coverBeanEquals; import static com.opengamma.strata.collect.TestHelper.coverImmutableBean; import static org.testng.Assert.assertEquals; import java.util.Optional; import org.testng.annotations.Test; import com.google.common.collect.ImmutableMap; import com.opengamma.strata.basics.currency.CurrencyAmount; /** * Test {@link SecurityInfo}. */ @Test public class SecurityInfoTest { private static final SecurityId ID = SecurityId.of("OG-Test", "Test"); private static final SecurityId ID2 = SecurityId.of("OG-Test", "Test2"); private static final SecurityPriceInfo PRICE_INFO = SecurityPriceInfo.of(0.01, CurrencyAmount.of(GBP, 0.01)); private static final SecurityPriceInfo PRICE_INFO2 = SecurityPriceInfo.of(0.02, CurrencyAmount.of(GBP, 1)); private static final ImmutableMap<SecurityAttributeType<?>, Object> INFO_MAP = ImmutableMap.of(SecurityAttributeType.NAME, "A"); //------------------------------------------------------------------------- public void test_of_priceInfoFields() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO.getTickSize(), PRICE_INFO.getTickValue()); assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), ImmutableMap.of()); assertThrowsIllegalArg(() -> test.getAttribute(SecurityAttributeType.NAME)); assertEquals(test.findAttribute(SecurityAttributeType.NAME), Optional.empty()); } public void test_of_priceInfo() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO); assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), ImmutableMap.of()); assertThrowsIllegalArg(() -> test.getAttribute(SecurityAttributeType.NAME)); assertEquals(test.findAttribute(SecurityAttributeType.NAME), Optional.empty()); } public void test_of_withAdditionalInfo() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO) .withAttribute(SecurityAttributeType.NAME, "B") .withAttribute(SecurityAttributeType.NAME, "A"); // overwrites "B" assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), INFO_MAP); assertEquals(test.getAttribute(SecurityAttributeType.NAME), "A"); assertEquals(test.findAttribute(SecurityAttributeType.NAME), Optional.of("A")); } public void test_builder() { SecurityInfo test = SecurityInfo.builder() .id(ID) .priceInfo(PRICE_INFO) .addAttribute(SecurityAttributeType.NAME, "B") .addAttribute(SecurityAttributeType.NAME, "A") // overwrites "B" .build(); assertEquals(test.getId(), ID); assertEquals(test.getPriceInfo(), PRICE_INFO); assertEquals(test.getAttributes(), INFO_MAP); assertEquals(test.getAttribute(SecurityAttributeType.NAME), "A"); assertEquals(test.findAttribute(SecurityAttributeType.NAME), Optional.of("A")); } //------------------------------------------------------------------------- public void coverage() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO); coverImmutableBean(test); SecurityInfo test2 = SecurityInfo.of(ID2, PRICE_INFO2).withAttribute(SecurityAttributeType.NAME, "A"); coverBeanEquals(test, test2); } public void test_serialization() { SecurityInfo test = SecurityInfo.of(ID, PRICE_INFO); assertSerialization(test); } }