コード例 #1
0
        public async Task MutantService_IsMutantAsync_ValidDnaAlreadySaved_Succeeds()
        {
            //Arrange
            Mock <MutantService> serviceMock = GetMutantServiceMock();
            MutantService        service     = serviceMock.Object;
            Human human = new Human()
            {
                Dna = new string[] { "AAA", "CCC", "TTT" }
            };
            Dna savedDna = new Dna()
            {
                Id          = Guid.NewGuid(),
                ChainString = "AAA,CCC,TTT",
                IsMutant    = true
            };

            serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(true).Verifiable();
            _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync(savedDna).Verifiable();
            serviceMock.Setup(x => x.VerifyIsMutant(It.IsAny <string[]>())).Returns(true).Verifiable();

            //Action
            bool result = await service.IsMutantAsync(human);

            //Asserts
            Assert.IsTrue(result);
            serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once);
            _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Once);
            serviceMock.Verify(x => x.VerifyIsMutant(It.IsAny <string[]>()), Times.Never);
        }
コード例 #2
0
        public async Task StatsMutantTests_HumanAndMutantEquals_Ratio1()
        {
            //arrange
            fakeRepository.Setup(x => x.Where("isMutant = true"))
            .Returns(Task.FromResult <IEnumerable <Mutant> >(new List <Mutant>()
            {
                new Mutant {
                    isMutant = true
                }
            }));

            fakeRepository.Setup(x => x.Where("isMutant = false"))
            .Returns(Task.FromResult <IEnumerable <Mutant> >(new List <Mutant>()
            {
                new Mutant {
                    isMutant = true
                }
            }));

            var mutantservice = new MutantService(fakeRepository.Object);

            //act
            var result = await mutantservice.StatsMutant();

            //assert
            Assert.Equal(1, result.ratio);
        }
コード例 #3
0
        public async Task MutantService_IsMutantAsync_ValidDnaNonSaved_Succeeds()
        {
            //Arrange
            Mock <MutantService> serviceMock = GetMutantServiceMock();
            MutantService        service     = serviceMock.Object;
            Human human = new Human()
            {
                Dna = new string[] { "AAA", "CCC", "TTT" }
            };

            serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(true).Verifiable();
            _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync((Dna)null).Verifiable();
            serviceMock.Setup(x => x.VerifyIsMutant(It.IsAny <string[]>())).Returns(true).Verifiable();
            _dnaServiceMock.Setup(x => x.SaveAsync(It.IsAny <ICollection <Dna> >())).Verifiable();

            //Action
            bool result = await service.IsMutantAsync(human);

            //Asserts
            Assert.IsTrue(result);
            serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once);
            _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Once);
            serviceMock.Verify(x => x.VerifyIsMutant(It.IsAny <string[]>()), Times.Once);
            _dnaServiceMock.Verify(x => x.SaveAsync(It.IsAny <ICollection <Dna> >()), Times.Once);
        }
コード例 #4
0
        public void MutantService_IsMutantAsync_ParameterHumanInNull_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

            //Action && Asserts
            Assert.ThrowsExceptionAsync <ArgumentNullException>(() => service.IsMutantAsync(null));
        }
コード例 #5
0
        public void MutantService_VerifyIsMutant_WrongParameters_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

            //Action && Asserts
            Assert.ThrowsException <ArgumentException>(() => service.VerifyIsMutant(null));
            Assert.ThrowsException <ArgumentException>(() => service.VerifyIsMutant(new string[] { }));
        }
コード例 #6
0
        public void MutantService_IsDnaValid_OneInvalidLetterAtTheEnd_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

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

            //Action & Asserts
            Assert.ThrowsException <DnaInvalidException>(() => service.IsDnaValid(dna));
        }
コード例 #7
0
        public void MutantService_IsDnaValid_DnaNxM_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

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

            //Action & Asserts
            Assert.ThrowsException <DnaInvalidException>(() => service.IsDnaValid(dna));
        }
コード例 #8
0
        public void MutantService_IsDnaValid_DnaInNull_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

            string[] dna = null;

            //Action & Asserts
            Assert.ThrowsException <DnaInvalidException>(() => service.IsDnaValid(dna));
        }
コード例 #9
0
        public void MutantService_IsDnaValid_OneInvalidWhiteSpaceInTheMiddle_Fails()
        {
            //Arrange
            MutantService service = GetMutantService();

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

            //Action & Asserts
            Assert.ThrowsException <DnaInvalidException>(() => service.IsDnaValid(dna));
        }
コード例 #10
0
        public async Task MutantServiceTests_EntityDNANull_Exception()
        {
            //arrange
            var mutantservice = new MutantService(fakeRepository.Object);

            //act
            var handleTask = mutantservice.ValidateIsMutant(null);

            //assert
            var result = await Assert.ThrowsAsync <Exception>(async() => await handleTask);
        }
コード例 #11
0
        public void MutantService_IsMutantAsync_IsDnaValidThrowsException_Fails()
        {
            //Arrange
            Mock <MutantService> serviceMock = GetMutantServiceMock();
            MutantService        service     = serviceMock.Object;

            serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Throws <DnaInvalidException>().Verifiable();

            //Action && Asserts
            Assert.ThrowsExceptionAsync <DnaInvalidException>(() => service.IsMutantAsync(new Human()));
            serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once);
        }
コード例 #12
0
        public void MutantService_IsDnaValid_ValidDna4x4_Succeeds()
        {
            //Arrange
            MutantService service = GetMutantService();

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

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

            //Asserts
            Assert.IsTrue(result);
        }
コード例 #13
0
ファイル: MutantServiceTest.cs プロジェクト: wcartaya/mutant
        public MutantServiceTest()
        {
            mockLogger          = new Mock <ILogger <MutantService> >();
            mockDnaValidator    = new Mock <IDnaValidator>();
            mockDataRepository  = new Mock <IDataRepository <Dna> >();
            mockStatsRepository = new Mock <IStatsRepository>();
            mockMemoryCache     = new Mock <IMemoryCache>();

            mutantService = new MutantService(
                mockLogger.Object,
                mockDnaValidator.Object,
                mockDataRepository.Object,
                mockStatsRepository.Object,
                mockMemoryCache.Object
                );
        }
コード例 #14
0
        public async Task MutantService_IsMutantAsync_InvalidDna_Succeeds()
        {
            //Arrange
            Mock <MutantService> serviceMock = GetMutantServiceMock();
            MutantService        service     = serviceMock.Object;

            serviceMock.Setup(x => x.IsDnaValid(It.IsAny <string[]>())).Returns(false).Verifiable();
            _memoryCacheServiceMock.Setup(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >())).ReturnsAsync(new Dna()).Verifiable();

            //Action
            bool result = await service.IsMutantAsync(new Human());

            //Asserts
            Assert.IsFalse(result);
            serviceMock.Verify(x => x.IsDnaValid(It.IsAny <string[]>()), Times.Once);
            _memoryCacheServiceMock.Verify(x => x.GetAsync(It.IsAny <string>(), It.IsAny <Func <Task <Dna> > >()), Times.Never);
        }
コード例 #15
0
        public void MutantService_VerifyIsMutant_DnaNoMutant5x5_Succeeds()
        {
            //Arrange
            MutantService service = GetMutantService();

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

            //Action
            bool result = service.VerifyIsMutant(dna);

            //Asserts
            Assert.IsFalse(result);
        }
コード例 #16
0
        public void MutantService_VerifyIsMutant_DnaMutant5x5DiagonalLeft_Succeeds()
        {
            //Arrange
            MutantService service = GetMutantService();

            string[] dna =
            {
                "AACCT",
                "ACTGT",
                "CCATG",
                "GATCC",
                "TTCGA",
            };

            //Action
            bool result = service.VerifyIsMutant(dna);

            //Asserts
            Assert.IsTrue(result);
        }
コード例 #17
0
        public void MutantService_IsDnaValid_ValidDna5x5_Succeeds()
        {
            //Arrange
            MutantService service = GetMutantService();

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

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

            //Asserts
            Assert.IsTrue(result);
        }
コード例 #18
0
        public void MutantService_VerifyIsMutant_DnaMutant5x5LowerLetters_Succeeds()
        {
            //Arrange
            MutantService service = GetMutantService();

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

            //Action
            bool result = service.VerifyIsMutant(dna);

            //Asserts
            Assert.IsTrue(result);
        }
コード例 #19
0
        public async Task MutantServiceTests_Successful()
        {
            //arrange
            var mutan = new Mutant()
            {
                isMutant = true
            };

            fakeRepository.Setup(x => x.AddAsync(It.IsAny <Mutant>())).ReturnsAsync(mutan);

            var mutantservice = new MutantService(fakeRepository.Object);

            string[] dna    = { "ATGCGA", "CAGTGC", "TTATGT", "AGAAGG", "CCCCTA", "TCACTG" };
            var      mutant = new Mutant {
                dna = dna
            };
            var ismutantExcpected = true;

            //act
            var ismutantActual = await mutantservice.ValidateIsMutant(mutant);

            //assert
            Assert.Equal(ismutantExcpected, ismutantActual.isMutant);
        }