Skip to content

Commit

Permalink
Merge pull request #104 from hadashiA/ku/more-builtin-formatters
Browse files Browse the repository at this point in the history
Add to support some builtin types
  • Loading branch information
hadashiA authored Apr 26, 2024
2 parents 1eddcf3 + 6880ee2 commit 695d34c
Show file tree
Hide file tree
Showing 38 changed files with 1,581 additions and 59 deletions.
8 changes: 4 additions & 4 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,13 @@ These types can be serialized by default:

- .NET primitives (`byte`, `int`, `bool`, `char`, `double`, etc.)
- Any enum (Currently, only simple string representation)
- `string`, `decimal`, `Half`
- `string`, `decimal`, `Half`, `BigInteger`, `Complex`
- `TimeSpan`, `DateTime`, `DateTimeOffset`
- `Guid`, `Uri`
- `Guid`, `Uri`, `Version`, `Type`
- `byte[]` as base64 string
- `T[]`
- `T[]`, `T[,]`, `T[,,]`, `T[,,]`, `BitArray`
- `Nullable<>`, `KeyValuePair<,>`, `Tuple<,...>`, `ValueTuple<,...>`
- `List<>`
- `List<>`, `Stack<>`, `Queue<>`, `LinkedList<>`
- `Dictionary<,>`
- `IEnumerable<>`, `ICollection<>`, `IList<>`, `IReadOnlyCollection<>`, `IReadOnlyList<>`
- `IDictionary<,>`, `IReadOnlyDictionary<,>`
Expand Down
98 changes: 98 additions & 0 deletions VYaml.Tests/MultiDimentionalArrayFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
using NUnit.Framework;
using VYaml.Tests.Serialization;

namespace VYaml.Tests
{
[TestFixture]
public class MultiDimentionalArrayFormatterTest : FormatterTestBase
{
[Test]
public void TwoDimention()
{
var value = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
var serialized = Serialize(value);
Assert.That(serialized, Is.EqualTo(
"- \n" +
" - 1\n" +
" - 2\n" +
" - 3\n" +
"- \n" +
" - 4\n" +
" - 5\n" +
" - 6\n"));

var deserialized = Deserialize<int[,]>(serialized);
Assert.That(deserialized.GetLength(0), Is.EqualTo(2));
Assert.That(deserialized.GetLength(1), Is.EqualTo(3));
Assert.That(deserialized[0, 0], Is.EqualTo(1));
Assert.That(deserialized[0, 1], Is.EqualTo(2));
Assert.That(deserialized[0, 2], Is.EqualTo(3));
Assert.That(deserialized[1, 0], Is.EqualTo(4));
Assert.That(deserialized[1, 1], Is.EqualTo(5));
Assert.That(deserialized[1, 2], Is.EqualTo(6));
}

[Test]
public void ThreeDimention()
{
var value = new int[4, 3, 2]
{
{ { 1, 2 }, { 3, 4 }, { 5, 6 } },
{ { 7, 8 }, { 9, 0 }, { 1, 2 } },
{ { 3, 4 }, { 5, 6 }, { 7, 8 } },
{ { 9, 0 }, { 1, 2 }, { 3, 4 } },
};
var serialized = Serialize(value);
Assert.That(serialized, Is.EqualTo(
"- \n" +
" - \n" +
" - 1\n" +
" - 2\n" +
" - \n" +
" - 3\n" +
" - 4\n" +
" - \n" +
" - 5\n" +
" - 6\n" +
"- \n" +
" - \n" +
" - 7\n" +
" - 8\n" +
" - \n" +
" - 9\n" +
" - 0\n" +
" - \n" +
" - 1\n" +
" - 2\n" +
"- \n" +
" - \n" +
" - 3\n" +
" - 4\n" +
" - \n" +
" - 5\n" +
" - 6\n" +
" - \n" +
" - 7\n" +
" - 8\n" +
"- \n" +
" - \n" +
" - 9\n" +
" - 0\n" +
" - \n" +
" - 1\n" +
" - 2\n" +
" - \n" +
" - 3\n" +
" - 4\n"
));

var deserialized = Deserialize<int[,,]>(serialized);
Assert.That(deserialized.GetLength(0), Is.EqualTo(4));
Assert.That(deserialized.GetLength(1), Is.EqualTo(3));
Assert.That(deserialized.GetLength(2), Is.EqualTo(2));
Assert.That(deserialized[0, 0, 0], Is.EqualTo(1));
Assert.That(deserialized[0, 1, 1], Is.EqualTo(4));
Assert.That(deserialized[2, 1, 1], Is.EqualTo(6));
}
}
}
25 changes: 25 additions & 0 deletions VYaml.Tests/QueueFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
public class QueueFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new Queue<int>();
value.Enqueue(111);
value.Enqueue(222);
value.Enqueue(333);
var serialied = Serialize(value);
Assert.That(serialied, Is.EqualTo("- 111\n- 222\n- 333\n"));

var deserialized = Deserialize<Queue<int>>(serialied);
Assert.That(deserialized.Count, Is.EqualTo(3));
Assert.That(deserialized.Dequeue(), Is.EqualTo(111));
Assert.That(deserialized.Dequeue(), Is.EqualTo(222));
Assert.That(deserialized.Dequeue(), Is.EqualTo(333));
}
}
}
24 changes: 24 additions & 0 deletions VYaml.Tests/Serialization/BitArrayFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Collections;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
[TestFixture]
public class BitArrayFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new BitArray(new[] { true, false, true, false, false });
var result = Serialize(value);
Assert.That(result, Is.EqualTo("10100"));
}

[Test]
public void Deserialize()
{
var result = Deserialize<BitArray>("111000");
Assert.That(result, Is.EquivalentTo(new BitArray(new[] { true, true, true, false, false, false })));
}
}
}
25 changes: 25 additions & 0 deletions VYaml.Tests/Serialization/StackFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
public class StackFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new Stack<int>();
value.Push(111);
value.Push(222);
value.Push(333);
var serialied = Serialize(value);
Assert.That(serialied, Is.EqualTo("- 333\n- 222\n- 111\n"));

var deserialized = Deserialize<Stack<int>>(serialied);
Assert.That(deserialized.Count, Is.EqualTo(3));
Assert.That(deserialized.Pop(), Is.EqualTo(333));
Assert.That(deserialized.Pop(), Is.EqualTo(222));
Assert.That(deserialized.Pop(), Is.EqualTo(111));
}
}
}
98 changes: 98 additions & 0 deletions VYaml.Unity/Assets/Tests/MultiDimentionalArrayFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
using NUnit.Framework;
using VYaml.Tests.Serialization;

namespace VYaml.Tests
{
[TestFixture]
public class MultiDimentionalArrayFormatterTest : FormatterTestBase
{
[Test]
public void TwoDimention()
{
var value = new int[2, 3] { { 1, 2, 3 }, { 4, 5, 6 } };
var serialized = Serialize(value);
Assert.That(serialized, Is.EqualTo(
"- \n" +
" - 1\n" +
" - 2\n" +
" - 3\n" +
"- \n" +
" - 4\n" +
" - 5\n" +
" - 6\n"));

var deserialized = Deserialize<int[,]>(serialized);
Assert.That(deserialized.GetLength(0), Is.EqualTo(2));
Assert.That(deserialized.GetLength(1), Is.EqualTo(3));
Assert.That(deserialized[0, 0], Is.EqualTo(1));
Assert.That(deserialized[0, 1], Is.EqualTo(2));
Assert.That(deserialized[0, 2], Is.EqualTo(3));
Assert.That(deserialized[1, 0], Is.EqualTo(4));
Assert.That(deserialized[1, 1], Is.EqualTo(5));
Assert.That(deserialized[1, 2], Is.EqualTo(6));
}

[Test]
public void ThreeDimention()
{
var value = new int[4, 3, 2]
{
{ { 1, 2 }, { 3, 4 }, { 5, 6 } },
{ { 7, 8 }, { 9, 0 }, { 1, 2 } },
{ { 3, 4 }, { 5, 6 }, { 7, 8 } },
{ { 9, 0 }, { 1, 2 }, { 3, 4 } },
};
var serialized = Serialize(value);
Assert.That(serialized, Is.EqualTo(
"- \n" +
" - \n" +
" - 1\n" +
" - 2\n" +
" - \n" +
" - 3\n" +
" - 4\n" +
" - \n" +
" - 5\n" +
" - 6\n" +
"- \n" +
" - \n" +
" - 7\n" +
" - 8\n" +
" - \n" +
" - 9\n" +
" - 0\n" +
" - \n" +
" - 1\n" +
" - 2\n" +
"- \n" +
" - \n" +
" - 3\n" +
" - 4\n" +
" - \n" +
" - 5\n" +
" - 6\n" +
" - \n" +
" - 7\n" +
" - 8\n" +
"- \n" +
" - \n" +
" - 9\n" +
" - 0\n" +
" - \n" +
" - 1\n" +
" - 2\n" +
" - \n" +
" - 3\n" +
" - 4\n"
));

var deserialized = Deserialize<int[,,]>(serialized);
Assert.That(deserialized.GetLength(0), Is.EqualTo(4));
Assert.That(deserialized.GetLength(1), Is.EqualTo(3));
Assert.That(deserialized.GetLength(2), Is.EqualTo(2));
Assert.That(deserialized[0, 0, 0], Is.EqualTo(1));
Assert.That(deserialized[0, 1, 1], Is.EqualTo(4));
Assert.That(deserialized[2, 1, 1], Is.EqualTo(6));
}
}
}
25 changes: 25 additions & 0 deletions VYaml.Unity/Assets/Tests/QueueFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
public class QueueFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new Queue<int>();
value.Enqueue(111);
value.Enqueue(222);
value.Enqueue(333);
var serialied = Serialize(value);
Assert.That(serialied, Is.EqualTo("- 111\n- 222\n- 333\n"));

var deserialized = Deserialize<Queue<int>>(serialied);
Assert.That(deserialized.Count, Is.EqualTo(3));
Assert.That(deserialized.Dequeue(), Is.EqualTo(111));
Assert.That(deserialized.Dequeue(), Is.EqualTo(222));
Assert.That(deserialized.Dequeue(), Is.EqualTo(333));
}
}
}
24 changes: 24 additions & 0 deletions VYaml.Unity/Assets/Tests/Serialization/BitArrayFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
using System.Collections;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
[TestFixture]
public class BitArrayFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new BitArray(new[] { true, false, true, false, false });
var result = Serialize(value);
Assert.That(result, Is.EqualTo("10100"));
}

[Test]
public void Deserialize()
{
var result = Deserialize<BitArray>("111000");
Assert.That(result, Is.EquivalentTo(new BitArray(new[] { true, true, true, false, false, false })));
}
}
}
25 changes: 25 additions & 0 deletions VYaml.Unity/Assets/Tests/Serialization/StackFormatterTest.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
using System.Collections.Generic;
using NUnit.Framework;

namespace VYaml.Tests.Serialization
{
public class StackFormatterTest : FormatterTestBase
{
[Test]
public void Serialize()
{
var value = new Stack<int>();
value.Push(111);
value.Push(222);
value.Push(333);
var serialied = Serialize(value);
Assert.That(serialied, Is.EqualTo("- 333\n- 222\n- 111\n"));

var deserialized = Deserialize<Stack<int>>(serialied);
Assert.That(deserialized.Count, Is.EqualTo(3));
Assert.That(deserialized.Pop(), Is.EqualTo(333));
Assert.That(deserialized.Pop(), Is.EqualTo(222));
Assert.That(deserialized.Pop(), Is.EqualTo(111));
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
#nullable enable
using System.Collections.Generic;
using VYaml.Emitter;
using VYaml.Parser;
Expand Down
Loading

0 comments on commit 695d34c

Please sign in to comment.