Пример #1
0
        public string Label_with_ProductQuotient_Power(string value, string powerValue)
        {
            ProductQuotientSet power = new ProductQuotientSet(powerValue);
            PrimitiveUnit      unit  = new PrimitiveUnit(value, power);

            return(unit.Label());
        }
Пример #2
0
        public string Simplify_Zero_Power_Returns_One(string value)
        {
            PrimitiveUnit unit           = new PrimitiveUnit(value);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #3
0
        public void ForEach_Throws_Exception()
        {
            PrimitiveUnit      unit0 = new PrimitiveUnit("a");
            ProductQuotientSet productQuotientSet = new ProductQuotientSet(unit0);
            PrimitiveUnit      unit1 = new PrimitiveUnit("b", new PrimitiveUnit("2"));

            productQuotientSet.MultiplyItem(unit1);
            PrimitiveUnit unit2 = new PrimitiveUnit("c");

            productQuotientSet.DivideItem(unit2);

            // Not incremented yet
            IEnumerator enumerator = productQuotientSet.GetEnumerator();

            Assert.Throws <ArgumentOutOfRangeException>(() => { IBase badUnit = (IBase)enumerator.Current; });

            enumerator.MoveNext();
            UnitOperatorPair unitOperatorPair = (UnitOperatorPair)enumerator.Current;

            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit0));
            enumerator.MoveNext();
            unitOperatorPair = (UnitOperatorPair)enumerator.Current;
            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit1));
            enumerator.MoveNext();
            unitOperatorPair = (UnitOperatorPair)enumerator.Current;
            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit2));

            // Too many increments
            enumerator.MoveNext();
            Assert.Throws <ArgumentOutOfRangeException>(() => { IBase badUnit = (IBase)enumerator.Current; });
        }
Пример #4
0
        public string GetAbsolute(string value)
        {
            PrimitiveUnit unit         = new PrimitiveUnit(value);
            IBase         absoluteUnit = unit.GetAbsolute();

            return(absoluteUnit.Label());
        }
Пример #5
0
        public string Simplify_Nothing_Or_Empty_Returns_Empty(string value)
        {
            PrimitiveUnit unit           = new PrimitiveUnit(value);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #6
0
        public string Simplify_Null_Power_Returns_Base(string value)
        {
            PrimitiveUnit unit           = new PrimitiveUnit(value, null);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #7
0
        public string Simplify_Fractional_Power_Returns_Reduced_Fraction(string value)
        {
            PrimitiveUnit unit           = new PrimitiveUnit(value);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #8
0
        public void Initialize_As_String_Primitives(string value, string expectedLabel)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.That(symbolicValue.Label(), Is.EqualTo(expectedLabel));
            Assert.That(symbolicValue.ToString(), Is.EqualTo(expectedLabel));
        }
Пример #9
0
        public string Label_with_SumDifference_Power(string value, string powerValue)
        {
            SumDifferenceSet power = new SumDifferenceSet(powerValue);
            PrimitiveUnit    unit  = new PrimitiveUnit(value, power);

            return(unit.Label());
        }
Пример #10
0
        public string Simplify_Negative_Power_Returns_Inverse_Fraction(string value)
        {
            PrimitiveUnit unit           = new PrimitiveUnit(value);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #11
0
        public void Override_CloneUnit()
        {
            PrimitiveUnit unitOriginal = new PrimitiveUnit("-2^3");
            PrimitiveUnit unitClone    = unitOriginal.CloneUnit();

            Assert.IsTrue(unitOriginal.Equals(unitClone));
        }
Пример #12
0
        public void ForEach_Resets()
        {
            PrimitiveUnit      unit0 = new PrimitiveUnit("a");
            ProductQuotientSet productQuotientSet = new ProductQuotientSet(unit0);
            PrimitiveUnit      unit1 = new PrimitiveUnit("b", new PrimitiveUnit("2"));

            productQuotientSet.MultiplyItem(unit1);
            PrimitiveUnit unit2 = new PrimitiveUnit("c");

            productQuotientSet.DivideItem(unit2);

            IEnumerator enumerator = productQuotientSet.GetEnumerator();

            enumerator.MoveNext();
            UnitOperatorPair unitOperatorPair = (UnitOperatorPair)enumerator.Current;

            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit0));
            enumerator.MoveNext();
            unitOperatorPair = (UnitOperatorPair)enumerator.Current;
            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit1));

            enumerator.Reset();
            unitOperatorPair = (UnitOperatorPair)enumerator.Current;
            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit0));
        }
Пример #13
0
        public void ForEach_Iterates_Items()
        {
            PrimitiveUnit      unit0 = new PrimitiveUnit("a");
            ProductQuotientSet productQuotientSet = new ProductQuotientSet(unit0);
            PrimitiveUnit      unit1 = new PrimitiveUnit("b", new PrimitiveUnit("2"));

            productQuotientSet.MultiplyItem(unit1);
            PrimitiveUnit unit2 = new PrimitiveUnit("c");

            productQuotientSet.DivideItem(unit2);

            int counter = 0;

            foreach (UnitOperatorPair item in productQuotientSet)
            {
                switch (counter)
                {
                case 0:
                    Assert.IsTrue(item.Unit.Equals(unit0));
                    break;

                case 1:
                    Assert.IsTrue(item.Unit.Equals(unit1));
                    break;

                case 2:
                    Assert.IsTrue(item.Unit.Equals(unit2));
                    break;
                }

                counter++;
            }
        }
Пример #14
0
        public string Simplify_Empty_Power_Returns_Base(string value)
        {
            PrimitiveUnit emptyPower     = new PrimitiveUnit(string.Empty);
            PrimitiveUnit unit           = new PrimitiveUnit(value, emptyPower);
            IBase         simplifiedUnit = unit.Simplify();

            return(simplifiedUnit.Label());
        }
Пример #15
0
        public void Calculate_With_Power_Symbolic(string value)
        {
            string        exponent      = "Bar";
            PrimitiveUnit power         = new PrimitiveUnit(exponent);
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value, power);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(0));

            symbolicValue = new PrimitiveUnit(value + Query.POWER + exponent);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(0));
        }
Пример #16
0
        public void Calculate_With_Power_Root(string value, double expectedResult)
        {
            string        exponent      = "0.5";
            PrimitiveUnit power         = new PrimitiveUnit(exponent);
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value, power);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(expectedResult));

            symbolicValue = new PrimitiveUnit(value + Query.POWER + exponent);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(expectedResult));
        }
Пример #17
0
        public void Index_Accesses_Invalid_Index_Throws_Exception()
        {
            ProductQuotientSet productQuotientSet = new ProductQuotientSet("a");
            PrimitiveUnit      unit1 = new PrimitiveUnit("b", new PrimitiveUnit("2"));

            productQuotientSet.MultiplyItem(unit1);
            PrimitiveUnit unit2 = new PrimitiveUnit("c");

            productQuotientSet.DivideItem(unit2);

            Assert.Throws <ArgumentOutOfRangeException>(() => { UnitOperatorPair unitOperatorPair = productQuotientSet[-1]; });
            Assert.Throws <ArgumentOutOfRangeException>(() => { UnitOperatorPair unitOperatorPair = productQuotientSet[3]; });
        }
Пример #18
0
        public void Initialize_Numeric_Variable_As_String_No_Exponent(string value)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.IsFalse(symbolicValue.IsNumber());
            Assert.IsFalse(symbolicValue.IsFloat());
            Assert.IsFalse(symbolicValue.IsInteger());
            Assert.IsFalse(symbolicValue.IsFraction());
            Assert.IsTrue(symbolicValue.IsSymbolic());

            Assert.That(symbolicValue.Label(), Is.EqualTo(string.Empty));
            Assert.That(symbolicValue.BaseLabel(), Is.EqualTo(string.Empty));
            Assert.That(symbolicValue.PowerLabel(), Is.EqualTo(string.Empty));
        }
Пример #19
0
        public void Initialize_NonNumeric_As_String_No_Exponent(string value, string expectedBaseLabel, string expectedPowerLabel, string expectedLabel)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.IsFalse(symbolicValue.IsNumber());
            Assert.IsFalse(symbolicValue.IsFloat());
            Assert.IsFalse(symbolicValue.IsInteger());
            Assert.IsFalse(symbolicValue.IsFraction());
            Assert.IsTrue(symbolicValue.IsSymbolic());

            Assert.That(symbolicValue.Label(), Is.EqualTo(expectedLabel));
            Assert.That(symbolicValue.BaseLabel(), Is.EqualTo(expectedBaseLabel));
            Assert.That(symbolicValue.PowerLabel(), Is.EqualTo(expectedPowerLabel));
        }
Пример #20
0
        public void Index_Accesses_Valid_Index_Returns_Item()
        {
            ProductQuotientSet productQuotientSet = new ProductQuotientSet("a");
            PrimitiveUnit      unit1 = new PrimitiveUnit("b", new PrimitiveUnit("2"));

            productQuotientSet.MultiplyItem(unit1);
            PrimitiveUnit unit2 = new PrimitiveUnit("c");

            productQuotientSet.DivideItem(unit2);

            UnitOperatorPair unitOperatorPair = productQuotientSet[1];

            Assert.IsTrue(unitOperatorPair.Unit.Equals(unit1));
            Assert.That(unitOperatorPair.Operator, Is.EqualTo("*"));
        }
Пример #21
0
        public void Initialize_As_Float(double value, string exponent,
                                        string expectedBaseLabel, string expectedPowerLabel, string expectedLabel, bool isNumber, bool isFloat)
        {
            PrimitiveUnit power         = new PrimitiveUnit(exponent);
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value, power);

            Assert.That(symbolicValue.IsNumber(), Is.EqualTo(isNumber));
            Assert.That(symbolicValue.IsFloat(), Is.EqualTo(isFloat));
            Assert.IsFalse(symbolicValue.IsInteger());
            Assert.IsFalse(symbolicValue.IsFraction());
            Assert.That(symbolicValue.IsSymbolic(), Is.EqualTo(!isNumber));

            Assert.That(symbolicValue.Label(), Is.EqualTo(expectedLabel));
            Assert.That(symbolicValue.BaseLabel(), Is.EqualTo(expectedBaseLabel));
            Assert.That(symbolicValue.PowerLabel(), Is.EqualTo(expectedPowerLabel));
        }
Пример #22
0
        public void Calculate_With_No_Exponent(string value, double expectedResult)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(expectedResult));
        }
Пример #23
0
        public void Override_ToString(string value, string expectedString)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.That(symbolicValue.ToString(), Is.EqualTo(expectedString));
        }
Пример #24
0
        public string Label_with_Primitive_Power(string value)
        {
            PrimitiveUnit unit = new PrimitiveUnit(value);

            return(unit.Label());
        }
Пример #25
0
        [TestCase("2^(3^-2)", 1.08006)]      //(42a)
        public void Calculate_With_Power_Various(string value, double expectedResult)
        {
            PrimitiveUnit symbolicValue = new PrimitiveUnit(value);

            Assert.That(symbolicValue.Calculate(), Is.EqualTo(expectedResult).Within(0.000001));
        }