public void PieceMustAcuallyMove()
        {
            Piece             rook = new Rook(Colour.Black);
            StartSquare       d5   = new StartSquare("d5");
            DestinationSquare d8   = new DestinationSquare("d8");
            Move move = new Move(rook.Code, d5, d8);

            BusinessRule target = new PieceMustActuallyMove(move);

            IEnumerable <BusinessRuleViolation> violations = target.CheckRule();

            Assert.IsNotNull(violations);
            Assert.IsFalse(violations.Any());
        }
        public void PieceMustAcuallyMove_ButDoesNot()
        {
            Piece             rook     = new Rook(Colour.Black);
            StartSquare       d5       = new StartSquare("d5");
            DestinationSquare d5AsWell = new DestinationSquare("d5");
            Move move = new Move(rook.Code, d5, d5AsWell);

            BusinessRule target = new PieceMustActuallyMove(move);

            IEnumerable <BusinessRuleViolation> violations = target.CheckRule();

            Assert.AreEqual(1, violations.Count());
            Assert.IsTrue(violations.Any(v => v.ViolationMessage ==
                                         "The start square cannot be the same as the destination square."));
        }