/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.id;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.fail;
import java.util.Collections;
import java.util.Map;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableMap;
import com.opengamma.util.test.TestGroup;
/**
* Test {@link UniqueIdSchemeDelegator}.
*/
@Test(groups = TestGroup.UNIT)
public class UniqueIdSchemeDelegatorTest {
public void test_constructor_defaultOnly() {
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default");
assertEquals("default", test.chooseDelegate("A"));
assertEquals("default", test.chooseDelegate("B"));
assertEquals("default", test.getDefaultDelegate());
assertEquals(Collections.emptyMap(), test.getDelegates());
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_constructor_defaultOnly_nullDefault() {
new UniqueIdSchemeDelegator<String>(null);
}
//-------------------------------------------------------------------------
public void test_constructor_defaultAndMap() {
Map<String, String> map = ImmutableMap.of("A", "adapt", "B", "bootup", "C", "curve");
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default", map);
assertEquals("adapt", test.chooseDelegate("A"));
assertEquals("bootup", test.chooseDelegate("B"));
assertEquals("curve", test.chooseDelegate("C"));
assertEquals("default", test.chooseDelegate("D"));
assertEquals("default", test.getDefaultDelegate());
assertEquals(map, test.getDelegates());
try {
test.getDelegates().clear();
fail();
} catch (UnsupportedOperationException ex) {
// expected
}
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_constructor_defaultAndMap_nullDefault() {
Map<String, String> map = ImmutableMap.of("A", "adapt", "B", "bootup", "C", "curve");
new UniqueIdSchemeDelegator<String>(null, map);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_constructor_defaultAndMap_nullMap() {
new UniqueIdSchemeDelegator<String>("default", null);
}
//-------------------------------------------------------------------------
public void test_registerDelegate_removeDelegate() {
Map<String, String> map = ImmutableMap.of("A", "adapt", "B", "bootup");
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default", map);
assertEquals("adapt", test.chooseDelegate("A"));
assertEquals("bootup", test.chooseDelegate("B"));
assertEquals("default", test.chooseDelegate("C"));
assertEquals("default", test.chooseDelegate("D"));
assertEquals(true, test.registerDelegate("C", "curve"));
assertEquals(false, test.registerDelegate("C", "curve"));
assertEquals("adapt", test.chooseDelegate("A"));
assertEquals("bootup", test.chooseDelegate("B"));
assertEquals("curve", test.chooseDelegate("C"));
assertEquals("default", test.chooseDelegate("D"));
test.removeDelegate("C");
assertEquals("adapt", test.chooseDelegate("A"));
assertEquals("bootup", test.chooseDelegate("B"));
assertEquals("default", test.chooseDelegate("C"));
assertEquals("default", test.chooseDelegate("D"));
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_registerDelegate_nullScheme() {
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default");
test.registerDelegate(null, "default");
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_registerDelegate_nullDelegate() {
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default");
test.registerDelegate("default", null);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void test_removeDelegate_null() {
UniqueIdSchemeDelegator<String> test = new UniqueIdSchemeDelegator<String>("default");
test.removeDelegate(null);
}
}