/** * Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.core.marketdatasnapshot; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertNotEquals; import static org.testng.Assert.assertNull; import static org.testng.Assert.assertTrue; import java.util.Map; import org.testng.annotations.Test; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.util.test.TestGroup; /** * Tests the {@link SnapshotDataBundle} class. */ @Test(groups = TestGroup.UNIT) public class SnapshotDataBundleTest { private SnapshotDataBundle createObject() { final SnapshotDataBundle object = new SnapshotDataBundle(); object.setDataPoint(ExternalId.of("Foo", "1"), 1d); object.setDataPoint(ExternalId.of("Foo", "2"), 2d); object.setDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Bar", "Cow")), 3d); object.setDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "4"), ExternalId.of("Bar", "Dog")), 4d); assertEquals(object.size(), 4); return object; } public void testGetBundle_exactMatch() { final SnapshotDataBundle object = createObject(); assertEquals(object.getDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "1"))), 1d); assertEquals(object.getDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Bar", "Cow"))), 3d); } public void testGetBundle_partialMatch() { final SnapshotDataBundle object = createObject(); assertEquals(object.getDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "2"), ExternalId.of("Missing", "1"))), 2d); } public void testGetBundle_noMatch() { final SnapshotDataBundle object = createObject(); assertNull(object.getDataPoint(ExternalIdBundle.of(ExternalId.of("Missing", "2"), ExternalId.of("Missing", "1")))); } public void testGetSingle_match() { final SnapshotDataBundle object = createObject(); assertEquals(object.getDataPoint(ExternalId.of("Foo", "1")), 1d); assertEquals(object.getDataPoint(ExternalId.of("Foo", "4")), 4d); } public void testGetSingle_noMatch() { final SnapshotDataBundle object = createObject(); assertNull(object.getDataPoint(ExternalId.of("Missing", "1"))); } public void testSetBundle_erasing() { final SnapshotDataBundle object = createObject(); object.setDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "2"), ExternalId.of("Bar", "Cow")), 42d); assertEquals(object.size(), 3); assertEquals(object.getDataPoint(ExternalId.of("Foo", "1")), 1d); assertEquals(object.getDataPoint(ExternalId.of("Foo", "2")), 42d); assertNull(object.getDataPoint(ExternalId.of("Foo", "3"))); assertEquals(object.getDataPoint(ExternalId.of("Foo", "4")), 4d); } public void testSetBundle_replacing() { final SnapshotDataBundle object = createObject(); object.setDataPoint(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Bar", "Cow")), 42d); assertEquals(object.size(), 4); assertEquals(object.getDataPoint(ExternalId.of("Foo", "3")), 42d); } public void testSetSingle_replacing() { final SnapshotDataBundle object = createObject(); object.setDataPoint(ExternalId.of("Foo", "3"), 42d); assertEquals(object.size(), 4); assertEquals(object.getDataPoint(ExternalId.of("Foo", "3")), 42d); assertEquals(object.getDataPoint(ExternalId.of("Bar", "Cow")), 42d); } public void testRemoveBundle_exact() { final SnapshotDataBundle object = createObject(); object.removeDataPoints(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Bar", "Cow"))); assertEquals(object.size(), 3); assertNull(object.getDataPoint(ExternalId.of("Foo", "3"))); } public void testRemoveBundle_partial() { final SnapshotDataBundle object = createObject(); object.removeDataPoints(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Missing", "1"))); assertEquals(object.size(), 3); assertNull(object.getDataPoint(ExternalId.of("Foo", "3"))); } public void testRemoveBundle_multiple() { final SnapshotDataBundle object = createObject(); object.removeDataPoints(ExternalIdBundle.of(ExternalId.of("Foo", "3"), ExternalId.of("Bar", "Dog"))); assertEquals(object.size(), 2); assertNull(object.getDataPoint(ExternalId.of("Foo", "3"))); assertNull(object.getDataPoint(ExternalId.of("Foo", "4"))); } public void testRemoveSingle_direct() { final SnapshotDataBundle object = createObject(); object.removeDataPoint(ExternalId.of("Foo", "2")); assertEquals(object.size(), 3); assertNull(object.getDataPoint(ExternalId.of("Foo", "2"))); } public void testRemoveSingle_cascade() { final SnapshotDataBundle object = createObject(); object.removeDataPoint(ExternalId.of("Bar", "Cow")); assertEquals(object.size(), 3); assertNull(object.getDataPoint(ExternalId.of("Bar", "Cow"))); assertNull(object.getDataPoint(ExternalId.of("Foo", "3"))); } public void testGetDataPointSet() { final SnapshotDataBundle object = new SnapshotDataBundle(); assertTrue(object.getDataPointSet().isEmpty()); object.setDataPoint(ExternalId.of("Foo", "Bar"), 42d); assertEquals(object.getDataPointSet().size(), 1); final Map.Entry<ExternalIdBundle, Double> e = object.getDataPointSet().iterator().next(); assertEquals(e.getKey(), ExternalIdBundle.of(ExternalId.of("Foo", "Bar"))); assertEquals(e.getValue(), 42d); } public void testEquals() { SnapshotDataBundle snap = new SnapshotDataBundle(); snap.setDataPoint(ExternalId.parse("Snap~Test"), 1234.56); SnapshotDataBundle snap2 = new SnapshotDataBundle(); snap2.setDataPoint(ExternalId.parse("Snap~Test"), 1234.56); SnapshotDataBundle snap3 = new SnapshotDataBundle(); snap3.setDataPoint(ExternalId.parse("Snap~Test"), 1234); assertEquals(snap, snap2); assertEquals(snap.hashCode(), snap2.hashCode()); assertNotEquals(snap, snap3); assertNotEquals(snap.hashCode(), snap3.hashCode()); } }