/** * Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies * * Please see distribution for license. */ package com.opengamma.engine.target; import static org.testng.Assert.assertEquals; import org.testng.annotations.Test; import com.opengamma.id.ExternalId; import com.opengamma.id.ExternalIdBundle; import com.opengamma.id.UniqueId; import com.opengamma.util.test.TestGroup; /** * Tests the {@link ComputationTargetRequirement} class */ @Test(groups = TestGroup.UNIT) public class ComputationTargetRequirementTest { public void testConstructor_id() { final ComputationTargetRequirement requirement = new ComputationTargetRequirement(ComputationTargetType.PRIMITIVE, ExternalId.of("Foo", "Bar")); assertEquals(requirement.getType(), ComputationTargetType.PRIMITIVE); assertEquals(requirement.getIdentifiers(), ExternalId.of("Foo", "Bar").toBundle()); } @Test(expectedExceptions = {AssertionError.class }) public void testConstructor_id_invalidType_1() { new ComputationTargetRequirement(ComputationTargetType.POSITION.containing(ComputationTargetType.SECURITY), ExternalId.of("Foo", "Bar")); } @Test(expectedExceptions = {AssertionError.class }) public void testConstructor_id_invalidType_2() { new ComputationTargetRequirement(null, ExternalId.of("Foo", "Bar")); } public void testConstructor_id_null_valid() { final ComputationTargetRequirement requirement = new ComputationTargetRequirement(ComputationTargetType.NULL, (ExternalId) null); assertEquals(requirement.getType(), ComputationTargetType.NULL); assertEquals(requirement.getIdentifiers(), ExternalIdBundle.EMPTY); } @Test(expectedExceptions = {IllegalArgumentException.class }) public void testConstructor_id_null_invalid_1() { new ComputationTargetRequirement(ComputationTargetType.POSITION, (ExternalId) null); } @Test(expectedExceptions = {IllegalArgumentException.class }) public void testConstructor_id_null_invalid_2() { new ComputationTargetRequirement(ComputationTargetType.NULL, ExternalId.of("Foo", "Bar")); } public void testConstructor_bundle() { final ComputationTargetRequirement requirement = new ComputationTargetRequirement(ComputationTargetType.PRIMITIVE, ExternalIdBundle.of(ExternalId.of("Foo", "1"), ExternalId.of("Bar", "2"))); assertEquals(requirement.getType(), ComputationTargetType.PRIMITIVE); assertEquals(requirement.getIdentifiers(), ExternalIdBundle.of(ExternalId.of("Foo", "1"), ExternalId.of("Bar", "2"))); } @Test(expectedExceptions = {IllegalArgumentException.class }) public void testConstructor_bundle_invalid() { new ComputationTargetRequirement(ComputationTargetType.PRIMITIVE, ExternalIdBundle.EMPTY); } @Test(expectedExceptions = {AssertionError.class }) public void testConstructor_bundle_invalidType_1() { new ComputationTargetRequirement(ComputationTargetType.POSITION.containing(ComputationTargetType.SECURITY), ExternalIdBundle.of(ExternalId.of("Foo", "1"), ExternalId.of("Bar", "2"))); } @Test(expectedExceptions = {AssertionError.class }) public void testConstructor_bundle_invalidType_2() { new ComputationTargetRequirement(null, ExternalIdBundle.of(ExternalId.of("Foo", "1"), ExternalId.of("Bar", "2"))); } public void testConstructor_bundle_null_valid_1() { final ComputationTargetRequirement requirement = new ComputationTargetRequirement(ComputationTargetType.NULL, (ExternalIdBundle) null); assertEquals(requirement.getType(), ComputationTargetType.NULL); assertEquals(requirement.getIdentifiers(), ExternalIdBundle.EMPTY); } public void testConstructor_bundle_null_valid_2() { final ComputationTargetRequirement requirement = new ComputationTargetRequirement(ComputationTargetType.NULL, ExternalIdBundle.EMPTY); assertEquals(requirement.getType(), ComputationTargetType.NULL); assertEquals(requirement.getIdentifiers(), ExternalIdBundle.EMPTY); } @Test(expectedExceptions = {IllegalArgumentException.class }) public void testConstructor_bundle_null_invalid_1() { new ComputationTargetRequirement(ComputationTargetType.SECURITY, (ExternalIdBundle) null); } @Test(expectedExceptions = {IllegalArgumentException.class }) public void testConstructor_bundle_null_invalid_2() { new ComputationTargetRequirement(ComputationTargetType.NULL, ExternalIdBundle.of(ExternalId.of("Foo", "1"), ExternalId.of("Bar", "2"))); } public void testGetRequirement() { final ComputationTargetReference a = new ComputationTargetRequirement(ComputationTargetType.NULL, ExternalIdBundle.EMPTY); assertEquals(a.getRequirement(), a); } @Test(expectedExceptions = {IllegalStateException.class }) public void testGetSpecification() { final ComputationTargetReference a = new ComputationTargetRequirement(ComputationTargetType.NULL, ExternalIdBundle.EMPTY); a.getSpecification(); } public void testContaining_id() { final ComputationTargetReference ref = new ComputationTargetRequirement(ComputationTargetType.SECURITY, ExternalId.of("Foo", "Bar")); final ComputationTargetReference underlying = ref.containing(ComputationTargetType.SECURITY, ExternalId.of("Foo", "Underlying")); assertEquals(underlying.getParent(), ref); assertEquals(underlying.getType(), ComputationTargetType.SECURITY.containing(ComputationTargetType.SECURITY)); } public void testContaining_uid() { final ComputationTargetReference ref = new ComputationTargetRequirement(ComputationTargetType.SECURITY, ExternalId.of("Foo", "Bar")); final ComputationTargetReference underlying = ref.containing(ComputationTargetType.SECURITY, UniqueId.of("Foo", "Underlying")); assertEquals(underlying.getParent(), ref); assertEquals(underlying.getType(), ComputationTargetType.SECURITY.containing(ComputationTargetType.SECURITY)); } }