public void GetPrimes_NoExistingList_ReturnsExpectedPrimes()
        {
            var expectedPrimes = new List <int> {
                2, 3, 5, 7
            };
            var cachedPrimes = new PrimeNumberCache().GetPrimesTo(10);

            CollectionAssert.AreEqual(expectedPrimes, cachedPrimes);
        }
        public void GetPrimes_NoExistingList_CallsGenerateTo()
        {
            var localTestGenerator = TestGenerator;

            var testCache = new PrimeNumberCache(localTestGenerator);

            testCache.GetPrimesTo(10);

            A.CallTo(() => localTestGenerator.GeneratePrimesTo(A <int> ._)).MustHaveHappened(Repeated.Exactly.Once);
        }
        public void GetPrimes_ExistingList_TargetLess_ReturnsExpectedPrimes()
        {
            var initialPrimes = new List <int> {
                2, 3, 5, 7, 11, 13, 17, 19
            };
            var expectedPrimes = new List <int> {
                2, 3, 5, 7
            };
            var cachedPrimes = new PrimeNumberCache(initialPrimes).GetPrimesTo(10);

            CollectionAssert.AreEqual(expectedPrimes, cachedPrimes);
        }
        public void GetPrimes_ExisitngList_TargetLess_DoesNotCallGenerator()
        {
            var initialPrimes = new List <int> {
                2, 3, 5, 7, 11
            };
            var localTestGenerator = TestGenerator;

            var testCache = new PrimeNumberCache(initialPrimes, localTestGenerator);

            testCache.GetPrimesTo(5);

            A.CallTo(() => localTestGenerator.GeneratePrimesBetween(A <int> ._, A <int> ._)).MustNotHaveHappened();
            A.CallTo(() => localTestGenerator.GeneratePrimesTo(A <int> ._)).MustNotHaveHappened();
        }
        public void GetPrimes_ExistingList_TargetGreater_CallsGenerateBetween()
        {
            var primes = new List <int> {
                2, 3, 5
            };
            var localTestGenerator = TestGenerator;

            var testCache = new PrimeNumberCache(primes, localTestGenerator);

            testCache.GetPrimesTo(10);

            A.CallTo(() => localTestGenerator.GeneratePrimesBetween(A <int> ._, A <int> ._)).MustHaveHappened(Repeated.Exactly.Once);
            A.CallTo(() => localTestGenerator.GeneratePrimesTo(A <int> ._)).MustNotHaveHappened();
        }