/**
* Copyright (C) 2009 - present by OpenGamma Inc. and other contributors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.opengamma.web.json;
import java.io.StringReader;
import java.io.StringWriter;
import java.util.HashMap;
import java.util.Map;
import org.fudgemsg.FudgeContext;
import org.fudgemsg.FudgeMsg;
import org.fudgemsg.taxonomy.FudgeTaxonomy;
import org.fudgemsg.taxonomy.ImmutableMapTaxonomyResolver;
import org.fudgemsg.taxonomy.MapFudgeTaxonomy;
import org.fudgemsg.test.FudgeUtils;
import org.testng.AssertJUnit;
import org.testng.annotations.Test;
import com.opengamma.util.test.TestGroup;
/**
* Test Fudge JSON.
*/
@Test(groups = TestGroup.UNIT)
public class FudgeJSONTest {
private final FudgeContext _fudgeContext;
private static FudgeTaxonomy getTaxonomy() {
return new MapFudgeTaxonomy (
new int[] { 1, 2, 3, 4, 5, 6 },
new String[] { "boolean", "byte", "int", "string", "float", "double" }
);
}
/**
*
*/
public FudgeJSONTest() {
_fudgeContext = new FudgeContext();
final Map<Short,FudgeTaxonomy> tr = new HashMap<Short,FudgeTaxonomy>();
tr.put ((short)1, getTaxonomy());
_fudgeContext.setTaxonomyResolver (new ImmutableMapTaxonomyResolver(tr));
}
private FudgeMsg[] createMessages() {
return new FudgeMsg[] {
StandardFudgeMessages.createMessageAllNames(_fudgeContext),
StandardFudgeMessages.createMessageAllOrdinals(_fudgeContext),
StandardFudgeMessages.createMessageWithSubMsgs(_fudgeContext),
StandardFudgeMessages.createMessageAllByteArrayLengths(_fudgeContext) };
}
/**
*
*/
@Test
public void cycleJSONMessages_noTaxonomy() {
// System.out.println("cycleJSONMessages:");
final FudgeMsg[] messages = createMessages();
for (int i = 0; i < messages.length; i++) {
final StringWriter sw = new StringWriter();
try (final FudgeMsgJSONWriter fmw = new FudgeMsgJSONWriter(_fudgeContext, sw)) {
fmw.writeMessage (messages[i], 0);
// System.out.println(messages[i]);
// System.out.println(sw.toString());
final StringReader sr = new StringReader(sw.toString());
final FudgeMsgJSONReader fmr = new FudgeMsgJSONReader(_fudgeContext, sr);
FudgeMsg message = fmr.readMessage();
AssertJUnit.assertNotNull(message);
// System.out.println (message);
FudgeUtils.assertAllFieldsMatch(messages[i], message, false);
}
}
}
// /**
// *
// */
// @Test
// public void cycleJSONMessages_withTaxonomy() {
// System.out.println("cycleJSONMessages:");
//
// final FudgeMsg[] messages = createMessages();
// for (int i = 0; i < messages.length; i++) {
//
// final StringWriter sw = new StringWriter();
// final FudgeMsgJSONWriter fmw = new FudgeMsgJSONWriter(_fudgeContext, sw);
// fmw.writeMessage (messages[i], 1);
// System.out.println(messages[i]);
// System.out.println(sw.toString());
// final StringReader sr = new StringReader(sw.toString());
// final FudgeMsgJSONReader fmr = new FudgeMsgJSONReader(_fudgeContext, sr);
// FudgeMsg message = fmr.readMessage();
// AssertJUnit.assertNotNull(message);
// System.out.println (message);
// FudgeUtils.assertAllFieldsMatch(messages[i], message, false);
// }
// }
}