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()); }
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>()); } }
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); } }