public void MutantDetector_IsDnaValid_OneInvalidWhiteSpaceInTheMiddle_Fails()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = { "AGT", "A C", "CCW" }; //==> " " is invalid

            //Action & Asserts
            DnaInvalidException ex = Assert.ThrowsException <DnaInvalidException>(() => detector.IsDnaValid(dna));

            Assert.AreEqual(ErrorMessages.k_DnaMustContainsValidLetters, ex.Message);
        }
        public void MutantDetector_IsDnaValid_OneInvalidLetterAtTheBeginning_Fails()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = { "WAG", "ATC", "CCT" }; //==> W is invalid

            //Action & Asserts
            DnaInvalidException ex = Assert.ThrowsException <DnaInvalidException>(() => detector.IsDnaValid(dna));

            Assert.AreEqual(ErrorMessages.k_DnaMustContainsValidLetters, ex.Message);
        }
        public void MutantDetector_IsDnaValid_DnaNxM_Fails()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = { "AGA", "AT", "CCT" };

            //Action & Asserts
            DnaInvalidException ex = Assert.ThrowsException <DnaInvalidException>(() => detector.IsDnaValid(dna));

            Assert.AreEqual(ErrorMessages.k_DnaMustBeNxN, ex.Message);
        }
        public void MutantDetector_IsDnaValid_DnaEmptyInMiddle_Fails()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = { "AGA", "   ", "CCT" };

            //Action & Asserts
            DnaInvalidException ex = Assert.ThrowsException <DnaInvalidException>(() => detector.IsDnaValid(dna));

            Assert.AreEqual(ErrorMessages.k_DnaCannotHasNullsOrEmpty, ex.Message);
        }
        public void MutantDetector_IsDnaValid_DnaInNull_Fails()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = null;

            //Action & Asserts
            DnaInvalidException ex = Assert.ThrowsException <DnaInvalidException>(() => detector.IsDnaValid(dna));

            Assert.AreEqual(ErrorMessages.k_DnaCannotBeNull, ex.Message);
        }
        public void MutantDetector_IsDnaValid_ValidDna4x4_Succeeds()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna = { "AGTA", "ATCA", "ACCA", "TGAC" };

            //Action
            bool result = detector.IsDnaValid(dna);

            //Asserts
            Assert.IsTrue(result);
        }
        public void MutantDetector_IsMutant_DnaMutant5x5DiagonalRight_Succeeds()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna =
            {
                "AACCT",
                "TCTGC",
                "CTAGG",
                "GATCC",
                "TTCTA",
            };

            //Action
            bool result = detector.IsMutant(dna);

            //Asserts
            Assert.IsTrue(result);
        }
        public void MutantDetector_IsMutant_DnaMutant5x5Vertical_Succeeds()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna =
            {
                "AACCT",
                "ACTGC",
                "CCTGG",
                "GATCC",
                "TATGA",
            };

            //Action
            bool result = detector.IsMutant(dna);

            //Asserts
            Assert.IsTrue(result);
        }
        public void MutantDetector_IsDnaValid_ValidDna5x5_Succeeds()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna =
            {
                "AGATT",
                "TATGC",
                "CCAGT",
                "AACGT",
                "CCGGT"
            };

            //Action
            bool result = detector.IsDnaValid(dna);

            //Asserts
            Assert.IsTrue(result);
        }
        public void MutantDetector_IsMutant_DnaMutant5x5LowerLetters_Succeeds()
        {
            //Arrange
            MutantDetector detector = new MutantDetector();

            string[] dna =
            {
                "AACCT",
                "ACTGC",
                "ccccG",
                "GATCC",
                "TTCGA",
            };

            //Action
            bool result = detector.IsMutant(dna);

            //Asserts
            Assert.IsTrue(result);
        }