/**
* Copyright (C) 2013 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.engine.function.config;
import static org.testng.Assert.assertEquals;
import static org.testng.Assert.assertSame;
import java.util.Collections;
import org.mockito.Mockito;
import org.testng.annotations.Test;
import org.threeten.bp.Instant;
import com.opengamma.core.change.ChangeListener;
import com.opengamma.core.change.ChangeManager;
import com.opengamma.core.change.DummyChangeManager;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link CombiningFunctionConfigurationSource} class
*/
@Test(groups = TestGroup.UNIT)
public class CombiningFunctionConfigurationSourceTest {
public void testOfNullAndEmpty() {
final FunctionConfigurationBundle empty = new FunctionConfigurationBundle();
assertEquals(CombiningFunctionConfigurationSource.of().getFunctionConfiguration(Instant.now()), empty);
assertEquals(CombiningFunctionConfigurationSource.of((FunctionConfigurationSource[]) null).getFunctionConfiguration(Instant.now()), empty);
assertEquals(CombiningFunctionConfigurationSource.of((FunctionConfigurationSource) null).getFunctionConfiguration(Instant.now()), empty);
assertEquals(CombiningFunctionConfigurationSource.of(null, null).getFunctionConfiguration(Instant.now()), empty);
}
public void testOfSingleton() {
final FunctionConfigurationBundle foo = new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Foo")));
final FunctionConfigurationSource source = new SimpleFunctionConfigurationSource(foo);
assertEquals(CombiningFunctionConfigurationSource.of(null, source, null), source);
}
public void testOfExpanded() {
final FunctionConfigurationBundle foo = new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Foo")));
final FunctionConfigurationBundle bar = new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Bar")));
final FunctionConfigurationBundle cow = new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Cow")));
final FunctionConfigurationSource foobar = CombiningFunctionConfigurationSource.of(new SimpleFunctionConfigurationSource(foo), new SimpleFunctionConfigurationSource(bar));
assertEquals(foobar.getFunctionConfiguration(Instant.now()).getFunctions().size(), 2);
assertEquals(((CombiningFunctionConfigurationSource) foobar).getSources().length, 2);
final FunctionConfigurationSource all = CombiningFunctionConfigurationSource.of(foobar, new SimpleFunctionConfigurationSource(cow));
assertEquals(all.getFunctionConfiguration(Instant.now()).getFunctions().size(), 3);
assertEquals(((CombiningFunctionConfigurationSource) all).getSources().length, 3);
}
public void testGetFunctions() {
final FunctionConfigurationSource foo = Mockito.mock(FunctionConfigurationSource.class);
final FunctionConfigurationSource bar = Mockito.mock(FunctionConfigurationSource.class);
final Instant t = Instant.now();
Mockito.when(foo.getFunctionConfiguration(t)).thenReturn(new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Foo"))));
Mockito.when(bar.getFunctionConfiguration(t)).thenReturn(new FunctionConfigurationBundle(Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Bar"))));
assertEquals(CombiningFunctionConfigurationSource.of(foo, bar).getFunctionConfiguration(t).getFunctions().size(), 2);
}
public void testChangeManager() {
final FunctionConfigurationSource foo = Mockito.mock(FunctionConfigurationSource.class);
final FunctionConfigurationSource bar = new SimpleFunctionConfigurationSource(new FunctionConfigurationBundle(
Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Bar"))));
final ChangeManager fooCM = Mockito.mock(ChangeManager.class);
Mockito.when(foo.changeManager()).thenReturn(fooCM);
final ChangeManager cm = CombiningFunctionConfigurationSource.of(foo, bar).changeManager();
final ChangeListener cl = Mockito.mock(ChangeListener.class);
cm.addChangeListener(cl);
Mockito.verify(fooCM).addChangeListener(cl);
cm.removeChangeListener(cl);
Mockito.verify(fooCM).removeChangeListener(cl);
}
public void testChangeManager_dummy() {
final FunctionConfigurationSource foo = new SimpleFunctionConfigurationSource(new FunctionConfigurationBundle(
Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Foo"))));
final FunctionConfigurationSource bar = new SimpleFunctionConfigurationSource(new FunctionConfigurationBundle(
Collections.<FunctionConfiguration>singleton(new StaticFunctionConfiguration("Bar"))));
final ChangeManager cm = CombiningFunctionConfigurationSource.of(foo, bar).changeManager();
assertSame(cm, DummyChangeManager.INSTANCE);
}
}