holopy3/Assets/UniGLTF/UniJSON/Editor/Tests/MsgPack/MapTest.cs

120 lines
2.7 KiB
C#
Raw Permalink Normal View History

2021-01-28 12:07:52 +00:00
using NUnit.Framework;
using System;
using System.IO;
using System.Linq;
namespace UniJSON.MsgPack
{
[TestFixture]
public class MapTest
{
[Test]
public void fix_map()
{
var bytes = new MsgPackFormatter()
.BeginMap(2)
.Key("0").Value(1)
.Key("2").Value(3)
.EndMap()
.GetStore().Bytes;
;
Assert.AreEqual(new Byte[]{
0x82, // map2
0xa1, 0x30, // "0"
0x01, // 1
0xa1, 0x32, // "2"
0x03 // 3
}, bytes.ToEnumerable());
var value = MsgPackParser.Parse(bytes);
Assert.AreEqual(2, value.Count);
Assert.AreEqual(1, value["0"].GetValue());
Assert.AreEqual(3, value["2"].GetValue());
}
[Test]
public void map16()
{
var w = new MsgPackFormatter();
int size = 18;
w.BeginMap(size);
for (int i = 0; i < size; ++i)
{
w.Value(i.ToString());
w.Value(i + 5);
}
var bytes = w.GetStore().Bytes.ToEnumerable().ToArray();
var expected = new Byte[]{
0xde, // map18
0x0, 0x12, // 18
0xa1, 0x30, // "0"
0x5,
0xa1, 0x31, // "1"
0x6,
0xa1, 0x32, // "2"
0x7,
0xa1, 0x33, // "3"
0x8,
0xa1, 0x34, // "4"
0x9,
0xa1, 0x35, // "5"
0xa,
0xa1, 0x36, // "6"
0xb,
0xa1, 0x37, // "7"
0xc,
0xa1, 0x38, // "8"
0xd,
0xa1, 0x39, // "9"
0xe,
0xa2, 0x31, 0x30, // "10"
0xf,
0xa2, 0x31, 0x31, // "11"
0x10,
0xa2, 0x31, 0x32, // "12"
0x11,
0xa2, 0x31, 0x33, // "13"
0x12,
0xa2, 0x31, 0x34, // "14"
0x13,
0xa2, 0x31, 0x35, // "15"
0x14,
0xa2, 0x31, 0x36, // "16"
0x15,
0xa2, 0x31, 0x37, // "17",
0x16
};
Assert.AreEqual(expected, bytes);
var value = MsgPackParser.Parse(bytes);
Assert.AreEqual(15, value["10"].GetValue());
}
}
}