示例#1
0
        public void CanConvert_Various_SpotCheck(double initialMagnitude, Enum initialUnits, double newMagnitude, Enum newUnits)
        {
            var unitType  = UnitDataCache.GetUnitTypeFromUnits(initialUnits.GetType());
            var units     = Units.Parse(unitType, $"{initialMagnitude}{UnitDataCache.GetSymbol(initialUnits)}");
            var converted = units.ConvertTo(newUnits);

            converted.Magnitude.Should().BeApproximately(newMagnitude, double.Epsilon);
            converted.Units.Should().BeOfType(newUnits.GetType());
        }
示例#2
0
        public void CanParse_All_Units()
        {
            foreach (var unit in UnitDataCache.GetSymbolAttributes <TUnit>())
            {
                var unitString = $"12.34{unit.Symbol}";

                var parsed = Units.Parse <T>(unitString);
                AssertMagnitudeAndUnits(parsed, 12.34, unit.GetUnitType <TUnit>());
            }
        }
示例#3
0
        public void CanConvert_BaseUnit_ToAllOtherUnits()
        {
            var allOtherUnits = UnitDataCache.GetSymbolAttributes <TUnit>()
                                .Where(x => (int)(object)x.GetUnitType <TUnit>() != (int)(object)BaseUnit.Units);

            allOtherUnits.Should().NotBeEmpty();

            foreach (var unit in allOtherUnits)
            {
                var converted = BaseUnit.ConvertTo(unit.GetUnitType <TUnit>());
                converted.Magnitude.Should().BeApproximately(1.0 / unit.ScaleFactor + unit.Offset, 1e-10);

                converted = BaseUnit.ConvertTo(unit.Symbol);
                converted.Magnitude.Should().BeApproximately(1.0 / unit.ScaleFactor + unit.Offset, 1e-10);
            }
        }