public void Create_Seal_SerializeDeserialize_Read() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Aver.IsTrue(ParcelState.Creating == parcel.State); parcel.Seal(FakeNOPBank.Instance); var ser = new SlimSerializer(Parcel.STANDARD_KNOWN_SERIALIZER_TYPES); var ms = new MemoryStream(); ser.Serialize(ms, parcel); ms.Position = 0; var parcel2 = ser.Deserialize(ms) as PeopleNamesParcel; Aver.IsNotNull(parcel2); var payload2 = parcel2.Payload; Aver.IsNotNull(payload2); Aver.AreEqual(payload2.Count, names.Count); Aver.IsTrue(payload2.SequenceEqual(names)); }
public void Parcel_DeepClone_Benchmark_Parallel() { const int CNT = 100000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); System.Threading.Tasks.Parallel.For(0, CNT, (i) => { var p2 = p1.DeepClone() as PeopleNamesParcel; Aver.IsFalse(object.ReferenceEquals(p1, p2)); Aver.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Aver.IsTrue(p1.Payload.Count == p2.Payload.Count); Aver.AreEqual(p1.GDID, p2.GDID); }); sw.Stop(); Console.WriteLine("NOTE: Core i7 x 6 cores 3.2Ghz 47000+ ops/sec on subsequent runs w/o optimization in non-server GC mode"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void Parcel_DeepClone_Benchmark() { const int CNT = 25000; var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var sw = System.Diagnostics.Stopwatch.StartNew(); for (var i = 0; i < CNT; i++) { var p2 = p1.DeepClone() as PeopleNamesParcel; Aver.IsFalse(object.ReferenceEquals(p1, p2)); Aver.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Aver.IsTrue(p1.Payload.Count == p2.Payload.Count); Aver.AreEqual(p1.GDID, p2.GDID); } sw.Stop(); Console.WriteLine("NOTE: Core i7 3.2Ghz 14000 ops/sec on subsequent runs w/o optimization"); Console.WriteLine("Cloned {0} times in {1} ms at {2} ops/sec", CNT, sw.ElapsedMilliseconds, CNT / (sw.ElapsedMilliseconds / 1000d)); }
public void Create_Seal_ValidationError() { var names = new List <string> { "Kozloff", "Sergeev", "NoAroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Aver.IsTrue(ParcelState.Creating == parcel.State); parcel.Seal(FakeNOPBank.Instance); }
public void Parcel_DeepClone_2_Equals_ToString() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Aver.IsFalse(object.ReferenceEquals(p1, p2)); Aver.IsTrue(p1.Equals(p2)); Console.WriteLine(p1.ToString()); }
public void Parcel_DeepClone_1() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var p1 = new PeopleNamesParcel(new GDID(0, 123), names); p1.Seal(FakeNOPBank.Instance); var p2 = p1.DeepClone() as PeopleNamesParcel; Aver.IsFalse(object.ReferenceEquals(p1, p2)); Aver.IsFalse(object.ReferenceEquals(p1.Payload, p2.Payload)); Aver.IsTrue(p1.Payload.SequenceEqual(p2.Payload)); Aver.AreEqual(p1.GDID, p2.GDID); }
public void FullLifecycle() { var names = new List <string> { "Kozloff", "Sergeev", "Aroyan", "Gurevich" }; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Aver.IsTrue(ParcelState.Creating == parcel.State); parcel.Seal(FakeNOPBank.Instance); var ser = new SlimSerializer(Parcel.STANDARD_KNOWN_SERIALIZER_TYPES); var ms = new MemoryStream(); ser.Serialize(ms, parcel); ms.Position = 0; var parcel2 = ser.Deserialize(ms) as PeopleNamesParcel; Aver.IsNotNull(parcel2); Aver.IsTrue(ParcelState.Sealed == parcel2.State); parcel2.Open(); Aver.IsTrue(ParcelState.Modifying == parcel2.State); parcel2.Payload[1] = "Boyarskiy"; parcel2.Seal(FakeNOPBank.Instance); ms.Position = 0; ser.Serialize(ms, parcel2); ms.Position = 0; var parcel3 = ser.Deserialize(ms) as PeopleNamesParcel; Aver.IsTrue(new List <string> { "Kozloff", "Boyarskiy", "Aroyan", "Gurevich" }.SequenceEqual(parcel3.Payload)); }