public void TestIfTakeColumnsMethodReturnAllColumnsCorrectlyAsJaggedArray() { var matrix = new int[,] { { 1, 2, 3 }, { 5, 6, 7 }, { 9, 10, 11 } }; var queriableMatrix = new QueryableMatrix<int>(matrix); var actual = queriableMatrix.TakeColumns(); var expected = new int[][] { new int[] { 1, 5, 9 }, new int[] { 2, 6, 10 }, new int[] { 3, 7, 11 } }; for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { Assert.AreEqual(expected[i][j], actual[i][j]); } } }
public void TestIfValuePropertyReturnsTheSameMatrixItWasSetTo() { var matrix = new int[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; var queriableMatrix = new QueryableMatrix<int>(3, 4); queriableMatrix.Value = matrix; Assert.AreEqual(matrix, queriableMatrix.Value); }
public void TestIfConstructorWithParametersHasTheSameBehaviorAsTheSetter() { var game = new GameModel(); this.logic.RandomizeBalloonField(game.Field); this.memento.SaveState(game); var memento2 = new Saver<IGameModel>(); memento2.SaveState(game); var stateFromMemento = this.memento.GetState(); var areEqual = new QueryableMatrix<IBalloon>(memento2.GetState().Field) .Join(new QueryableMatrix<IBalloon>(stateFromMemento.Field), x => x, y => y, (x, y) => (x.IsPopped == y.IsPopped) && (x.Number == y.Number)) .All(x => x); Assert.IsTrue(areEqual); }
public void TestIfForeachOnQueriableMatrixReturnsAllCells() { var matrix = new int[,] { { 1, 2, 3, 4 }, { 5, 6, 7, 8 }, { 9, 10, 11, 12 } }; var queriableMatrix = new QueryableMatrix<int>(matrix); var counter = 1; foreach (var cell in queriableMatrix) { Assert.AreEqual(cell, counter++); } }
public void TestIfPrintFieldChangesTheSourceOfTheImages() { var game = new GameModel(); Assert.AreEqual(0, this.view.BalloonGrid.Children.Count); this.controller.PrintField(game.Field); var sources = this.view.BalloonGrid.Children.Cast<Image>().Select(x => x.Source).ToList(); var redField = new QueryableMatrix<IBalloon>(5, 10).Select(x => new Balloon() { Number = 1 }).ToMatrix(5, 10); this.controller.PrintField(redField); var sources2 = this.view.BalloonGrid.Children.Cast<Image>().Select(x => x.Source).ToList(); bool different = false; for (int i = 0; i < sources.Count; i++) { different = sources[i].ToString() != sources2[i].ToString(); } Assert.IsTrue(different); }
/// <summary> /// Provides a deep clone of the current instance. /// </summary> /// <returns></returns> public IGameModel Clone() { var clonedField = new QueryableMatrix<IBalloon>(this.field) .Select(balloon => balloon.Clone()) .ToMatrix(this.field.GetLength(0), this.field.GetLength(1)); return new GameModel() { field = clonedField }; }
/// <summary> /// Determines whether a game is over. /// </summary> /// <param name="matrix">Array representation of the game field.</param> /// <returns>Returns whether there remains at least one unpopped balloon.</returns> public bool GameIsOver(IBalloon[,] matrix) { var fieldIsEmpty = new QueryableMatrix<IBalloon>(matrix).All(balloon => balloon.IsPopped); return fieldIsEmpty; }
public void TestIfMementoReturnsTheSameStateItAccepter() { var game = new GameModel(); this.logic.RandomizeBalloonField(game.Field); this.memento.SaveState(game); var stateFromMemento = this.memento.GetState(); var areEqual = new QueryableMatrix<IBalloon>(game.Field) .Join(new QueryableMatrix<IBalloon>(stateFromMemento.Field), x => x, y => y, (x, y) => (x.IsPopped == y.IsPopped) && (x.Number == y.Number)) .All(x => x); Assert.IsTrue(areEqual); }