public void Area_Addition_Then_ResultShouldBeExpected(double lhs, double rhs, double expected)
        {
            var testee1 = new Area(lhs, x => x.Kilo.Meters * x.Kilo.Meters);
            var testee2 = new Area(rhs, x => x.Kilo.Meters * x.Kilo.Meters);

            IQuantity result = testee1 + testee2;

            result.Value.Should().Be(expected);
        }
        public void Area_Multiplication_When_MultiplyingWithAnyNumber_Then_ResultShouldBeExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee1 = new Area(lhs, x => x.Square.Meters);

            var result = testee1 * rhs;

            result.Should().Be(expected, "m²");
        }
        public void Area_Addition_When_AddingAnyNumber_Then_ResultShouldBeExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee = new Area(lhs, x => x.Square.Kilo.Meters);

            var result = testee + rhs;

            result.Should().Be(expected, "km²");
        }
        public void Area_Multiplication_When_MultiplyingWithAnyLength_Then_ResultShouldBeExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee = new Area(lhs, x => x.Square.Meters);
            var length = new Distance(rhs, x => x.Miles);

            var result = testee * length;

            result.Should().Be(expected, "m³");
        }
        public void Volume_Division_When_DividingWithArea_Then_ResultShouldBeExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee1 = new Volume(lhs, x => x.Meters * x.Meters * x.Meters);
            var testee2 = new Area(rhs, x => x.Meters * x.Meters);

            var result = testee1 / testee2;

            result.Should().Be(expected, "m");
        }
        public void Area_Addition_When_UnitsAreDifferent_Then_ResultBeApproximatelyExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee1 = new Area(lhs, x => x.Miles * x.Miles);
            var testee2 = new Area(rhs, x => x.Kilo.Meters * x.Kilo.Meters);

            var result = testee1 + testee2;

            result.Should().BeApproximately(expected, "mi²", TestHelper.DefaultAssertPrecision);
        }
        public void Area_Addition_When_PrefixesAreDifferent_Then_ResultShouldBeExpected(
            double lhs,
            double rhs,
            double expected)
        {
            var testee1 = new Area(lhs, x => x.Kilo.Meters * x.Kilo.Meters);
            var testee2 = new Area(rhs, x => x.Meters * x.Meters);

            var result = testee1 + testee2;

            result.Should().Be(expected, "km²");
        }
        public void Area_Addition_Then_ResultUnitShouldBe_km2()
        {
            var testee1 = new Area(0, x => x.Kilo.Meters * x.Kilo.Meters);
            var testee2 = new Area(0, x => x.Kilo.Meters * x.Kilo.Meters);

            var result = testee1 + testee2;

            result.Unit.ToString().Should().Be("km²");
        }