public void IsValid_WhenThreeCharactersExistsInTheSameLocation_ReturnsFalse()
        {
            // Arrange
            var attribute  = new EnsureCharactersLocationAttribute();
            var characters = new List <Character>
            {
                new Farmer {
                    Location = Location.LeftBank
                },
                new Fox {
                    Location = Location.LeftBank
                },
                new Goose {
                    Location = Location.LeftBank
                },
                new Bean {
                    Location = Location.Boat
                }
            };

            // Act
            var result = attribute.IsValid(characters);

            // Assert
            Assert.False(result);
        }
        public void IsValid_WhenFoxAndGooseCharactersExistsInTheSameLocation_ReturnsFalse()
        {
            // Arrange
            var attribute  = new EnsureCharactersLocationAttribute();
            var characters = new List <Character>
            {
                new Farmer {
                    Location = Location.Boat
                },
                new Fox {
                    Location = Location.LeftBank
                },
                new Goose {
                    Location = Location.LeftBank
                },
                new Bean {
                    Location = Location.Boat
                }
            };

            // Act
            var result = attribute.IsValid(characters);

            // Assert
            Assert.False(result);
            Assert.Equal("Fox will eat the goose", attribute.ErrorMessage);
        }
        public void IsValid_WhenOnlyCharacterExistsInTheList_ReturnsTrue()
        {
            // Arrange
            var attribute  = new EnsureCharactersLocationAttribute();
            var characters = new List <Character>
            {
                new Farmer
                {
                    Location = Location.LeftBank
                }
            };

            // Act
            var result = attribute.IsValid(characters);

            // Assert
            Assert.True(result);
        }