A game framework written with osu! in mind.
at master 2.4 kB view raw
1// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. 2// See the LICENCE file in the repository root for full licence text. 3 4using Newtonsoft.Json; 5using NUnit.Framework; 6using osu.Framework.Lists; 7 8namespace osu.Framework.Tests.IO 9{ 10 [TestFixture] 11 public class TestSortedListSerialization 12 { 13 [Test] 14 public void TestUnsortedSerialization() 15 { 16 var original = new SortedList<int>(); 17 original.AddRange(new[] { 1, 2, 3, 4, 5, 6 }); 18 19 var deserialized = JsonConvert.DeserializeObject<SortedList<int>>(JsonConvert.SerializeObject(original)); 20 21 Assert.AreEqual(original.Count, deserialized?.Count, "Counts are not equal"); 22 for (int i = 0; i < original.Count; i++) 23 Assert.AreEqual(original[i], deserialized?[i], $"Item at index {i} differs"); 24 } 25 26 [Test] 27 public void TestSortedSerialization() 28 { 29 var original = new SortedList<int>(); 30 original.AddRange(new[] { 6, 5, 4, 3, 2, 1 }); 31 32 var deserialized = JsonConvert.DeserializeObject<SortedList<int>>(JsonConvert.SerializeObject(original)); 33 34 Assert.AreEqual(original.Count, deserialized?.Count, "Counts are not equal"); 35 for (int i = 0; i < original.Count; i++) 36 Assert.AreEqual(original[i], deserialized?[i], $"Item at index {i} differs"); 37 } 38 39 [Test] 40 public void TestEmptySerialization() 41 { 42 var original = new SortedList<int>(); 43 var deserialized = JsonConvert.DeserializeObject<SortedList<int>>(JsonConvert.SerializeObject(original)); 44 45 Assert.AreEqual(original.Count, deserialized?.Count, "Counts are not equal"); 46 } 47 48 [Test] 49 public void TestCustomComparer() 50 { 51 static int compare(int i1, int i2) => i2.CompareTo(i1); 52 53 var original = new SortedList<int>(compare); 54 original.AddRange(new[] { 1, 2, 3, 4, 5, 6 }); 55 56 var deserialized = new SortedList<int>(compare); 57 JsonConvert.PopulateObject(JsonConvert.SerializeObject(original), deserialized); 58 59 Assert.AreEqual(original.Count, deserialized.Count, "Counts are not equal"); 60 for (int i = 0; i < original.Count; i++) 61 Assert.AreEqual(original[i], deserialized[i], $"Item at index {i} differs"); 62 } 63 } 64}