/**
* Copyright (C) 2009 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.masterdb.security;
import static org.testng.AssertJUnit.fail;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.mapping.FudgeSerializer;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.testng.annotations.Test;
import com.opengamma.core.security.Security;
import com.opengamma.master.security.ManageableSecurity;
import com.opengamma.util.fudgemsg.OpenGammaFudgeContext;
import com.opengamma.util.test.TestGroup;
/**
* Test the Fudge encoding of securities.
*/
@Test(groups = TestGroup.UNIT)
public class FudgeSecurityEncodingTest extends SecurityTestCase {
/** Logger. */
private static final Logger s_logger = LoggerFactory.getLogger(FudgeSecurityEncodingTest.class);
/**
* The Fudge context.
*/
private static final FudgeContext s_fudgeContext = OpenGammaFudgeContext.getInstance();
@Override
protected <T extends ManageableSecurity> void assertSecurity(Class<T> securityClass, T security) {
final FudgeSerializer serializer = new FudgeSerializer(s_fudgeContext);
FudgeMsg msg = serializer.objectToFudgeMsg(security);
s_logger.debug("Security {}", security);
s_logger.debug("Encoded to {}", msg);
final byte[] bytes = s_fudgeContext.toByteArray(msg);
msg = s_fudgeContext.deserialize(bytes).getMessage();
s_logger.debug("Serialised to to {}", msg);
final Security decoded = s_fudgeContext.fromFudgeMsg(securityClass, msg);
s_logger.debug("Decoded to {}", decoded);
if (!security.equals(decoded)) {
s_logger.warn("Expected {}", security);
s_logger.warn("Received {}", decoded);
fail();
}
}
}