/*
* Copyright 2013 Cameron Beccario
*
* 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 net.nullschool.grains.msgpack;
import net.nullschool.collect.basic.BasicToolsTest;
import net.nullschool.grains.generate.model.*;
import org.junit.Test;
import org.msgpack.MessagePack;
import java.io.IOException;
import static net.nullschool.collect.basic.BasicCollections.*;
import static org.junit.Assert.*;
import static net.nullschool.grains.msgpack.MessagePackTools.*;
import static net.nullschool.grains.generate.model.CompleteTest.*;
/**
* 2013-06-06<p/>
*
* @author Cameron Beccario
*/
public class MessagePackTest {
@Test
public void test_complete_serialization() throws IOException {
CompleteGrain expected = newCompleteBuilderWithSampleValues().build();
assertEquals(28, expected.size());
MessagePack msgpack = newGrainsMessagePack();
byte[] data = msgpack.write(expected);
CompleteGrain actual = newGrainsMessagePack().read(data, CompleteGrain.class);
assertEquals(
"de01ba1ac3a1b1a1c2a1d2a1e3a1f1a1gca?8000a1hcbbff0000000a1ia210a1jaa1ka5helloa1l92cf1bd31dfeda2C9" +
"5d3a2a7Qbd581e3aba1mb5http://nullschool.neta1o1a1p81a2id1a1q9212a1r9281a2id181a2id2a1s9223a1" +
"t9281a2id281a2id3a1u92a1aa1ba1v9281a2id481a2id5a1w82a1a1a1b2a1x82a1a81a2id6a1b81a2id7a1y92a1" +
"xa1ya1z82181a2id8281a2id9a2za81a1a919281a2id181a2id2a2zb9292a1aa1b92a1ca1d",
BasicToolsTest.asReadableString(data));
assertEquals(expected, actual);
assertEquals(
BasicToolsTest.asTypeHierarchy(expected),
BasicToolsTest.asTypeHierarchy(actual));
}
@Test
public void test_sparse_serialization() throws IOException {
CompleteGrain expected = CompleteFactory.defaultValue();
MessagePack msgpack = newGrainsMessagePack();
byte[] data = msgpack.write(expected);
CompleteGrain actual = newGrainsMessagePack().read(data, CompleteGrain.class);
assertEquals("80", BasicToolsTest.asReadableString(data));
assertEquals(expected, actual);
assertEquals(
BasicToolsTest.asTypeHierarchy(expected),
BasicToolsTest.asTypeHierarchy(actual));
}
@Test
public void test_extension_serialization() throws IOException {
NodeGrain expected = NodeFactory.newBuilder().setId(10).build();
expected = expected.with("x", 1);
expected = expected.with("y", 2);
expected = expected.with("z", null); // expected that this extension key will be dropped
expected = expected.with("extra", mapOf("a", 1, "b", 2));
MessagePack msgpack = newGrainsMessagePack();
byte[] data = msgpack.write(expected);
NodeGrain actual = newGrainsMessagePack().read(data, NodeGrain.class);
assertEquals("84a2idaa5extra82a1a1a1b2a1x1a1y2", BasicToolsTest.asReadableString(data));
expected = expected.without("z");
assertEquals(expected, actual);
assertEquals(
BasicToolsTest.asTypeHierarchy(expected),
BasicToolsTest.asTypeHierarchy(actual));
}
}