public void Sum_Follows_The_Properties_Of_Addition() {
            // Arrange
            var calc = new Calculator();

            // Act
            var itSums = calc.Sum(3, 5) == 8 && calc.Sum(-1, -3) == -4;
            var conmutative = calc.Sum(1, 2) == calc.Sum(2, 1);
            var associative = calc.Sum(1, calc.Sum(2, 3)) == calc.Sum(calc.Sum(1, 2), 3);
            var additiveIdentitity = calc.Sum(1, 0) == 1;
            var distributive = calc.Multiply(2, calc.Sum(1, 3)) == calc.Sum(calc.Multiply(2, 1), calc.Multiply(2, 3));

            //Assert
            Assert.IsTrue(itSums, "Addition");
            Assert.IsTrue(conmutative, "Conmutative");
            Assert.IsTrue(associative, "Associative");
            Assert.IsTrue(additiveIdentitity, "Additive identity");
            Assert.IsTrue(distributive, "Distributive");
        }
        public void Substract_Follows_The_Properties_Of_Substraction() {
            // Arrange
            var calc = new Calculator();

            // Act
            var itSubstracts = calc.Substract(3, 5) == -2 && calc.Substract(-1, -3) == 2 && calc.Substract(10, 3) == 7;
            var conmutative = calc.Substract(1, 2) == calc.Substract(2, 1);
            var associative = calc.Substract(1, calc.Substract(2, 3)) == calc.Substract(calc.Substract(1, 2), 3);
            var identity = calc.Substract(1, 0) == 1;
            var distributive = calc.Multiply(2, calc.Substract(1, 3)) ==
                               calc.Substract(calc.Multiply(2, 1), calc.Multiply(2, 3));

            //Assert
            Assert.IsTrue(itSubstracts, "Substraction");
            Assert.IsFalse(conmutative, "Conmutative");
            Assert.IsFalse(associative, "Associative");
            Assert.IsTrue(identity, "Identity");
            Assert.IsTrue(distributive, "Distributive");
        }
        public void Multiply_Follows_The_Properties_Of_Multiplication() {
            // Arrange
            var calc = new Calculator();

            // Act
            var itMultiplies = calc.Multiply(3, 5) == 15 && calc.Multiply(-1, -3) == 3 && calc.Multiply(2, -1) == -2;
            var conmutative = calc.Multiply(3, 2) == calc.Multiply(2, 3);
            var associative = calc.Multiply(1, calc.Multiply(2, 3)) == calc.Multiply(calc.Multiply(1, 2), 3);
            var multiplicativeIdentitity = calc.Multiply(3, 1) == 3;
            var distributiveSum = calc.Multiply(2, calc.Sum(1, 3)) == calc.Sum(calc.Multiply(2, 1), calc.Multiply(2, 3));
            var distributiveSubstraction = calc.Multiply(2, calc.Substract(1, 3)) ==
                                           calc.Substract(calc.Multiply(2, 1), calc.Multiply(2, 3));

            //Assert
            Assert.IsTrue(itMultiplies, "Multiplication");
            Assert.IsTrue(conmutative, "Conmutative");
            Assert.IsTrue(associative, "Associative");
            Assert.IsTrue(multiplicativeIdentitity, "Multiplicative identity");
            Assert.IsTrue(distributiveSum, "Distributive sum");
            Assert.IsTrue(distributiveSubstraction, "Distributive substraction");
        }
        public void Divide_Follows_The_Properties_Of_Division() {
            // Arrange
            var calc = new Calculator();

            // Act
            var itDivides = calc.Divide(6, 3) == 2 && calc.Divide(-10, -5) == 2 && calc.Divide(15, -3) == -5;
            var divisiveIdentitity = calc.Divide(3, 1) == 3;
            var zeroDivision = calc.Divide(0, 3) == 0;
            var conmutative = calc.Divide(10, 5) == calc.Divide(5, 10);
            var associative = calc.Divide(16, calc.Divide(8, 4)) == calc.Divide(calc.Multiply(16, 8), 4);
            int? divisionByZero = null;
            try {
                divisionByZero = calc.Divide(3, 0);
            } catch {}


            //Assert
            Assert.IsTrue(itDivides, "Division");
            Assert.IsFalse(conmutative, "Conmutative");
            Assert.IsFalse(associative, "Associative");
            Assert.IsTrue(divisiveIdentitity, "Divisive identity");
            Assert.IsTrue(zeroDivision, "Zero division");
            Assert.IsNull(divisionByZero, "Division by zero");
        }