public void Create_Seal_SerializeDeserialize_Read() { var names = new List<string>{"Kozloff", "Sergeev", "Aroyan", "Gurevich"}; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(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; Assert.IsNotNull(parcel2); var payload2 = parcel2.Payload; Assert.IsNotNull(payload2); Assert.AreEqual(payload2.Count, names.Count); Assert.IsTrue( payload2.SequenceEqual( names) ); }
public void Create_Seal_ValidationError() { var names = new List<string>{"Kozloff", "Sergeev", "NoAroyan", "Gurevich"}; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); parcel.Seal(FakeNOPBank.Instance); }
public void FullLifecycle() { var names = new List<string>{"Kozloff", "Sergeev", "Aroyan", "Gurevich"}; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(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; Assert.IsNotNull(parcel2); Assert.AreEqual(ParcelState.Sealed, parcel2.State); parcel2.Open(); Assert.AreEqual(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; Assert.IsTrue( new List<string>{"Kozloff", "Boyarskiy", "Aroyan", "Gurevich"}.SequenceEqual( parcel3.Payload) ); }
public void StateError_4() { var names = new List<string>{"Kozloff", "Sergeev", "Aroyan", "Gurevich"}; var parcel = new PeopleNamesParcel(new GDID(0, 123), names); Assert.AreEqual(ParcelState.Creating, parcel.State); //not sealed var ser = new SlimSerializer( Parcel.STANDARD_KNOWN_SERIALIZER_TYPES ); var ms = new MemoryStream(); ser.Serialize(ms, parcel);//can not serialize open parcel }
public void StateError_3() { var parcel = new PeopleNamesParcel(new GDID(0, 123), null); }
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; Assert.IsFalse( object.ReferenceEquals(p1, p2) ); Assert.IsFalse( object.ReferenceEquals(p1.Payload, p2.Payload) ); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.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; Assert.IsFalse( object.ReferenceEquals(p1, p2) ); Assert.IsFalse( object.ReferenceEquals(p1.Payload, p2.Payload) ); Assert.IsTrue(p1.Payload.Count == p2.Payload.Count); Assert.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 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; Assert.IsFalse( object.ReferenceEquals(p1, p2) ); Assert.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; Assert.IsFalse( object.ReferenceEquals(p1, p2) ); Assert.IsFalse( object.ReferenceEquals(p1.Payload, p2.Payload) ); Assert.IsTrue(p1.Payload.SequenceEqual(p2.Payload)); Assert.AreEqual( p1.GDID, p2.GDID ); }