public void InheritanceBaseType() { SomeBase sb = new SomeBase {Test = 12345}; SomeBase clone = Serializer.DeepClone<SomeBase>(sb); Assert.IsInstanceOfType(typeof(SomeBase), clone, "Type"); Assert.AreEqual(sb.Test, clone.Test, "Value"); }
public void InheritanceCheckBytesWrongOrder() { byte[] raw = { 0x50, 0xB9, 0x60, 0x12, 0x05, 0x5A, 0x03, 0x61, 0x62, 0x63 }; SomeBase clone = Program.Build <SomeBase>(raw); Assert.IsInstanceOfType(typeof(Sub1), clone); Assert.AreEqual(12345, clone.Test); Assert.AreEqual("abc", ((Sub1)clone).Foo); }
public void InheritanceBaseType() { SomeBase sb = new SomeBase { Test = 12345 }; SomeBase clone = Serializer.DeepClone <SomeBase>(sb); Assert.IsType(typeof(SomeBase), clone); //, "Type"); Assert.Equal(sb.Test, clone.Test); //, "Value"); }
public void InheritanceSub2() { SomeBase sb = new Sub2 { Test = 12345, Bar = 123.45F }; SomeBase clone = Serializer.DeepClone <SomeBase>(sb); Assert.IsType(typeof(Sub2), clone); //, "Type"); Assert.Equal(sb.Test, clone.Test); //, "Value"); Assert.Equal(((Sub2)sb).Bar, ((Sub2)clone).Bar); //, "Foo"); }
public void InheritanceSub1() { SomeBase sb = new Sub1 { Test = 12345, Foo = "abc" }; SomeBase clone = Serializer.DeepClone <SomeBase>(sb); Assert.IsType(typeof(Sub1), clone); //, "Type"); Assert.Equal(sb.Test, clone.Test); //, "Value"); Assert.Equal(((Sub1)sb).Foo, ((Sub1)clone).Foo); //, "Foo"); }
public void InheritanceCheckBytesWrongOrder() { // breaking change: not supported in v2; frankly, this is moot - the entire // inheritance chain is protobuf-net specific, and that always writes data in // the same order; the only edge case is message concatenation. // note sure this is a realistic concern byte[] raw = { 0x50, 0xB9, 0x60, 0x12, 0x05, 0x5A, 0x03, 0x61, 0x62, 0x63 }; SomeBase clone = Program.Build <SomeBase>(raw); Assert.IsType(typeof(Sub1), clone); Assert.Equal(12345, clone.Test); Assert.Equal("abc", ((Sub1)clone).Foo); }
public void InheritanceCheckBytesCorrectOrder() { // the purpose of this test is to validate the byte stream so that when // we turn around the order we know what we are expecting SomeBase sb = new Sub1 { Test = 12345, Foo = "abc" }; byte[] raw = { 0x12, 0x05, 0x5A, 0x03, 0x61, 0x62, 0x63, 0x50, 0xB9, 0x60 }; // 0x12 = 10 010 = field 2, string (Sub1) // 0x05 = 5 bytes // 0x5A = 1011 010 = field 11, string (Foo) // 0x03 = 3 bytes // 0x61 0x62 0x63 = "abc" // 0x50 = 1010 000 = field 10, variant (Test) // 0xB9 0x60 = [0]1100000[1]0111001 = 12345 Assert.True(Program.CheckBytes(sb, raw), "raw bytes"); SomeBase clone = Program.Build <SomeBase>(raw); Assert.IsType(typeof(Sub1), clone); Assert.Equal(sb.Test, clone.Test); Assert.Equal(((Sub1)sb).Foo, ((Sub1)clone).Foo); }