Example #1
0
        public void ThreadSafetyCheckOnGetOrAdd()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            var threads     = new List <Thread>();
            var concurrency = 50;
            var options     = new ParallelOptions {
                MaxDegreeOfParallelism = 20
            };
            ParallelLoopResult result = Parallel.For(
                1,
                concurrency,
                options,
                index =>
            {
                var thread = new Thread(ThreadSafetyCheckOneThread);
                threads.Add(thread);
                Console.WriteLine("Starting thread " + index);
                thread.Start(subject);
            });

            while (!result.IsCompleted)
            {
                Thread.Sleep(10);
            }

            foreach (Thread thread in threads)
            {
                thread.Join();
                Console.WriteLine("Thread finished ");
            }

            Assert.IsFalse(this.concurrencyFail);
        }
Example #2
0
        private InMemoryBudgetBucketRepository Arrange()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.Initialise(CreateBudgetBucketDtoTestData());
            return(subject);
        }
Example #3
0
        public void CreateNewFixedBudgetProjectShouldThrowGivenEmptyDescription()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.CreateNewFixedBudgetProject("Foo", string.Empty, 1000);
            Assert.Fail();
        }
Example #4
0
        public void InitialiseShouldPopulate9Buckets()
        {
            InMemoryBudgetBucketRepository subject = Arrange();
            int expected = CreateBudgetBucketDtoTestData().Count() + 2; // Surplus and PayCreditCard are added automatically.

            Assert.AreEqual(expected, subject.Buckets.Count());
        }
Example #5
0
        public void CreateNewFixedBudgetProjectShouldThrowGivenNullCode()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.CreateNewFixedBudgetProject(null, "foo bar", 1000);
            Assert.Fail();
        }
Example #6
0
        public void CreateNewFixedBudgetProjectShouldThrowGivenAmountLessThanZero()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.CreateNewFixedBudgetProject("Foo", "Foo bvar", 0);
            Assert.Fail();
        }
Example #7
0
        public void CreateNewFixedBudgetProjectShouldReturnNewBucket()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();
            FixedBudgetProjectBucket       result  = subject.CreateNewFixedBudgetProject("Foo", "Foo var", 1000);

            Assert.IsNotNull(result);
            Assert.IsTrue(subject.IsValidCode(result.Code));
        }
Example #8
0
        public void GetByOrCreateNewShouldThrowGivenNullFactory()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            subject.GetOrCreateNew("CODE", null);

            Assert.Fail();
        }
Example #9
0
        public void CreateNewFixedBudgetProjectShouldThrowGivenCodeAlreadyExists()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.GetOrCreateNew(FixedBudgetProjectBucket.CreateCode("Foo"), () => new FixedBudgetProjectBucket("Foo", "Foo bajh", 2000));
            subject.CreateNewFixedBudgetProject("Foo", "Foo var", 1000);
            Assert.Fail();
        }
Example #10
0
        public void IsValidCodeShouldThrowGivenNullCode()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            subject.IsValidCode(null);

            Assert.Fail();
        }
Example #11
0
        public void InitialiseShouldThrowGivenNullBucketsArgument()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.Initialise(null);

            Assert.Fail();
        }
Example #12
0
        public void GetOrAddShouldAddWhenItemDoesntExist()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            subject.GetOrCreateNew("Foo", () => new IncomeBudgetBucket("Foo", "Bar"));

            Assert.IsTrue(subject.IsValidCode("Foo"));
        }
Example #13
0
        public void GetByOrCreateNewShouldThrowGivenNullCode()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            subject.GetOrCreateNew(null, () => new PayCreditCardBucket());

            Assert.Fail();
        }
Example #14
0
        public void AfterInitialiseSurplusBucketShouldExist()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            subject.Initialise(new List <BudgetBucketDto>());

            Assert.IsTrue(subject.IsValidCode(SurplusBucket.SurplusCode));
            Assert.IsInstanceOfType(subject.GetByCode(SurplusBucket.SurplusCode), typeof(SurplusBucket));
        }
Example #15
0
        public void InitialiseShouldPopulateKnownBuckets()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            Assert.IsTrue(subject.IsValidCode(TestDataConstants.CarMtcBucketCode));
            Assert.IsTrue(subject.IsValidCode(TestDataConstants.HairBucketCode));
            Assert.IsTrue(subject.IsValidCode(TestDataConstants.FoodBucketCode));
            Assert.IsTrue(subject.IsValidCode(TestDataConstants.IncomeBucketCode));
        }
Example #16
0
        private XamlOnDiskBudgetRepository Arrange(IBudgetBucketRepository bucketRepo = null)
        {
            if (bucketRepo == null)
            {
                bucketRepo = new InMemoryBudgetBucketRepository(new Mapper_BudgetBucketDto_BudgetBucket(new BudgetBucketFactory()));
            }

            return(new XamlOnDiskBudgetRepository(
                       bucketRepo,
                       new Mapper_BudgetCollectionDto_BudgetCollection(
                           bucketRepo,
                           new Mapper_BudgetBucketDto_BudgetBucket(new BudgetBucketFactory()),
                           new Mapper_BudgetModelDto_BudgetModel(bucketRepo)),
                       this.mockFileSelector.Object));
        }
Example #17
0
        public void GetOrAddShouldNotAddWhenItemDoesExist()
        {
            InMemoryBudgetBucketRepository subject = Arrange();

            int count = subject.Buckets.Count();

            subject.GetOrCreateNew(
                TestDataConstants.HairBucketCode,
                () =>
            {
                Assert.Fail();
                return(new IncomeBudgetBucket(TestDataConstants.HairBucketCode, "Bar"));
            });

            Assert.AreEqual(count, subject.Buckets.Count());
        }
Example #18
0
        public void NewRepositoryShouldNotContainDefaultBuckets()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            Assert.IsNull(subject.GetByCode(SurplusBucket.SurplusCode));
        }
Example #19
0
        public void IsValidCodeShouldReturnFalseWhenRepositoryIsEmpty()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            Assert.IsFalse(subject.IsValidCode(SurplusBucket.SurplusCode));
        }
Example #20
0
        public void NewRepositoryShouldBeEmpty()
        {
            InMemoryBudgetBucketRepository subject = CreateSubject();

            Assert.IsFalse(subject.Buckets.Any());
        }