ln.json/ln.json.tests/JSONTests.cs

111 lines
2.8 KiB
C#

using System;
using ln.json.mapping;
using NUnit.Framework;
namespace ln.json.tests
{
public class JSONTests
{
enum testEnum1 { A, B, C, D, E, F }
enum testEnum2 : ushort {
NONE = 0,
A = 1,
B = 2,
C = 4,
D = 5,
E = 6
}
[Flags]
enum testEnum3 : ushort {
NONE = 0,
A = 1,
B = 2,
C = 4,
D = 5,
E = 6
}
[SetUp]
public void Setup()
{
}
[Test]
public void Test_00_Primitives()
{
JSONValue jsonFloat = JSONParser.Parse("1234.564");
Assert.IsTrue(jsonFloat is JSONNumber);
Assert.AreEqual(1234.564, jsonFloat.ToNative());
JSONValue jsonInteger = JSONParser.Parse("635462");
Assert.IsTrue(jsonFloat is JSONNumber);
Assert.AreEqual(635462, jsonInteger.ToNative());
Assert.Pass();
}
[Test]
public void TestArrayParser()
{
JSONParser.Parse("[]");
JSONParser.Parse("[ ]");
JSONParser.Parse("[\t]");
}
[Test]
public void TestObjectParser()
{
JSONParser.Parse("{}");
JSONParser.Parse("{ }");
JSONParser.Parse("{\t}");
}
[Test]
public void TestEnumMappings()
{
TestEnumSerialization(testEnum1.A);
TestEnumSerialization(testEnum1.B);
TestEnumSerialization(testEnum1.C);
TestEnumSerialization(testEnum1.D);
TestEnumSerialization(testEnum1.E);
TestEnumSerialization(testEnum1.F);
TestEnumSerialization(testEnum2.NONE);
TestEnumSerialization(testEnum2.A);
TestEnumSerialization(testEnum2.B);
TestEnumSerialization(testEnum2.C);
TestEnumSerialization(testEnum2.D);
TestEnumSerialization(testEnum2.E);
TestEnumSerialization(testEnum3.NONE);
TestEnumSerialization(testEnum3.A);
TestEnumSerialization(testEnum3.B);
TestEnumSerialization(testEnum3.C);
TestEnumSerialization(testEnum3.D);
TestEnumSerialization(testEnum3.E);
}
bool TestEnumSerialization(object enumValue)
{
Type enumType = enumValue.GetType();
Assert.IsTrue(JSONMapper.DefaultMapper.Serialize(enumValue, out JSONValue jsonEnum));
JSONMapper.DefaultMapper.Deserialize(jsonEnum, enumType, out object enunValueDeserialized);
Assert.AreEqual(enumType, enunValueDeserialized.GetType());
Assert.AreEqual(enumValue, enunValueDeserialized);
return true;
}
}
}