/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.graph;
import static org.testng.AssertJUnit.assertEquals;
import static org.testng.AssertJUnit.assertTrue;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test.
*/
@Test(groups = TestGroup.UNIT)
public class CompositeNodeDecoratorTest {
private static final NodeDecorator NODE_DECORATOR = new NodeDecorator() {
@Override
public FunctionModelNode decorateNode(FunctionModelNode node) {
return node;
}
};
@Test
public void compose_array_empty() {
NodeDecorator composed = CompositeNodeDecorator.compose(new NodeDecorator[0]);
assertEquals(NodeDecorator.IDENTITY, composed);
}
@Test
public void compose_array_one() {
NodeDecorator composed = CompositeNodeDecorator.compose(new NodeDecorator[] {NODE_DECORATOR});
assertEquals(NODE_DECORATOR, composed);
}
@Test
public void compose_array_two() {
final List<NodeDecorator> list = new ArrayList<>();
NodeDecorator nd1 = new NodeDecorator() {
@Override
public FunctionModelNode decorateNode(FunctionModelNode node) {
list.add(this);
return node;
}
};
NodeDecorator nd2 = new NodeDecorator() {
@Override
public FunctionModelNode decorateNode(FunctionModelNode node) {
list.add(this);
return node;
}
};
NodeDecorator composed = CompositeNodeDecorator.compose(new NodeDecorator[] {nd1, nd2});
assertTrue(composed instanceof CompositeNodeDecorator);
composed.decorateNode(null);
assertEquals(2, list.size());
assertEquals(nd2, list.get(0));
assertEquals(nd1, list.get(1));
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void compose_array_null() {
CompositeNodeDecorator.compose((NodeDecorator[]) null);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void compose_array_nullEntry() {
CompositeNodeDecorator.compose(new NodeDecorator[] {null});
}
//-------------------------------------------------------------------------
@Test
public void compose_list_empty() {
NodeDecorator composed = CompositeNodeDecorator.compose(new ArrayList<NodeDecorator>());
assertEquals(NodeDecorator.IDENTITY, composed);
}
@Test
public void compose_list_one() {
NodeDecorator composed = CompositeNodeDecorator.compose(Arrays.asList(NODE_DECORATOR));
assertEquals(NODE_DECORATOR, composed);
}
@Test
public void compose_list_two() {
final List<NodeDecorator> list = new ArrayList<>();
NodeDecorator nd1 = new NodeDecorator() {
@Override
public FunctionModelNode decorateNode(FunctionModelNode node) {
list.add(this);
return node;
}
};
NodeDecorator nd2 = new NodeDecorator() {
@Override
public FunctionModelNode decorateNode(FunctionModelNode node) {
list.add(this);
return node;
}
};
NodeDecorator composed = CompositeNodeDecorator.compose(Arrays.asList(nd1, nd2));
assertTrue(composed instanceof CompositeNodeDecorator);
composed.decorateNode(null);
assertEquals(2, list.size());
assertEquals(nd2, list.get(0));
assertEquals(nd1, list.get(1));
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void compose_list_null() {
CompositeNodeDecorator.compose((List<NodeDecorator>) null);
}
@Test(expectedExceptions = IllegalArgumentException.class)
public void compose_list_nullEntry() {
CompositeNodeDecorator.compose(Arrays.asList((NodeDecorator) null));
}
}