Example #1
0
        public UnitValue(IUnitDefinition unit, double value)
        {
            var unitValue = unit.ConvertToUnitValue(value);

            Unit  = unitValue.Unit;
            Value = unitValue.Value;
        }
Example #2
0
 public UnitPoint2D(SIPrefix prefix, IUnitDefinition unit, double x, double y)
     : base(
         prefix.GetMultiplier() * unit.ConvertToUnitValue(x).Value,
         prefix.GetMultiplier() * unit.ConvertToUnitValue(y).Value)
 {
     Unit = unit.CorrespondingCompoundUnit;
 }
Example #3
0
        public void CompoundUnitIsCorrectlyParsed(string unitString, IUnitDefinition expectedUnit)
        {
            var expected = expectedUnit.CorrespondingCompoundUnit;
            var actual   = CompoundUnitParser.Parse(1d, unitString);

            Assert.That(actual.Unit, Is.EqualTo(expected));
        }
Example #4
0
        public void CanParseUnitValue(string s, double expectedValue, IUnitDefinition expectedUnit)
        {
            UnitValue unitValue = null;

            Assert.That(() => unitValue = UnitValue.Parse(s), Throws.Nothing);
            Assert.That(unitValue.Value, Is.EqualTo(expectedValue).Within(expectedValue.Abs() * 1e-6));
            Assert.That(unitValue.Unit, Is.EqualTo(expectedUnit));
        }
Example #5
0
File: Unit.cs Project: frke/commons
 private void AddUnitToStringRepresentationLookup(IUnitDefinition unit)
 {
     inverseStringRepresentationLookup.Add(unit.StringRepresentation, unit);
     foreach (var alternativeStringRepresentation in unit.AlternativeStringRepresentations)
     {
         inverseStringRepresentationLookup.Add(alternativeStringRepresentation, unit);
     }
 }
Example #6
0
 public bool Equals(IUnitDefinition other)
 {
     if (other == null)
     {
         return(false);
     }
     return(Equals(other.CorrespondingCompoundUnit));
 }
Example #7
0
        public void UnitConversionRoundtripReturnsInput(IUnitDefinition unit)
        {
            var number = StaticRandom.Rng.NextDouble();

            var unitValue       = number.To(unit);
            var roundtripNumber = unitValue.In(unit);

            Assert.That(roundtripNumber, Is.EqualTo(number).Within(1e-5));
        }
        public void SerializationRoundtripDoubleSpecialValues(double value, IUnitDefinition unit)
        {
            var unitValue  = new UnitValue(unit, value);
            var serializer = new Serializer <UnitValue>();

            UnitValue deserializedUnitValue;

            using (var stream = new MemoryStream())
            {
                serializer.Store(unitValue, stream);
                stream.Seek(0, SeekOrigin.Begin);
                deserializedUnitValue = serializer.Load(stream);
            }
            Assert.That(deserializedUnitValue, Is.EqualTo(unitValue));
        }
Example #9
0
        private static void ParseSimpleUnit(string unitString, out IUnitDefinition unit, out SIPrefix siPrefix)
        {
            if (string.IsNullOrEmpty(unitString))
            {
                throw new FormatException($"Invalid unit '{unitString}'");
            }

            var normalizedUnitString = unitString.Trim();

            if (Unit.Effective.InverseStringRepresentationLookup.ContainsKey(unitString))
            {
                siPrefix = SIPrefix.None;
                unit     = Unit.Effective.InverseStringRepresentationLookup[unitString];
                return;
            }
            if (normalizedUnitString.Length == 1)
            {
                throw new FormatException($"Invalid unit '{unitString}'");
            }

            // Try with SI multiplier prefix
            var prefixString  = unitString.Substring(0, 1);
            var newUnitString = unitString.Substring(1);

            if (!Unit.Effective.InverseStringRepresentationLookup.ContainsKey(newUnitString))
            {
                throw new FormatException($"Invalid unit '{unitString}'");
            }
            unit = Unit.Effective.InverseStringRepresentationLookup[newUnitString];
            if (UnitValueExtensions.InverseSIPrefixStringRepresentation.ContainsKey(prefixString))
            {
                siPrefix = UnitValueExtensions.InverseSIPrefixStringRepresentation[prefixString];
                return;
            }
            throw new FormatException($"Invalid unit '{unitString}'");
        }
Example #10
0
 public UnitPoint2D(IUnitDefinition unit, double x, double y)
     : this(SIPrefix.None, unit, x, y)
 {
 }
Example #11
0
 public static UnitVector2D To(this Vector2D point, SIPrefix siPrefix, IUnitDefinition unit)
 {
     return(new UnitVector2D(siPrefix, unit, point.X, point.Y));
 }
Example #12
0
 public static double ConvertUnit(this double value, IUnitDefinition fromUnit, IUnitDefinition toUnit)
 {
     return(toUnit.ConvertBack(fromUnit.ConvertToUnitValue(value)));
 }
Example #13
0
 public static UnitValue Average <T>(this IEnumerable <T> items, Func <T, UnitValue> valueSelector,
                                     SIPrefix siPrefix, IUnitDefinition unit)
 {
     return(items.Select(valueSelector).Average(siPrefix, unit));
 }
Example #14
0
 public static UnitValue Sum(this IEnumerable <UnitValue> items, IUnitDefinition unit)
 {
     return(items.Select(item => item.In(unit)).Sum().To(unit));
 }
Example #15
0
        public static double In(this UnitValue unitValue, SIPrefix prefix, IUnitDefinition unit)
        {
            var multiplier = GetMultiplier(prefix);

            return(unitValue.In(unit) / multiplier);
        }
Example #16
0
 public static UnitValue Average(this IEnumerable <UnitValue> items, IUnitDefinition unit)
 {
     return(items.Average(SIPrefix.None, unit));
 }
Example #17
0
 public static UnitVector2D To(this Vector2D point, IUnitDefinition unit)
 {
     return(point.To(SIPrefix.None, unit));
 }
Example #18
0
 public static UnitValue To(this int value, SIPrefix prefix, IUnitDefinition unit)
 {
     return(To((double)value, prefix, unit));
 }
Example #19
0
 public static UnitValue Average(this IEnumerable <UnitValue> items, SIPrefix siPrefix, IUnitDefinition unit)
 {
     return(items.Select(uv => uv.In(siPrefix, unit)).Average().To(siPrefix, unit));
 }
Example #20
0
        public static UnitValue To(this double value, SIPrefix prefix, IUnitDefinition unit)
        {
            var multiplier = GetMultiplier(prefix);

            return(unit.ConvertToUnitValue(multiplier * value));
        }
Example #21
0
 public static UnitValue To(this float value, IUnitDefinition unit)
 {
     return(To((double)value, unit));
 }
Example #22
0
 public static UnitValue To(this double value, IUnitDefinition unit)
 {
     return(unit.ConvertToUnitValue(value));
 }
Example #23
0
 public static Vector2D In(this UnitVector2D unitPoint, IUnitDefinition targetUnit)
 {
     return(unitPoint.In(SIPrefix.None, targetUnit));
 }
Example #24
0
 public static UnitPoint3D To(this Point3D point, SIPrefix siPrefix, IUnitDefinition unit)
 {
     return(new UnitPoint3D(siPrefix, unit, point.X, point.Y, point.Z));
 }
Example #25
0
        public static Vector2D In(this UnitVector2D unitPoint, SIPrefix targetSIPrefix, IUnitDefinition targetUnit)
        {
            var multiplier = new UnitValue(unitPoint.Unit, 1).In(targetSIPrefix, targetUnit);

            return(new Vector2D(
                       multiplier * unitPoint.X,
                       multiplier * unitPoint.Y));
        }
Example #26
0
 public static UnitPoint3D To(this Point3D point, IUnitDefinition unit)
 {
     return(point.To(SIPrefix.None, unit));
 }
Example #27
0
 public void UnitConversionAsExpected(IUnitDefinition originalUnit, IUnitDefinition targetUnit, double expectedValue)
 {
     Assert.That(1.To(originalUnit).In(targetUnit), Is.EqualTo(expectedValue).Within(1e-3 * expectedValue));
 }
Example #28
0
 public static bool CanConvertTo(this UnitValue unitValue, IUnitDefinition unit)
 {
     return(unitValue.Unit == unit.CorrespondingCompoundUnit);
 }
Example #29
0
        public void CanConvertToTrueForCompatibleUnits(IUnitDefinition originalUnit, IUnitDefinition targetUnit)
        {
            var unitValue = 1.To(originalUnit);

            Assert.That(unitValue.CanConvertTo(targetUnit), Is.True);
        }
Example #30
0
 public static double In(this UnitValue unitValue, IUnitDefinition newUnit)
 {
     return(newUnit.ConvertBack(unitValue));
 }