public void _2048ModelMCTSInterfaceCloneTest() { var model = new _2048Model(0); EMCTSGame.SeedRandom(0); Trace.WriteLine("1:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.IsTrue(model.PlayersATurn); Assert.IsFalse(model.IsAutoMovePossible); model.RandomMove(); Assert.IsFalse(model.PlayersATurn); Assert.IsTrue(model.IsAutoMovePossible); var model2 = new _2048Model(model); Assert.IsFalse(model2.PlayersATurn); Assert.IsTrue(model2.IsAutoMovePossible); model.AutoMove(); Assert.IsFalse(model2.PlayersATurn); Assert.IsTrue(model2.IsAutoMovePossible); Assert.IsFalse(model.Matrix.MatrixEqual(model2.Matrix)); Assert.IsTrue(model.PlayersATurn); Assert.IsFalse(model.IsAutoMovePossible); model2.AutoMove(); Assert.IsTrue(model.Matrix.MatrixEqual(model2.Matrix)); Assert.IsTrue(model.PlayersATurn); Assert.IsFalse(model.IsAutoMovePossible); Assert.IsTrue(model2.PlayersATurn); Assert.IsFalse(model2.IsAutoMovePossible); }
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 _2048ModelTest2() { var model = new _2048Model(0); EMCTSGame.SeedRandom(0); var moves = model.RandomFinish(); Trace.Write(model.Matrix.ToDebugString(5)); Assert.IsFalse(model.IsAutoMovePossible); Assert.AreEqual(0, model.PossibleMoves); Assert.IsFalse(model.Matrix.TraverseByRows().Any((v) => v.Value == 0)); }
public void _2048ModelTest4() { var model = new _2048Model(new int[4, 4] { { 8, 256, 4, 2 }, { 512, 64, 32, 8 }, { 4, 128, 4, 16 }, { 4, 4096, 2, 4 } }); Assert.AreEqual(4, model.PossibleMoves); model = new _2048Model(new int[4, 4] { { 0, 8, 256, 4 }, { 512, 64, 32, 8 }, { 4, 128, 4, 16 }, { 4, 4096, 2, 4 } }); Assert.AreEqual(4, model.PossibleMoves); Assert.IsTrue(model.TryMove(_2048MoveDirection.left, autoAddTile: false)); Assert.AreEqual(2, model.PossibleMoves); Assert.IsTrue(model.TryMove(0)); Assert.AreEqual(4, model.PossibleMoves); Assert.IsTrue(model.TryMove(_2048MoveDirection.up, autoAddTile: false)); Assert.IsTrue(model.TryMove(0)); Assert.AreEqual(0, model.PossibleMoves); }
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 _2048ModelMCTSInterfaceTest() { var model = new _2048Model(0); EMCTSGame.SeedRandom(0); Trace.WriteLine("1:"); Trace.Write(model.Matrix.ToDebugString(4)); Assert.IsTrue(model.PlayersATurn); int i = 1; while (model.RandomMove()) { Trace.WriteLine(string.Format("{0}: (score: {1})", ++i, model.Score)); Trace.Write(model.Matrix.ToDebugString(4)); Assert.AreEqual((i & 1) != 0, model.PlayersATurn); Assert.AreEqual((i & 1) == 0, model.IsAutoMovePossible); } Assert.AreEqual(0, model.PossibleMoves); Assert.IsFalse(model.IsAutoMovePossible); var a = "ahoj"; }
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"; }