public void RangeTaxPolicy_Appliance_Tests()
 {
     var instance = new RangeTaxPolicy<Decimal>(new DefaultRangeOverlapAlgorithm<Decimal>(),
                                                Decimal.Zero,
                                                5070M,
                                                0.1M);
     Assert.Equal(500M, instance.Apply(5000M));
 }
 public void DuplicatePolicyAdded()
 {
     var instance = new AnnualIncomeTaxManager<Decimal>();
     var algorithm = new MockRepository().Stub<IRangeOverlapAlgorithm<Decimal>>();
     var policy1 = new RangeTaxPolicy<Decimal>(algorithm, Decimal.Zero, 5070M, 0.1M);
     instance.AddPolicy(policy1);
     Assert.Throws<ArgumentException>(() => instance.AddPolicy(policy1));
 }
        public void RangeTaxPolicy_Equality_Tests()
        {
            var fakeAlgorithm = new MockRepository().Stub<IRangeOverlapAlgorithm<Decimal>>();

            var policy1 = new RangeTaxPolicy<Decimal>(fakeAlgorithm, Decimal.Zero, 5070M, 0.1M);
            Assert.Equal(policy1, policy1);
            Assert.Equal(policy1.GetHashCode(), policy1.GetHashCode());

            Assert.NotNull(policy1);

            var policy2 = new RangeTaxPolicy<Decimal>(fakeAlgorithm, Decimal.Zero, 5070M, 0.1M);
            Assert.Equal(policy1, policy2);
            Assert.Equal(policy2, policy1);
            Assert.Equal(policy1.GetHashCode(), policy2.GetHashCode());

            var policy3 = new RangeTaxPolicy<Decimal>(fakeAlgorithm, Decimal.Zero, 5071M, 0.1M);
            Assert.NotEqual(policy1, policy3);
            Assert.NotEqual(policy1.GetHashCode(), policy3.GetHashCode());
            Assert.NotEqual(policy2, policy3);
            Assert.NotEqual(policy2.GetHashCode(), policy3.GetHashCode());
        }