protected override void Check()
		{
			var sm1 = new StateMachine<int>(17, 18);
			sm1.InitialStates.ShouldBe(new[] { 17, 18 });

			var sm2 = new StateMachine<E>(E.A, E.B, E.C);
			sm2.InitialStates.ShouldBe(new[] { E.A, E.B, E.C });

			StateMachine<int> sm3 = new[] { 17, 18 };
			sm3.InitialStates.ShouldBe(new[] { 17, 18 });

			StateMachine<E> sm4 = new[] { E.A, E.B, E.C };
			sm4.InitialStates.ShouldBe(new[] { E.A, E.B, E.C });
		}
示例#2
0
		protected override void Check()
		{
			var o = new object();
			var e = new[] { new object() };

			var c = new C
			{
				X =
				{
					A = 3,
					B = 6,
					C = { A = 1, B = 2 },
					D = o,
					E = e,
					F = new[] { new Y { A = 11, B = 12, C = false }, new Y { A = 13, B = 14, C = true } }
				},
				Y =
				{
					A = 17,
					B = 44,
					C = true
				}
			};

			c.Z = new Z { A = 99, B = c.X };

			GenerateCode(SerializationMode.Optimized, c, e, o, c.X.F);
			StateSlotCount.ShouldBe(12);

			Serialize();
			c.X.F[0] = new Y();
			c.X.F[1] = new Y();
			c.X = new X();
			c.Y = new Y();
			c.Z = new Z();

			Deserialize();
			c.X.A.ShouldBe(3);
			c.X.B.ShouldBe((ushort)6);
			c.X.C.A.ShouldBe((byte)1);
			c.X.C.B.ShouldBe((ushort)2);
			c.X.D.ShouldBe(o);
			c.X.E.ShouldBe(e);
			c.X.F[0].A.ShouldBe((byte)11);
			c.X.F[0].B.ShouldBe((ushort)12);
			c.X.F[0].C.ShouldBe(false);
			c.X.F[1].A.ShouldBe((byte)13);
			c.X.F[1].B.ShouldBe((ushort)14);
			c.X.F[1].C.ShouldBe(true);
			c.Y.A.ShouldBe((byte)17);
			c.Y.B.ShouldBe((ushort)44);
			c.Y.C.ShouldBe(true);
			c.Z.A.ShouldBe(99);
			c.Z.B.A.ShouldBe(3);
			c.Z.B.B.ShouldBe((ushort)6);
			c.Z.B.C.A.ShouldBe((byte)1);
			c.Z.B.C.B.ShouldBe((ushort)2);
			c.Z.B.D.ShouldBe(o);
			c.Z.B.E.ShouldBe(e);
			c.Z.B.F[0].A.ShouldBe((byte)11);
			c.Z.B.F[0].B.ShouldBe((ushort)12);
			c.Z.B.F[0].C.ShouldBe(false);
			c.Z.B.F[1].A.ShouldBe((byte)13);
			c.Z.B.F[1].B.ShouldBe((ushort)14);
			c.Z.B.F[1].C.ShouldBe(true);

			c.Y.C = false;
			Serialize();

			c.Y.C = true;
			Deserialize();
			c.Y.C.ShouldBe(false);
		}