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);
        }
Beispiel #3
0
        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);
        }
Beispiel #6
0
        /// <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 };
        }
Beispiel #7
0
        /// <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;
        }
Beispiel #8
0
        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);
        }