Exemple #1
0
        public void DistributeUniformRatioToLastIsCorrect()
        {
            Money amountToDistribute = 0.05M;

            // two decimal places
            var distributor = new MoneyDistributor(amountToDistribute, FractionReceivers.LastToFirst, RoundingPlaces.Two);

            var distribution = distributor.Distribute(0.3M);

            Assert.That(3, Is.EqualTo(distribution.Length));
            Assert.That(new Money(0.01M), Is.EqualTo(distribution[0]));
            Assert.That(new Money(0.02M), Is.EqualTo(distribution[1]));
            Assert.That(new Money(0.02M), Is.EqualTo(distribution[2]));

            // seven decimal places
            distributor = new MoneyDistributor(amountToDistribute,
                                               FractionReceivers.LastToFirst,
                                               RoundingPlaces.Seven);

            distribution = distributor.Distribute(0.3M);

            Assert.That(3, Is.EqualTo(distribution.Length));
            Assert.That(new Money(0.0166666M), Is.EqualTo(distribution[0]));
            Assert.That(new Money(0.0166667M), Is.EqualTo(distribution[1]));
            Assert.That(new Money(0.0166667M), Is.EqualTo(distribution[2]));
        }
Exemple #2
0
        public void UniformDistributionMustBeBetween0And1()
        {
            var distributor = new MoneyDistributor(1.0M, FractionReceivers.LastToFirst, RoundingPlaces.Two);

            Assert.Throws <ArgumentOutOfRangeException>(() => distributor.Distribute(0));
            Assert.Throws <ArgumentOutOfRangeException>(() => distributor.Distribute(1.1M));
        }
Exemple #3
0
        public void DistributeUniformRatioToLastIsCorrect()
        {
            System.Money amountToDistribute = 0.05M;

            // two decimal places
            MoneyDistributor distributor = new MoneyDistributor(amountToDistribute, FractionReceivers.LastToFirst, RoundingPlaces.Two);

            System.Money[] distribution = distributor.Distribute(0.3M);

            Assert.AreEqual(3, distribution.Length);
            Assert.AreEqual(new System.Money(0.01M), distribution[0]);
            Assert.AreEqual(new System.Money(0.02M), distribution[1]);
            Assert.AreEqual(new System.Money(0.02M), distribution[2]);

            // seven decimal places
            distributor = new MoneyDistributor(amountToDistribute,
                                               FractionReceivers.LastToFirst,
                                               RoundingPlaces.Seven);

            distribution = distributor.Distribute(0.3M);

            Assert.AreEqual(3, distribution.Length);
            Assert.AreEqual(new System.Money(0.0166666M), distribution[0]);
            Assert.AreEqual(new System.Money(0.0166667M), distribution[1]);
            Assert.AreEqual(new System.Money(0.0166667M), distribution[2]);
        }
Exemple #4
0
        public void DistributeNonuniformRatiosToLastIsCorrect()
        {
            Money amountToDistribute = 0.05M;

            var distributor = new MoneyDistributor(amountToDistribute, FractionReceivers.LastToFirst, RoundingPlaces.Two);

            var distribution = distributor.Distribute(0.7M, 0.3M);

            Assert.That(2, Is.EqualTo(distribution.Length));
            Assert.That(0.03, Is.EqualTo(distribution[0]));
            Assert.That(0.02, Is.EqualTo(distribution[1]));
        }
        public void should_distribute_properly()
        {
            var entries = new List<TestEntry>() {
                new TestEntry(1),
                new TestEntry(1),
                new TestEntry(1),
            }.AsEnumerable();

            var adjustments = new MoneyDistributor<TestEntry>(entries)
                .GetAdjustments(1, e => e.Total)
                .ToList();

            adjustments[0].Value.Should().Be(0.33M);
            adjustments[1].Value.Should().Be(0.33M);
            adjustments[2].Value.Should().Be(0.34M);
        }
Exemple #6
0
        public void should_distribute_properly()
        {
            var entries = new List <TestEntry>()
            {
                new TestEntry(1),
                new TestEntry(1),
                new TestEntry(1),
            }.AsEnumerable();

            var adjustments = new MoneyDistributor <TestEntry>(entries)
                              .GetAdjustments(1, e => e.Total)
                              .ToList();

            adjustments[0].Value.Should().Be(0.33M);
            adjustments[1].Value.Should().Be(0.33M);
            adjustments[2].Value.Should().Be(0.34M);
        }