public void SetUp()
 {
     IBlockFactory mockBlockFactory = new BlockHelper.MockBlockFactory();
     position = new Vector2(4, 4);
     field = new Field(10, 10);
     field.SetBlock(new BlockHelper.MockBlock(), position);
     subject = new GameMechanics(field, mockBlockFactory);
 }
예제 #2
0
        public void FixBlock_BlockIsDrawnWhenFixed()
        {
            Field f = new Field(1,1);
            f.SetBlock(new Block(), new Vector2(0, 0));
            GameMechanics mech = new GameMechanics(f, new BlockFactory());
            mech.AdvanceIfPossible();

            Color? color = f.ColorAt(new Vector2(0, 0));
            Assert.IsNotNull(color);
        }
        public void Test_HandleInput_WhenSpaceIsPressed()
        {
            Mock<IField> currentField = new Mock<IField>();

            GameMechanics currentSubject = new GameMechanics(currentField.Object, new BlockHelper.MockBlockFactory());
            List<Keys> input = new List<Keys> { Keys.Space };

            currentSubject.HandleInput(input);
            currentField.Verify(f => f.FixBlock());
        }
        public void Test_AdvanceIfPossible_WhenPossible_ShouldAdvance()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanAdvance()).Returns(true);

            GameMechanics subject = new GameMechanics(field.Object, new BlockHelper.MockBlockFactory());

            subject.AdvanceIfPossible();

            field.Verify(f => f.AdvanceBlock());
        }
        public void Test_AdvanceIfPossible_WhenNotPossible_ShouldSetNewBlock()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanAdvance()).Returns(false);

            GameMechanics subject = new GameMechanics(field.Object, new BlockHelper.MockBlockFactory());

            subject.AdvanceIfPossible();

            field.Verify(f => f.SetBlock(It.IsAny<IBlock>(), It.IsAny<Vector2>()));
        }
        public void Test_MoveLeftIfPossible_WhenPossible_ShouldMoveLeft()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanMoveLeft()).Returns(true);

            GameMechanics subject = new GameMechanics(field.Object, UNUSED_BLOCK_FACTORY);

            subject.MoveLeftIfPossible();

            field.Verify(f => f.MoveBlockLeft());
        }
        public void Test_MoveLeftIfPossible_WhenNotPossible_ShouldNotMoveRight()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanMoveLeft()).Returns(false);

            GameMechanics subjet = new GameMechanics(field.Object, UNUSED_BLOCK_FACTORY);

            subjet.MoveLeftIfPossible();

            field.Verify(f => f.MoveBlockLeft(), Times.Never());
        }
        public void Test_MoveRightIfPossible_WhenPossible_ShouldMoveRight()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanMoveRight()).Returns(true);

            GameMechanics subject = new GameMechanics(field.Object, new BlockHelper.MockBlockFactory());

            subject.MoveRightIfPossible();

            field.Verify(f => f.MoveBlockRight());
        }
        public void Test_NextBlock_ItSetsANewBlock()
        {
            Mock<IField> field = new Mock<IField>();
            field.Setup(f => f.CanAdvance()).Returns(false);

            GameMechanics subject = new GameMechanics(field.Object, new BlockHelper.MockBlockFactory());

            subject.NextBlock();

            field.Verify(f => f.SetBlock(It.IsAny<IBlock>(), It.IsAny<Vector2>()));
        }
예제 #10
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            blockTexture = Content.Load <Texture2D>("Block");

            emptyBackgroundTexture = new Texture2D(GraphicsDevice, 1, 1);
            emptyBackgroundTexture.SetData(new Color[] { Color.White });

            numberOfRows = (GraphicsDevice.Viewport.Height - 60) / blockTexture.Height;

            field         = new Field(12, numberOfRows);
            gameMechanics = new GameMechanics(field, new BlockFactory());
            gameMechanics.NextBlock();
        }
예제 #11
0
        /// <summary>
        /// LoadContent will be called once per game and is the place to load
        /// all of your content.
        /// </summary>
        protected override void LoadContent()
        {
            // Create a new SpriteBatch, which can be used to draw textures.
            spriteBatch = new SpriteBatch(GraphicsDevice);

            // TODO: use this.Content to load your game content here
            blockTexture = Content.Load<Texture2D>("Block");

            emptyBackgroundTexture = new Texture2D(GraphicsDevice, 1, 1);
            emptyBackgroundTexture.SetData(new Color[] { Color.White });

            numberOfRows = (GraphicsDevice.Viewport.Height - 60) / blockTexture.Height;

            field = new Field(12, numberOfRows, new BlockCollisionDetector());
            gameMechanics = new GameMechanics(field, new BlockFactory());
        }
        public void Test_HandleInput_WhenUpIsPressed()
        {
            Mock<IBlock> currentBlock = new Mock<IBlock>();

            Mock<IBlockFactory> factory = new Mock<IBlockFactory>();
            factory.Setup(f => f.MakeBlock()).Returns(currentBlock.Object);

            Mock<IField> field = new Mock<IField>();

            GameMechanics currentSubject = new GameMechanics(field.Object, factory.Object);
            currentSubject.NextBlock();

            List<Keys> input = new List<Keys> { Keys.Up };

            currentSubject.HandleInput(input);
            currentBlock.Verify(b => b.RotateRight());
        }