mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-02-13 11:44:57 +00:00
Implementing JsonUtils tests
This commit is contained in:
@@ -1,4 +1,8 @@
|
||||
using NUnit.Framework;
|
||||
using ICD.Common.Utils.Extensions;
|
||||
using ICD.Common.Utils.IO;
|
||||
using ICD.Common.Utils.Json;
|
||||
using Newtonsoft.Json;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace ICD.Common.Utils.Tests.Json
|
||||
{
|
||||
@@ -32,19 +36,156 @@ namespace ICD.Common.Utils.Tests.Json
|
||||
[Test]
|
||||
public void SerializeTest()
|
||||
{
|
||||
Assert.Inconclusive();
|
||||
TestSerializable serializable = new TestSerializable {Test = 100};
|
||||
string json = JsonUtils.Serialize(w => serializable.Serialize(w));
|
||||
|
||||
using (JsonTextReader reader = new JsonTextReader(new IcdStringReader(json).WrappedStringReader))
|
||||
{
|
||||
int test = 0;
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.TokenType == JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
break;
|
||||
}
|
||||
|
||||
if (reader.TokenType != JsonToken.PropertyName)
|
||||
continue;
|
||||
|
||||
string property = reader.Value as string;
|
||||
|
||||
// Read to the value
|
||||
reader.Read();
|
||||
|
||||
switch (property)
|
||||
{
|
||||
case "Test":
|
||||
test = reader.GetValueAsInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Assert.AreEqual(100, test);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeserializeTest()
|
||||
{
|
||||
Assert.Inconclusive();
|
||||
const string json = "{\"Test\":100}";
|
||||
TestSerializable serializable = JsonUtils.Deserialize(r => TestSerializable.Deserialize(r), json);
|
||||
|
||||
Assert.AreEqual(100, serializable.Test);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SerializeMessageTest()
|
||||
{
|
||||
Assert.Inconclusive();
|
||||
TestSerializable serializable = new TestSerializable {Test = 100};
|
||||
string json = JsonUtils.SerializeMessage(w => serializable.Serialize(w), "test message");
|
||||
|
||||
using (JsonTextReader reader = new JsonTextReader(new IcdStringReader(json).WrappedStringReader))
|
||||
{
|
||||
int test = 0;
|
||||
string messageName = null;
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.TokenType == JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
break;
|
||||
}
|
||||
|
||||
if (reader.TokenType != JsonToken.PropertyName)
|
||||
continue;
|
||||
|
||||
string property = reader.Value as string;
|
||||
|
||||
// Read to the value
|
||||
reader.Read();
|
||||
|
||||
switch (property)
|
||||
{
|
||||
case "Test":
|
||||
test = reader.GetValueAsInt();
|
||||
break;
|
||||
|
||||
case "m":
|
||||
messageName = reader.GetValueAsString();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
Assert.AreEqual(100, test);
|
||||
Assert.AreEqual("test message", messageName);
|
||||
}
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DeserializeMessageTest()
|
||||
{
|
||||
const string json = "{\"m\":\"test message\",\"d\":{\"Test\":100}}";
|
||||
string messageName = null;
|
||||
TestSerializable serializable = JsonUtils.DeserializeMessage((r, m) =>
|
||||
{
|
||||
messageName = m;
|
||||
return TestSerializable.Deserialize(r);
|
||||
},
|
||||
json);
|
||||
|
||||
Assert.AreEqual(100, serializable.Test);
|
||||
Assert.AreEqual("test message", messageName);
|
||||
}
|
||||
|
||||
public sealed class TestSerializable
|
||||
{
|
||||
private const string PROPERTY_NAME = "Test";
|
||||
|
||||
public int Test { get; set; }
|
||||
|
||||
public void Serialize(JsonWriter writer)
|
||||
{
|
||||
writer.WriteStartObject();
|
||||
{
|
||||
writer.WritePropertyName(PROPERTY_NAME);
|
||||
writer.WriteValue(Test);
|
||||
}
|
||||
writer.WriteEndObject();
|
||||
}
|
||||
|
||||
public static TestSerializable Deserialize(JsonReader reader)
|
||||
{
|
||||
int test = 0;
|
||||
|
||||
while (reader.Read())
|
||||
{
|
||||
if (reader.TokenType == JsonToken.EndObject)
|
||||
{
|
||||
reader.Read();
|
||||
break;
|
||||
}
|
||||
|
||||
if (reader.TokenType != JsonToken.PropertyName)
|
||||
continue;
|
||||
|
||||
string property = reader.Value as string;
|
||||
|
||||
// Read to the value
|
||||
reader.Read();
|
||||
|
||||
switch (property)
|
||||
{
|
||||
case PROPERTY_NAME:
|
||||
test = reader.GetValueAsInt();
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return new TestSerializable {Test = test};
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user