コード例 #1
0
        public void Adding_3_monies_in_any_order_returns_the_same_result(SameCurrency <string> monies)
        {
            var(x, y, z) = monies;

            Assert.Equal(x + y + z, x + (y + z));
            Assert.Equal(x.Add(y).Add(z), x.Add(y.Add(z)));
        }
コード例 #2
0
        public void Multiplying_the_sum_of_2_monies_is_the_same_as_multiplying_each_one_and_then_adding_the_result(decimal x, SameCurrency <string> monies)
        {
            var(y, z) = monies;

            Assert.Equal((y + z) * x, y * x + z * x);
            Assert.Equal(y.Add(z).Multiply(x), y.Multiply(x).Add(z.Multiply(x)));
        }
コード例 #3
0
        public void Adding_x_to_y_is_the_same_as_adding_y_to_x(SameCurrency <string> monies)
        {
            var(x, y) = monies;

            Assert.Equal(x + y, y + x);
            Assert.Equal(x.Add(y), y.Add(x));
        }
コード例 #4
0
        public void Substracting_y_to_x_is_the_same_as_adding_opposite_of_y_to_x(SameCurrency <string> monies)
        {
            var(x, y) = monies;

            Assert.Equal(x - y, x + (-y));
            Assert.Equal(x.Subtract(y), x.Add(y.Negate()));
        }
コード例 #5
0
        public void Substracting_x_to_y_is_opposite_of_substracting_y_to_x(SameCurrency <string> monies)
        {
            var(x, y) = monies;

            Assert.Equal(x - y, -(y - x));
            Assert.Equal(x.Subtract(y), y.Subtract(x).Negate());
        }
コード例 #6
0
        public void Multiplying_by_negative_reverses_order(NegativeInt x, SameCurrency <string> monies)
        {
            var(y, z) = monies;
            var x_ = (int)x;

            Assert.NotEqual(y > z, (y * x_) > (z * x_));
            Assert.NotEqual(y > z, y.Multiply(x_) > z.Multiply(x_));
        }
コード例 #7
0
        public void Multiplying_by_positive_preserves_order(PositiveInt x, SameCurrency <string> monies)
        {
            var(y, z) = monies;
            var x_ = (int)x;

            Assert.Equal(y > z, (y * x_) > (z * x_));
            Assert.Equal(y > z, y.Multiply(x_) > z.Multiply(x_));
        }
コード例 #8
0
        public void Dividing_the_sum_of_2_monies_is_the_same_as_dividing_each_and_then_adding_the_result(NonZeroInt x, SameCurrency <string> monies)
        {
            var(y, z) = monies;
            var x_ = (int)x;

            Assert.Equal((y + z) / x_, (y / x_) + (z / x_));
            Assert.Equal(y.Add(z).Divide(x_), y.Divide(x_).Add(z.Divide(x_)));
        }
コード例 #9
0
        public void At_least_one_money_must_be_lt_or_eq_the_other(SameCurrency <T> monies)
        {
            var(x, y) = monies;

            Assert.True(x.CompareTo(y) <= 0 || y.CompareTo(x) <= 0);
            Assert.True(x.CompareTo((object)y) <= 0 || y.CompareTo((object)x) <= 0);
            Assert.True(x <= y || y <= x);
            Assert.True(x >= y || y >= x);
        }
コード例 #10
0
        public void If_x_lte_y_and_y_lte_z_then_x_lte_z(SameCurrency <T> monies)
        {
            var(x, y, z) = monies;

            if (x <= y && y <= z)
            {
                Assert.True(x <= z);
                Assert.True(x.CompareTo(z) <= 0);
                Assert.True(x.CompareTo((object)z) <= 0);
            }
        }
コード例 #11
0
        public void For_any_x_and_y_there_must_be_2_monies_that_turns_x_into_y(SameCurrency <string> monies)
        {
            var(x, y) = monies;

            var a = x - y;
            var b = x + y;

            Assert.Equal(y, x - a);
            Assert.Equal(y, x.Subtract(a));
            Assert.Equal(y, b - x);
            Assert.Equal(y, b.Subtract(x));
        }
コード例 #12
0
        public void If_both_are_lte_then_they_are_equal(SameCurrency <T> monies)
        {
            var(x, y) = monies;

            if (x <= y && y <= x)
            {
                Assert.True(x.Equals(y));
                Assert.True(x.Equals((object)y));
                Assert.True(x == y);
                Assert.False(x != y);
                Assert.Equal(0, x.CompareTo(y));
                Assert.Equal(0, x.CompareTo((object)y));
            }
        }
コード例 #13
0
        public void If_not_equal_then_x_to_y_is_opposite_than_y_to_x(SameCurrency <T> monies)
        {
            var(x, y) = monies;

            var r = x.CompareTo(y);

            if (r != 0)
            {
                var sign = Math.Sign(r) * -1;

                Assert.Equal(sign, Math.Sign(y.CompareTo(x)));
                Assert.Equal(sign, Math.Sign(y.CompareTo((object)x)));
                Assert.True(x < y != y < x);
                Assert.True(x <= y != y <= x);
                Assert.True(x > y != y > x);
                Assert.True(x >= y != y >= x);
            }
        }