Exemple #1
0
        public void Should_compare_with_null_instance(double value)
        {
            var instance = new Metre(value);

            Assert.IsFalse(instance.Equals(null), "Equals");
            Assert.AreEqual(1, instance.CompareTo(null), "CompareTo");
        }
Exemple #2
0
        public void Should_not_throw_exception_on_division_by_zero(double value, double expectedValue)
        {
            var instance = new Metre(value);
            var actual   = instance / 0d;

            Assert.AreEqual(expectedValue, actual.Value);
        }
Exemple #3
0
        public void Should_initialize_instance(double value)
        {
            var actual = new Metre(value);

            Assert.IsAssignableFrom <Metre>(actual);
            Assert.AreEqual(value, actual.Value, nameof(actual.Value));
        }
Exemple #4
0
        public void Should_compare_with_another_type_of_instance(double value)
        {
            var    instance1 = new Metre(value);
            object instance2 = value;

            Assert.IsFalse(instance1.Equals(instance2), "Equals");
            Assert.Throws <ArgumentException>(() => instance1.CompareTo(instance2), "CompareTo");
        }
Exemple #5
0
        public void Should_cast_to_double(double value)
        {
            var instance = new Metre(value);

            var actual = (double)instance;

            Assert.AreEqual(value, actual);
        }
Exemple #6
0
        public void Should_cast_from_double(double value)
        {
            var expected = new Metre(value);

            var actual = (Metre)value;

            Assert.AreEqual(expected, actual);
        }
Exemple #7
0
        public void DictionaryTest()
        {
            Unit millimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Milli
            };
            Unit centimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Centi
            };
            Unit decimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Deci
            };
            Unit inch = new Inch();
            Dictionary <Unit, string> units = new Dictionary <Unit, string>();

            units.Add(millimetre, millimetre.Symbol);
            units.Add(centimetre, centimetre.Symbol);
            units.Add(decimetre, decimetre.Symbol);
            units.Add(inch, inch.Symbol);

            //Theese should work, of course
            Assert.IsTrue(units.ContainsKey(millimetre));
            Assert.IsTrue(units.ContainsKey(centimetre));
            Assert.IsTrue(units.ContainsKey(decimetre));
            Assert.IsTrue(units.ContainsKey(inch));

            Unit newMillimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Milli
            };
            Unit newInch = new Inch();

            //Why this does not work? After all, isn't a millimetre always a millimetre?
            Assert.IsTrue(units.ContainsKey(newMillimetre));
            Assert.IsTrue(units.ContainsKey(newInch));

            bool containsNewMillimetre = false;
            bool containsNewInch       = false;

            foreach (Unit unit in units.Keys)
            {
                if (unit == newMillimetre)
                {
                    containsNewMillimetre = true;
                }
                if (unit == newInch)
                {
                    containsNewInch = true;
                }
            }
            Assert.IsTrue(containsNewMillimetre);
            Assert.IsTrue(containsNewInch);

            Assert.IsTrue(units[newMillimetre] == millimetre.Symbol);
            Assert.IsTrue(units[newInch] == inch.Symbol);
        }
Exemple #8
0
        public void Should_format_string(string format, string mask)
        {
            var expected = string.Format(Consts.CultureEnUS, mask, 1.757899e2);

            var instance = new Metre(1.757899e2);
            var actual   = instance.ToString(format, Consts.CultureEnUS);

            Assert.AreEqual(expected, actual);
        }
Exemple #9
0
        public void Should_divide_instance_by_double(double leftValue, double rightValue, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var instance = new Metre(leftValue);
            var actual   = instance / rightValue;

            Assert.AreEqual(expected, actual);
        }
Exemple #10
0
        public void Should_own_a_HashCode(double value)
        {
            var expected = value.GetHashCode();

            var instance = new Metre(value);
            var actual   = instance.GetHashCode();

            Assert.AreEqual(expected, actual);
        }
Exemple #11
0
        public void Should_round_value_withDigit(double value, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var instance = new Metre(value);
            var actual   = instance.Round(1);

            Assert.AreEqual(expected, actual);
        }
Exemple #12
0
        public void Should_roundvalue_withMode(MidpointRounding mode, double value, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var instance = new Metre(value);
            var actual   = instance.Round(mode);

            Assert.AreEqual(expected, actual);
        }
Exemple #13
0
        public void Should_floor_value(double value, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var instance = new Metre(value);
            var actual   = instance.Floor();

            Assert.AreEqual(expected, actual);
        }
Exemple #14
0
        public void Should_convert_to_string(double value)
        {
            var expected = $"{value:e} m";

            var instance = new Metre(value);
            var actual   = instance.ToString();

            Assert.AreEqual(expected, actual);
        }
Exemple #15
0
        public void Should_multiply_double_by_instance(double leftValue, double rightValue, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var instance = new Metre(rightValue);

            var actual = leftValue * instance;

            Assert.AreEqual(expected, actual);
        }
Exemple #16
0
        public void Should_subtract_two_instances(double leftValue, double rightValue, double expectedValue)
        {
            var expected = new Metre(expectedValue);

            var leftInstance  = new Metre(leftValue);
            var rightInstance = new Metre(rightValue);
            var actual        = leftInstance - rightInstance;

            Assert.AreEqual(expected, actual);
        }
        public void Should_multiply_squareMetre_by_instance(double leftValue, double rightValue, double expectedValue)
        {
            var expected = new CubicMetre(expectedValue);

            var leftInstance  = new SquareMetre(leftValue);
            var rightInstance = new Metre(rightValue);
            var actual        = leftInstance * rightInstance;

            Assert.AreEqual(expected, actual);
        }
Exemple #18
0
        public void ListTest()
        {
            Unit millimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Milli
            };
            Unit centimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Centi
            };
            Unit decimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Deci
            };
            Unit        inch  = new Inch();
            List <Unit> units = new List <Unit>();

            units.Add(millimetre);
            units.Add(centimetre);
            units.Add(decimetre);
            units.Add(inch);

            //Theese should work, of course
            Assert.IsTrue(units.Contains(millimetre));
            Assert.IsTrue(units.Contains(centimetre));
            Assert.IsTrue(units.Contains(decimetre));
            Assert.IsTrue(units.Contains(inch));

            Unit newMillimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Milli
            };
            Unit newInch = new Inch();

            //Why this does not work? After all, isn't a millimetre always a millimetre?
            Assert.IsTrue(units.Contains(newMillimetre));
            Assert.IsTrue(units.Contains(newInch));

            bool containsNewMillimetre = false;
            bool containsNewInch       = false;

            foreach (Unit unit in units)
            {
                if (unit == newMillimetre)
                {
                    containsNewMillimetre = true;
                }
                if (unit == newInch)
                {
                    containsNewInch = true;
                }
            }
            Assert.IsTrue(containsNewMillimetre);
            Assert.IsTrue(containsNewInch);
        }
Exemple #19
0
        public void PathToDefaultUnitTest()
        {
            //from pico Gram to default Kilo Gram
            Unit target = new Gram();

            ((MetricUnit)target).UnitPrefix = MetricPrefix.None;


            UnitPathStack actual   = target.PathToDefaultUnit();
            double        expected = System.Math.Pow(10, -3);

            Assert.AreEqual(expected, actual.ConversionFactor);


            target = new Metre();
            ((MetricUnit)target).UnitPrefix = MetricPrefix.Tera;
            actual   = target.PathToDefaultUnit();
            expected = System.Math.Pow(10, 12);

            Assert.AreEqual(expected, actual.ConversionFactor);



            target   = new Unit(typeof(QuantitySystem.Quantities.Volume <>));
            actual   = target.PathToDefaultUnit();
            expected = 1;
            Assert.AreEqual(expected, actual.ConversionFactor);



            target = new QuantitySystem.Units.Metric.Litre();
            //((SIUnit)target).UnitPrefix = SIPrefix.Kilo;
            actual   = target.PathToDefaultUnit(); // from Litre to m^3
            expected = 1e-3;
            Assert.AreEqual(expected, actual.ConversionFactor);

            target = new QuantitySystem.Units.Metric.Litre();
            ((MetricUnit)target).UnitPrefix = MetricPrefix.Kilo;
            actual   = target.PathToDefaultUnit(); // from Litre to m^3
            expected = 1;
            Assert.AreEqual(expected, actual.ConversionFactor);

            target = new QuantitySystem.Units.Metric.Bar();
            //((SIUnit)target).UnitPrefix = SIPrefix.Kilo;
            actual   = target.PathToDefaultUnit(); // from Litre to m^3
            expected = 1e+5;
            Assert.AreEqual(expected, actual.ConversionFactor);



            target   = new QuantitySystem.Units.Metric.Cgs.Dyne();
            actual   = target.PathToDefaultUnit();
            expected = 1e-5;
            Assert.AreEqual(expected, actual.ConversionFactor);
        }
        public void MetreConstructorTest()
        {
            Metre target = new Metre();

            Assert.AreEqual("m", target.Symbol);
            Assert.AreEqual(typeof(Length <>), target.QuantityType);
            Assert.AreEqual(MetricPrefix.None, target.UnitPrefix);

            Assert.AreEqual(true, target.IsBaseUnit);
            Assert.AreEqual(true, target.IsDefaultUnit);
        }
Exemple #21
0
        public void Should_cast_from_Megametre(double megametreValue, double expectedValue)
        {
            var megametreInstance = new SystemOfUnits.Length.Metre.Megametre(megametreValue);

            Metre actual = megametreInstance;

            Assert.IsAssignableFrom <Metre>(actual);

            var actualValue = actual.Value;

            Assert.AreEqual(expectedValue.ToString("E"), actualValue.ToString("E"));
        }
        public void VelocityEquation()
        {
            int value1 = 100;
            int value2 = 100;

            PhysicalUnit second = new Second(value1);
            PhysicalUnit metre  = new Metre(value2);

            Velocity velocity = metre / second;

            Assert.AreEqual(expected: value1 / value2, actual: velocity.Value);
        }
Exemple #23
0
        public void LengthTestPassing()
        {
            double value1 = 100;
            double value2 = 300;

            Metre metre1 = new Metre(value1, 100, 600);
            Metre metre2 = new Metre(value2);

            Kilometre kilometre = metre1 + metre2;

            Assert.AreEqual(expected: (value2 + value1) * 1 / Kilometre.KilometreConversionFactor, actual: kilometre.Value);
        }
Exemple #24
0
        public void MoreEqualityTestsTest()
        {
            Unit millimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Milli
            };
            Unit centimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Centi
            };
            Unit decimetre = new Metre()
            {
                UnitPrefix = MetricPrefix.Deci
            };
            Unit inch = new Inch();

            Assert.IsTrue(millimetre != centimetre);
            Assert.IsTrue(AreNotEqual(millimetre, centimetre));
        }
Exemple #25
0
        public void PathFromDefaultUnitTest()
        {
            MetricUnit target = new Gram();

            target.UnitPrefix = MetricPrefix.Milli;


            UnitPathStack actual   = target.PathFromDefaultUnit();
            double        expected = System.Math.Pow(10, 6);

            Assert.AreEqual(expected, actual.ConversionFactor);


            target            = new Metre();
            target.UnitPrefix = MetricPrefix.Tera;
            actual            = target.PathFromDefaultUnit();
            expected          = System.Math.Pow(10, -12);

            Assert.AreEqual(expected, actual.ConversionFactor);
        }
Exemple #26
0
        public void Should_compare_with_same_value(double value)
        {
            var baseInstance  = new Metre(value);
            var otherInstance = new Metre(value);

            Assert.IsTrue(baseInstance.Equals(otherInstance), "Equals");
            Assert.IsTrue(baseInstance.Equals((object)otherInstance), "Equals object");

            Assert.IsTrue(baseInstance == otherInstance, "==");
            Assert.IsFalse(baseInstance != otherInstance, "!=");

            Assert.AreEqual(0, baseInstance.CompareTo(otherInstance), "CompareTo");
            Assert.AreEqual(0, baseInstance.CompareTo((object)otherInstance), "CompareTo object");

            Assert.IsFalse(baseInstance < otherInstance, "<");
            Assert.IsFalse(baseInstance > otherInstance, ">");

            Assert.IsTrue(baseInstance <= otherInstance, "<=");
            Assert.IsTrue(baseInstance >= otherInstance, ">=");
        }
Exemple #27
0
        public void Should_compare_with_smaller_value(double baseValue, double smallerValue)
        {
            var baseInstance    = new Metre(baseValue);
            var smallerInstance = new Metre(smallerValue);

            Assert.IsFalse(baseInstance.Equals(smallerInstance), "Equals");
            Assert.IsFalse(baseInstance.Equals((object)smallerInstance), "Equals object");

            Assert.IsFalse(baseInstance == smallerInstance, "==");
            Assert.IsTrue(baseInstance != smallerInstance, "!=");

            Assert.AreEqual(+1, baseInstance.CompareTo(smallerInstance), "CompareTo");
            Assert.AreEqual(+1, baseInstance.CompareTo((object)smallerInstance), "CompareTo object");

            Assert.IsFalse(baseInstance < smallerInstance, "<");
            Assert.IsTrue(baseInstance > smallerInstance, ">");

            Assert.IsFalse(baseInstance <= smallerInstance, "<=");
            Assert.IsTrue(baseInstance >= smallerInstance, ">=");
        }
Exemple #28
0
        public void Should_compare_with_bigger_value(double baseValue, double biggerValue)
        {
            var baseInstance   = new Metre(baseValue);
            var biggerInstance = new Metre(biggerValue);

            Assert.IsFalse(baseInstance.Equals(biggerInstance), "Equals");
            Assert.IsFalse(baseInstance.Equals((object)biggerInstance), "Equals object");

            Assert.IsFalse(baseInstance == biggerInstance, "==");
            Assert.IsTrue(baseInstance != biggerInstance, "!=");

            Assert.AreEqual(-1, baseInstance.CompareTo(biggerInstance), "CompareTo");
            Assert.AreEqual(-1, baseInstance.CompareTo((object)biggerInstance), "CompareTo object");

            Assert.IsTrue(baseInstance < biggerInstance, "<");
            Assert.IsFalse(baseInstance > biggerInstance, ">");

            Assert.IsTrue(baseInstance <= biggerInstance, "<=");
            Assert.IsFalse(baseInstance >= biggerInstance, ">=");
        }
        public void PathToUnitTest()
        {
            double expected = 63360;

            Mile mil = new Mile();
            Inch i   = new Inch();

            UnitPathStack actual = mil.PathToUnit(i);

            Assert.AreEqual(expected, actual.ConversionFactor);


            Gram g = new Gram();

            g.UnitPrefix = MetricPrefix.None;

            Gram Mg = new Gram();

            Mg.UnitPrefix = MetricPrefix.Mega;

            actual = g.PathToUnit(Mg);

            Assert.AreEqual(1e-6, actual.ConversionFactor);


            Metre mr = new Metre();

            actual = i.PathToUnit(mr);

            Assert.AreEqual(0.0254, actual.ConversionFactor);

            //now the idea is to make any combination of units to go to any combination of units
            QuantityDimension qd = QuantityDimension.ParseMLT("M1L0T-1");
            Unit u = Unit.DiscoverUnit(qd);

            Assert.AreEqual("<kg/s>", u.Symbol);
            Assert.AreEqual(qd, u.UnitDimension);
        }
Exemple #30
0
 public Metre3 SetMaxVolume(Metre volume)
 {
     maxVolume = volume;
 }