/** * Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.core.change; import static org.testng.AssertJUnit.assertEquals; import static org.testng.AssertJUnit.assertSame; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import org.threeten.bp.Instant; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Test. */ @Test(groups = TestGroup.UNIT) public class BasicChangeManagerTest { private static final Instant NOW = Instant.now(); private static final UniqueId UID_A_B_1 = UniqueId.of("A", "B", "1"); private static final UniqueId UID_A_B_2 = UniqueId.of("A", "B", "2"); private BasicChangeManager _changeManager; private ChangeListener _testListener; @BeforeMethod public void setUp() { _changeManager = new BasicChangeManager(); _testListener = new ChangeListener() { @Override public void entityChanged(ChangeEvent event) { } }; } //------------------------------------------------------------------------- public void test_addRemove() { assertEquals(0, _changeManager.getListeners().size()); _changeManager.addChangeListener(_testListener); assertEquals(1, _changeManager.getListeners().size()); assertSame(_testListener, _changeManager.getListeners().get(0)); _changeManager.removeChangeListener(_testListener); assertEquals(0, _changeManager.getListeners().size()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_add_null() { _changeManager.addChangeListener(null); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_remove_null() { _changeManager.removeChangeListener(null); } //------------------------------------------------------------------------- public void test_fire_add() { _changeManager.addChangeListener(new ChangeListener() { @Override public void entityChanged(ChangeEvent event) { assertEquals(ChangeType.ADDED, event.getType()); assertEquals(UID_A_B_1.getObjectId(), event.getObjectId()); assertEquals(NOW, event.getVersionInstant()); } }); _changeManager.entityChanged(ChangeType.ADDED, UID_A_B_1.getObjectId(), NOW, NOW, NOW); } public void test_fire_remove() { _changeManager.addChangeListener(new ChangeListener() { @Override public void entityChanged(ChangeEvent event) { assertEquals(ChangeType.REMOVED, event.getType()); assertEquals(UID_A_B_1.getObjectId(), event.getObjectId()); assertEquals(NOW, event.getVersionInstant()); } }); _changeManager.entityChanged(ChangeType.REMOVED, UID_A_B_1.getObjectId(), NOW, NOW, NOW); } public void test_fire_update() { _changeManager.addChangeListener(new ChangeListener() { @Override public void entityChanged(ChangeEvent event) { assertEquals(ChangeType.CHANGED, event.getType()); assertEquals(UID_A_B_1.getObjectId(), event.getObjectId()); assertEquals(UID_A_B_2.getObjectId(), event.getObjectId()); assertEquals(NOW, event.getVersionInstant()); } }); _changeManager.entityChanged(ChangeType.CHANGED, UID_A_B_1.getObjectId(), NOW, NOW, NOW); } public void test_fire_correct() { _changeManager.addChangeListener(new ChangeListener() { @Override public void entityChanged(ChangeEvent event) { assertEquals(ChangeType.CHANGED, event.getType()); assertEquals(UID_A_B_1.getObjectId(), event.getObjectId()); assertEquals(UID_A_B_2.getObjectId(), event.getObjectId()); assertEquals(NOW, event.getVersionInstant()); } }); _changeManager.entityChanged(ChangeType.CHANGED, UID_A_B_1.getObjectId(), NOW, NOW, NOW); } }