protected override void Check() { var c = new C { F1 = 99, F2 = 12, F3 = -1, F4 = 3 }; var m = InitializeModel(c); _hasConstructorRun = false; Create(m); StateVectorSize.ShouldBe(4); StateFormulas.ShouldBeEmpty(); RootComponents.Length.ShouldBe(1); var root = RootComponents[0]; root.ShouldBeOfType <C>(); ((C)root).F1.ShouldBe(5); ((C)root).F2.ShouldBe(5); ((C)root).F3.ShouldBe(0); ((C)root).F4.ShouldBe(3); root.GetSubcomponents().ShouldBeEmpty(); _hasConstructorRun.ShouldBe(false); }
protected override void Check() { var d = new D { S = { F = 3, G = 4, H = 2 } }; GenerateCode(SerializationMode.Optimized, d); StateVectorSize.ShouldBe(4); Serialize(); d.S.F = 33; d.S.G = 0; d.S.H = 0; Deserialize(); d.S.F.ShouldBe(3); d.S.G.ShouldBe(4); d.S.H.ShouldBe(2); d.S.G = -1; Serialize(); Deserialize(); d.S.F.ShouldBe(3); d.S.G.ShouldBe(0); d.S.H.ShouldBe(2); d.S.G = 121; Serialize(); Deserialize(); d.S.F.ShouldBe(3); d.S.G.ShouldBe(5); d.S.H.ShouldBe(2); d.S.H = -1; Serialize(); Deserialize(); d.S.F.ShouldBe(3); d.S.G.ShouldBe(5); d.S.H.ShouldBe(5); d.S.H = 111; Serialize(); Deserialize(); d.S.F.ShouldBe(3); d.S.G.ShouldBe(5); d.S.H.ShouldBe(0); d.S.F = -1; Should.Throw <RangeViolationException>(() => Serialize()); }
protected override void Check() { var cs = new C[35]; for (var i = 0; i < cs.Length; ++i) { cs[i] = new C { A = i % 2 == 0, B = (short)(i * 2), D = 100 + i, E = i % 2 == 0 ? E.A : E.B }; } GenerateCode(SerializationMode.Optimized, cs); StateVectorSize.ShouldBe(256); Serialize(); foreach (var c in cs) { c.A = false; c.B = 0; c.D = 0; c.E = E.A; } Deserialize(); for (var i = 0; i < cs.Length; ++i) { cs[i].A.ShouldBe(i % 2 == 0); cs[i].B.ShouldBe((short)(i * 2)); cs[i].D = 100 + i; cs[i].E.ShouldBe(i % 2 == 0 ? E.A : E.B); } }
protected override void Check() { var d = new D { S = new[] { new S { F = 2, G = 3, H = 4 }, new S { F = 6, G = 7, H = 8 } } }; GenerateCode(SerializationMode.Optimized, d); StateVectorSize.ShouldBe(8); Serialize(); d.S[0].F = 33; d.S[0].G = 0; d.S[0].H = 0; Deserialize(); d.S[0].F.ShouldBe(2); d.S[0].G.ShouldBe(3); d.S[0].H.ShouldBe(4); d.S[1].F.ShouldBe(6); d.S[1].G.ShouldBe(7); d.S[1].H.ShouldBe(8); d.S[0].G = -1; d.S[1].G = -1; Serialize(); Deserialize(); d.S[0].F.ShouldBe(2); d.S[0].G.ShouldBe(0); d.S[0].H.ShouldBe(4); d.S[1].F.ShouldBe(6); d.S[1].G.ShouldBe(0); d.S[1].H.ShouldBe(8); d.S[0].G = 121; d.S[1].G = 121; Serialize(); Deserialize(); d.S[0].F.ShouldBe(2); d.S[0].G.ShouldBe(10); d.S[0].H.ShouldBe(4); d.S[1].F.ShouldBe(6); d.S[1].G.ShouldBe(10); d.S[1].H.ShouldBe(8); d.S[0].G = 3; d.S[1].G = 7; d.S[0].H = -1; d.S[1].H = -1; Serialize(); Deserialize(); d.S[0].F.ShouldBe(2); d.S[0].G.ShouldBe(3); d.S[0].H.ShouldBe(10); d.S[1].F.ShouldBe(6); d.S[1].G.ShouldBe(7); d.S[1].H.ShouldBe(10); d.S[0].H = 111; d.S[1].H = 111; Serialize(); Deserialize(); d.S[0].F.ShouldBe(2); d.S[0].G.ShouldBe(3); d.S[0].H.ShouldBe(0); d.S[1].F.ShouldBe(6); d.S[1].G.ShouldBe(7); d.S[1].H.ShouldBe(0); d.S[0].F = -1; Should.Throw <RangeViolationException>(() => Serialize()); d.S[0].F = 2; d.S[1].F = -1; Should.Throw <RangeViolationException>(() => Serialize()); }