/**
* Copyright (C) 2012 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.core.config.impl;
import static org.testng.Assert.assertEquals;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Tests the {@link ConfigItem} class.
*/
@Test(groups = TestGroup.UNIT)
public class ConfigItemTest {
public static final class TestDocument {
private int _foo;
public void setFoo(final int foo) {
_foo = foo;
}
public int getFoo() {
return _foo;
}
@Override
public String toString() {
return "ConfigDocument[" + _foo + "]";
}
@Override
public boolean equals(final Object o) {
return ((o instanceof TestDocument) && (((TestDocument) o)._foo == _foo));
}
}
@SuppressWarnings("rawtypes")
public void testJavaSerialization() throws Exception {
final ByteArrayOutputStream baos = new ByteArrayOutputStream();
final ObjectOutputStream out = new ObjectOutputStream(baos);
final TestDocument d1 = new TestDocument();
d1.setFoo(42);
final ConfigItem<?> item1 = ConfigItem.of(d1, "SerializationTest1", TestDocument.class);
final TestDocument d2 = new TestDocument();
d2.setFoo(96);
final ConfigItem<?> item2 = ConfigItem.of(d2, "SerializationTest2", TestDocument.class);
out.writeObject(item1);
out.writeObject(item2);
out.flush();
final ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
final ObjectInputStream in = new ObjectInputStream(bais);
ConfigItem item = (ConfigItem) in.readObject();
assertEquals(item.getType(), TestDocument.class);
assertEquals(item.getName(), "SerializationTest1");
assertEquals(item.getValue(), d1);
assertEquals(item, item1);
item = (ConfigItem) in.readObject();
assertEquals(item.getType(), TestDocument.class);
assertEquals(item.getName(), "SerializationTest2");
assertEquals(item.getValue(), d2);
assertEquals(item, item2);
}
}