/** * 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.assertSame; import org.testng.annotations.Test; import com.opengamma.util.test.TestGroup; /** * Test {@link ObjectId}. */ @Test(groups = TestGroup.UNIT) public class ObjectIdTest { public void test_factory_String_String() { ObjectId test = ObjectId.of("Scheme", "value"); assertEquals("Scheme", test.getScheme()); assertEquals("value", test.getValue()); assertEquals("Scheme~value", test.toString()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_String_String_nullScheme() { ObjectId.of((String) null, "value"); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_String_String_emptyScheme() { ObjectId.of("", "value"); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_String_String_nullValue() { ObjectId.of("Scheme", (String) null); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_factory_String_String_emptyValue() { ObjectId.of("Scheme", ""); } // [PLAT-1543] Fix ObjectId and enable the test @Test(enabled = false) public void testStringEscaping() { final String[] strs = new String[] {"Foo", "~Foo", "Foo~", "~Foo~", "~", "~~", "~~~" }; for (String scheme : strs) { for (String value : strs) { final ObjectId testOID = ObjectId.of(scheme, value); final String testStr = testOID.toString(); // System.out.println("scheme = " + scheme + ", value = " + value + ", oid = " + testOID.toString()); final ObjectId oid = ObjectId.parse(testStr); assertEquals(testOID, oid); } } } //------------------------------------------------------------------------- public void test_parse() { ObjectId test = ObjectId.parse("Scheme~value"); assertEquals("Scheme", test.getScheme()); assertEquals("value", test.getValue()); assertEquals("Scheme~value", test.toString()); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_parse_invalidFormat1() { ObjectId.parse("Scheme"); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_parse_invalidFormat2() { ObjectId.parse("Scheme:value"); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_parse_invalidFormat3() { ObjectId.parse("Scheme~value~other"); } //------------------------------------------------------------------------- public void test_withScheme() { ObjectId test = ObjectId.of("id1", "value1"); assertEquals(ObjectId.of("newScheme", "value1"), test.withScheme("newScheme")); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_withScheme_empty() { ObjectId test = ObjectId.of("id1", "value1"); test.withScheme(""); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_withScheme_null() { ObjectId test = ObjectId.of("id1", "value1"); test.withScheme(null); } //------------------------------------------------------------------------- public void test_withValue() { ObjectId test = ObjectId.of("id1", "value1"); assertEquals(ObjectId.of("id1", "newValue"), test.withValue("newValue")); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_withValue_empty() { ObjectId test = ObjectId.of("id1", "value1"); test.withValue(""); } @Test(expectedExceptions = IllegalArgumentException.class) public void test_withValue_null() { ObjectId test = ObjectId.of("id1", "value1"); test.withValue(null); } //------------------------------------------------------------------------- public void test_atLatestVersion() { ObjectId test = ObjectId.of("id1", "value1"); assertEquals(UniqueId.of("id1", "value1", null), test.atLatestVersion()); } //------------------------------------------------------------------------- public void test_atVersion() { ObjectId test = ObjectId.of("id1", "value1"); assertEquals(UniqueId.of("id1", "value1", "32"), test.atVersion("32")); } public void test_atVersion_null() { ObjectId test = ObjectId.of("id1", "value1"); assertEquals(UniqueId.of("id1", "value1", null), test.atVersion(null)); } //------------------------------------------------------------------------- public void test_getObjectId() { ObjectId test = ObjectId.of("id1", "value1"); assertSame(test, test.getObjectId()); } //------------------------------------------------------------------------- public void test_compareTo() { ObjectId a = ObjectId.of("A", "1"); ObjectId b = ObjectId.of("A", "2"); ObjectId c = ObjectId.of("B", "2"); assertEquals(true, a.compareTo(a) == 0); assertEquals(true, a.compareTo(b) < 0); assertEquals(true, a.compareTo(c) < 0); assertEquals(true, b.compareTo(a) > 0); assertEquals(true, b.compareTo(b) == 0); assertEquals(true, b.compareTo(c) < 0); assertEquals(true, c.compareTo(a) > 0); assertEquals(true, c.compareTo(b) > 0); assertEquals(true, c.compareTo(c) == 0); } @Test(expectedExceptions = NullPointerException.class) public void test_compareTo_null() { ObjectId test = ObjectId.of("A", "1"); test.compareTo(null); } //------------------------------------------------------------------------- public void test_equals() { ObjectId d1a = ObjectId.of("Scheme", "d1"); ObjectId d1b = ObjectId.of("Scheme", "d1"); ObjectId d2 = ObjectId.of("Scheme", "d2"); assertEquals(true, d1a.equals(d1a)); assertEquals(true, d1a.equals(d1b)); assertEquals(false, d1a.equals(d2)); assertEquals(true, d1b.equals(d1a)); assertEquals(true, d1b.equals(d1b)); assertEquals(false, d1b.equals(d2)); assertEquals(false, d2.equals(d1a)); assertEquals(false, d2.equals(d1b)); assertEquals(true, d2.equals(d2)); assertEquals(false, d1b.equals("d1")); assertEquals(false, d1b.equals(null)); } public void test_hashCode() { ObjectId d1a = ObjectId.of("Scheme", "d1"); ObjectId d1b = ObjectId.of("Scheme", "d1"); assertEquals(d1a.hashCode(), d1b.hashCode()); } }