public void _2048ModelCloneTest() { var model = new _2048Model(0); var model2 = new _2048Model(model); Assert.AreNotSame(model, model2); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Trace.WriteLine("1:"); Trace.Write(model.Matrix.ToDebugString(4)); Trace.WriteLine(""); Trace.Write(model2.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.IsTrue(model.MoveDown()); model2.MoveDown(); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Trace.WriteLine("2:"); Trace.Write(model.Matrix.ToDebugString(4)); Trace.WriteLine(""); Trace.Write(model2.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 2]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); model2.MoveDown(); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Trace.WriteLine("3:"); Trace.Write(model.Matrix.ToDebugString(4)); Trace.WriteLine(""); Trace.Write(model2.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(2, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); model2.MoveDown(); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Trace.WriteLine("4:"); Trace.Write(model.Matrix.ToDebugString(4)); Trace.WriteLine(""); Trace.Write(model2.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(4, model.Matrix[3, 3]); Assert.IsFalse(model.MoveDown()); model2.MoveDown(); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Trace.WriteLine("5:"); Trace.Write(model.Matrix.ToDebugString(4)); Trace.WriteLine(""); Trace.Write(model2.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(4, model.Matrix[3, 3]); var a = "ahoj"; }
public void _2048ModelTest3() { for (int counter = 0; counter < 1000; ++counter) { var model = new _2048Model(); var moves = model.RandomFinish(); Trace.Write(model.Matrix.ToDebugString(5)); Assert.IsFalse(model.IsAutoMovePossible); Assert.AreEqual(0, model.PossibleMoves); if (model.PlayersATurn) { Assert.IsFalse(model.MoveDown()); Assert.IsFalse(model.MoveUp()); Assert.IsFalse(model.MoveLeft()); Assert.IsFalse(model.MoveRight()); } Assert.IsFalse(model.Matrix.TraverseByRows().Any((v) => v.Value == 0)); } }
public void _2048ModelTest1() { var model = new _2048Model(0); Trace.WriteLine("1:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(0, model.Score); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("2:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 2]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 3]); Assert.AreEqual(0, model.Score); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("3:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(2, model.Matrix[3, 3]); Assert.AreEqual(0, model.Score); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("4:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(4, model.Matrix[3, 3]); Assert.AreEqual(4, model.Score); Assert.IsFalse(model.MoveDown()); Trace.WriteLine("5:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(4, model.Matrix[3, 3]); Assert.AreEqual(4, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("6:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(4, model.Matrix[3, 3]); Assert.AreEqual(8, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("7:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 3]); Assert.AreEqual(2, model.Matrix[2, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(8, model.Matrix[3, 3]); Assert.AreEqual(16, model.Score); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("8:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(8, model.Matrix[3, 3]); Assert.AreEqual(16, model.Score); Assert.IsFalse(model.MoveDown()); Trace.WriteLine("9:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(8, model.Matrix[3, 3]); Assert.AreEqual(16, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("10:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(2, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(8, model.Matrix[3, 3]); Assert.AreEqual(20, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("11:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 0]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(8, model.Matrix[3, 2]); Assert.AreEqual(8, model.Matrix[3, 3]); Assert.AreEqual(32, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("12:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.AreEqual(48, model.Score); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("13:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.AreEqual(48, model.Score); Assert.IsTrue(model.MoveLeft()); Trace.WriteLine("14:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(4, model.Matrix[2, 0]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.AreEqual(48, model.Score); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("15:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveLeft()); Trace.WriteLine("16:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[1, 0]); Assert.AreEqual(4, model.Matrix[1, 1]); Assert.AreEqual(2, model.Matrix[2, 0]); Assert.AreEqual(4, model.Matrix[2, 1]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("17:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 1]); Assert.AreEqual(2, model.Matrix[2, 0]); Assert.AreEqual(4, model.Matrix[2, 1]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("18:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 3]); Assert.AreEqual(2, model.Matrix[0, 2]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(2, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("19:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[1, 1]); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("20:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 0]); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 1]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("21:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 2]); Assert.AreEqual(2, model.Matrix[0, 3]); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(4, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("22:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[1, 0]); Assert.AreEqual(4, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 0]); Assert.AreEqual(8, model.Matrix[3, 1]); Assert.AreEqual(8, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("23:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 1]); Assert.AreEqual(2, model.Matrix[1, 2]); Assert.AreEqual(4, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(4, model.Matrix[3, 1]); Assert.AreEqual(16, model.Matrix[3, 2]); Assert.AreEqual(16, model.Matrix[3, 3]); Assert.IsTrue(model.MoveRight()); Trace.WriteLine("24:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 3]); Assert.AreEqual(2, model.Matrix[1, 2]); Assert.AreEqual(4, model.Matrix[1, 3]); Assert.AreEqual(2, model.Matrix[2, 2]); Assert.AreEqual(4, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(4, model.Matrix[3, 2]); Assert.AreEqual(32, model.Matrix[3, 3]); Assert.IsTrue(model.MoveUp()); Trace.WriteLine("25:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 1]); Assert.AreEqual(4, model.Matrix[0, 2]); Assert.AreEqual(2, model.Matrix[0, 3]); Assert.AreEqual(8, model.Matrix[1, 3]); Assert.AreEqual(4, model.Matrix[1, 2]); Assert.AreEqual(2, model.Matrix[2, 0]); Assert.AreEqual(32, model.Matrix[2, 3]); Assert.IsTrue(model.MoveDown()); Trace.WriteLine("26:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual(2, model.Matrix[0, 1]); Assert.AreEqual(2, model.Matrix[1, 3]); Assert.AreEqual(8, model.Matrix[2, 3]); Assert.AreEqual(2, model.Matrix[3, 0]); Assert.AreEqual(2, model.Matrix[3, 1]); Assert.AreEqual(8, model.Matrix[3, 2]); Assert.AreEqual(32, model.Matrix[3, 3]); var a = "ahoj"; }