/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.util.fudgemsg.tuple;
import static org.testng.Assert.assertEquals;
import org.fudgemsg.FudgeMsg;
import org.testng.annotations.Test;
import org.threeten.bp.LocalDate;
import com.opengamma.id.ExternalId;
import com.opengamma.id.ExternalIdBundle;
import com.opengamma.id.UniqueId;
import com.opengamma.util.test.AbstractFudgeBuilderTestCase;
import com.opengamma.util.test.TestGroup;
import com.opengamma.util.time.Tenor;
import com.opengamma.util.tuple.DoublesPair;
import com.opengamma.util.tuple.IntDoublePair;
import com.opengamma.util.tuple.IntObjectPair;
import com.opengamma.util.tuple.LongDoublePair;
import com.opengamma.util.tuple.LongObjectPair;
import com.opengamma.util.tuple.ObjectsPair;
import com.opengamma.util.tuple.Pair;
/**
* Test Fudge encoding.
*/
@Test(groups = TestGroup.UNIT)
public class PairFudgeEncodingTest extends AbstractFudgeBuilderTestCase {
public void test_OO_Bundle() {
Pair<String, ExternalIdBundle> object = ObjectsPair.of("Hello", ExternalIdBundle.of(ExternalId.of("A", "B")));
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_OO_UniqueId() {
Pair<String, UniqueId> object = ObjectsPair.of("Hello", UniqueId.of("A", "B"));
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_OO_null() {
Pair<String, UniqueId> object = ObjectsPair.of("Hello", null);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_LO() {
Pair<Long, UniqueId> object = LongObjectPair.of(23L, UniqueId.of("A", "B"));
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_LD() {
Pair<Long, Double> object = LongDoublePair.of(23L, 4.5d);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_IO() {
Pair<Integer, UniqueId> object = IntObjectPair.of(23, UniqueId.of("A", "B"));
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_ID() {
Pair<Integer, Double> object = IntDoublePair.of(23, 4.5d);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_DD() {
Pair<Double, Double> object = DoublesPair.of(23.2, 4.5d);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_TypeWithSecondaryTypeAndBuilderEncoding() {
Pair<Tenor, Tenor> object = ObjectsPair.of(Tenor.DAY, Tenor.TWELVE_MONTHS);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_staticTypedMethods() {
ObjectsPair<Tenor, Tenor> in = ObjectsPair.of(Tenor.DAY, Tenor.TEN_YEARS);
FudgeMsg msg = ObjectsPairFudgeBuilder.buildMessage(getFudgeSerializer(), in, Tenor.class, Tenor.class);
ObjectsPair<Tenor, Tenor> out = ObjectsPairFudgeBuilder.buildObject(getFudgeDeserializer(), msg, Tenor.class, Tenor.class);
assertEquals(out, in);
msg = cycleMessage(msg);
out = ObjectsPairFudgeBuilder.buildObject(getFudgeDeserializer(), msg, Tenor.class, Tenor.class);
assertEquals(out, in);
}
public void test_TypeWithSecondaryTypeAndReducedNumber() {
ObjectsPair<LocalDate, Long> object = ObjectsPair.of(LocalDate.of(2011, 6, 30), 6L);
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_nullFirst() {
ObjectsPair<String, String> object = ObjectsPair.of(null, "B");
assertEncodeDecodeCycle(Pair.class, object);
}
public void test_nullSecond() {
ObjectsPair<String, String> object = ObjectsPair.of("A", null);
assertEncodeDecodeCycle(Pair.class, object);
}
}