/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.integration.marketdata.manipulator.dsl;
import static org.testng.AssertJUnit.assertEquals;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.testng.annotations.Test;
import com.google.common.collect.ImmutableList;
import com.opengamma.util.test.TestGroup;
@Test(groups = TestGroup.UNIT)
public class ShocksDelegateTest {
private static final String FOO = "foo";
private static final String BAR = "bar";
@Test
public void list() {
ShocksDelegate delegate = new ShocksDelegate();
delegate.setProperty(FOO, ImmutableList.of(1, 2, 3));
delegate.setProperty(BAR, ImmutableList.of("a", "b", "c"));
List<Map<String,Object>> params = delegate.list();
assertEquals(3, params.size());
assertEquals(1, params.get(0).get(FOO));
assertEquals("a", params.get(0).get(BAR));
assertEquals(2, params.get(1).get(FOO));
assertEquals("b", params.get(1).get(BAR));
assertEquals(3, params.get(2).get(FOO));
assertEquals("c", params.get(2).get(BAR));
}
@Test
public void listKeyOrder() {
ShocksDelegate delegate1 = new ShocksDelegate();
delegate1.setProperty(FOO, ImmutableList.of(1, 2, 3));
delegate1.setProperty(BAR, ImmutableList.of("a", "b", "c"));
List<Map<String,Object>> params1 = delegate1.list();
assertEquals(3, params1.size());
Iterator<Map.Entry<String, Object>> itr1 = params1.get(0).entrySet().iterator();
assertEquals(FOO, itr1.next().getKey());
assertEquals(BAR, itr1.next().getKey());
ShocksDelegate delegate2 = new ShocksDelegate();
delegate2.setProperty(BAR, ImmutableList.of("a", "b", "c"));
delegate2.setProperty(FOO, ImmutableList.of(1, 2, 3));
List<Map<String,Object>> params2 = delegate2.list();
assertEquals(3, params2.size());
Iterator<Map.Entry<String, Object>> itr2 = params2.get(0).entrySet().iterator();
assertEquals(BAR, itr2.next().getKey());
assertEquals(FOO, itr2.next().getKey());
}
@Test
public void cartesianProduct() {
ShocksDelegate delegate = new ShocksDelegate();
delegate.setProperty(FOO, ImmutableList.of(1, 2));
delegate.setProperty(BAR, ImmutableList.of("a", "b"));
List<Map<String,Object>> params = delegate.cartesianProduct();
assertEquals(4, params.size());
assertEquals(1, params.get(0).get(FOO));
assertEquals("a", params.get(0).get(BAR));
assertEquals(1, params.get(1).get(FOO));
assertEquals("b", params.get(1).get(BAR));
assertEquals(2, params.get(2).get(FOO));
assertEquals("a", params.get(2).get(BAR));
assertEquals(2, params.get(3).get(FOO));
assertEquals("b", params.get(3).get(BAR));
}
@Test
public void cartesianProductKeyOrder() {
ShocksDelegate delegate1 = new ShocksDelegate();
delegate1.setProperty(FOO, ImmutableList.of(1, 2, 3));
delegate1.setProperty(BAR, ImmutableList.of("a", "b", "c"));
List<Map<String,Object>> params1 = delegate1.cartesianProduct();
assertEquals(9, params1.size());
Iterator<Map.Entry<String, Object>> itr1 = params1.get(0).entrySet().iterator();
assertEquals(FOO, itr1.next().getKey());
assertEquals(BAR, itr1.next().getKey());
ShocksDelegate delegate2 = new ShocksDelegate();
delegate2.setProperty(BAR, ImmutableList.of("a", "b", "c"));
delegate2.setProperty(FOO, ImmutableList.of(1, 2, 3));
List<Map<String,Object>> params2 = delegate2.cartesianProduct();
assertEquals(9, params2.size());
Iterator<Map.Entry<String, Object>> itr2 = params2.get(0).entrySet().iterator();
assertEquals(BAR, itr2.next().getKey());
assertEquals(FOO, itr2.next().getKey());
}
}