diff --git a/UnitsNet.Tests/UnitSystemTests.cs b/UnitsNet.Tests/UnitSystemTests.cs index e2b646b196..41ea82e210 100644 --- a/UnitsNet.Tests/UnitSystemTests.cs +++ b/UnitsNet.Tests/UnitSystemTests.cs @@ -256,6 +256,64 @@ public string ScientificNotationUpperIntervalFormatting(double value) return Length.FromMeters(value).ToString(); } + [Test] + public void ShouldUseCorrectMicroSign() + { + // "\u00b5" = Micro sign + Assert.AreEqual(AccelerationUnit.MicrometerPerSecondSquared, Acceleration.ParseUnit("\u00b5m/s²")); + Assert.AreEqual(AmplitudeRatioUnit.DecibelMicrovolt, AmplitudeRatio.ParseUnit("dB\u00b5V")); + Assert.AreEqual(AngleUnit.Microdegree, Angle.ParseUnit("\u00b5°")); + Assert.AreEqual(AngleUnit.Microradian, Angle.ParseUnit("\u00b5rad")); + Assert.AreEqual(AreaUnit.SquareMicrometer, Area.ParseUnit("\u00b5m²")); + Assert.AreEqual(DurationUnit.Microsecond, Duration.ParseUnit("\u00b5s")); + Assert.AreEqual(ElectricCurrentUnit.Microampere, ElectricCurrent.ParseUnit("\u00b5A")); + Assert.AreEqual(ElectricPotentialUnit.Microvolt, ElectricPotential.ParseUnit("\u00b5V")); + Assert.AreEqual(FlowUnit.MicrolitersPerMinute, Flow.ParseUnit("\u00b5LPM")); + Assert.AreEqual(ForceChangeRateUnit.MicronewtonPerSecond, ForceChangeRate.ParseUnit("\u00b5N/s")); + Assert.AreEqual(ForcePerLengthUnit.MicronewtonPerMeter, ForcePerLength.ParseUnit("\u00b5N/m")); + Assert.AreEqual(KinematicViscosityUnit.Microstokes, KinematicViscosity.ParseUnit("\u00b5St")); + Assert.AreEqual(LengthUnit.Microinch, Length.ParseUnit("\u00b5in")); + Assert.AreEqual(LengthUnit.Micrometer, Length.ParseUnit("\u00b5m")); + Assert.AreEqual(MassFlowUnit.MicrogramPerSecond, MassFlow.ParseUnit("\u00b5g/S")); + Assert.AreEqual(MassUnit.Microgram, Mass.ParseUnit("\u00b5g")); + Assert.AreEqual(PowerUnit.Microwatt, Power.ParseUnit("\u00b5W")); + Assert.AreEqual(PressureUnit.Micropascal, Pressure.ParseUnit("\u00b5Pa")); + Assert.AreEqual(RotationalSpeedUnit.MicrodegreePerSecond, RotationalSpeed.ParseUnit("\u00b5°/s")); + Assert.AreEqual(RotationalSpeedUnit.MicroradianPerSecond, RotationalSpeed.ParseUnit("\u00b5rad/s")); + Assert.AreEqual(SpeedUnit.MicrometerPerMinute, Speed.ParseUnit("\u00b5m/min")); + Assert.AreEqual(SpeedUnit.MicrometerPerSecond, Speed.ParseUnit("\u00b5m/s")); + Assert.AreEqual(TemperatureChangeRateUnit.MicrodegreeCelsiusPerSecond, TemperatureChangeRate.ParseUnit("\u00b5°C/s")); + Assert.AreEqual(VolumeUnit.Microliter, Volume.ParseUnit("\u00b5l")); + Assert.AreEqual(VolumeUnit.CubicMicrometer, Volume.ParseUnit("\u00b5m³")); + + // "\u03bc" = Lower case greek letter 'Mu' + Assert.Throws(() => Acceleration.ParseUnit("\u03bcm/s²")); + Assert.Throws(() => AmplitudeRatio.ParseUnit("dB\u03bcV")); + Assert.Throws(() => Angle.ParseUnit("\u03bc°")); + Assert.Throws(() => Angle.ParseUnit("\u03bcrad")); + Assert.Throws(() => Area.ParseUnit("\u03bcm²")); + Assert.Throws(() => Duration.ParseUnit("\u03bcs")); + Assert.Throws(() => ElectricCurrent.ParseUnit("\u03bcA")); + Assert.Throws(() => ElectricPotential.ParseUnit("\u03bcV")); + Assert.Throws(() => Flow.ParseUnit("\u03bcLPM")); + Assert.Throws(() => ForceChangeRate.ParseUnit("\u03bcN/s")); + Assert.Throws(() => ForcePerLength.ParseUnit("\u03bcN/m")); + Assert.Throws(() => KinematicViscosity.ParseUnit("\u03bcSt")); + Assert.Throws(() => Length.ParseUnit("\u03bcin")); + Assert.Throws(() => Length.ParseUnit("\u03bcm")); + Assert.Throws(() => MassFlow.ParseUnit("\u03bcg/S")); + Assert.Throws(() => Mass.ParseUnit("\u03bcg")); + Assert.Throws(() => Power.ParseUnit("\u03bcW")); + Assert.Throws(() => Pressure.ParseUnit("\u03bcPa")); + Assert.Throws(() => RotationalSpeed.ParseUnit("\u03bc°/s")); + Assert.Throws(() => RotationalSpeed.ParseUnit("\u03bcrad/s")); + Assert.Throws(() => Speed.ParseUnit("\u03bcm/min")); + Assert.Throws(() => Speed.ParseUnit("\u03bcm/s")); + Assert.Throws(() => TemperatureChangeRate.ParseUnit("\u03bc°C/s")); + Assert.Throws(() => Volume.ParseUnit("\u03bcl")); + Assert.Throws(() => Volume.ParseUnit("\u03bcm³")); + } + [Test] public void AllUnitAbbreviationsImplemented([Values("en-US", "nb-NO", "ru-RU")] string cultureName) { diff --git a/UnitsNet/GeneratedCode/UnitClasses/VitaminA.g.cs b/UnitsNet/GeneratedCode/UnitClasses/VitaminA.g.cs index 30c1e5f67e..5b8b1c4efc 100644 --- a/UnitsNet/GeneratedCode/UnitClasses/VitaminA.g.cs +++ b/UnitsNet/GeneratedCode/UnitClasses/VitaminA.g.cs @@ -55,7 +55,7 @@ namespace UnitsNet { /// - /// Vitamin A: 1 IU is the biological equivalent of 0.3 μg retinol, or of 0.6 μg beta-carotene. + /// Vitamin A: 1 IU is the biological equivalent of 0.3 µg retinol, or of 0.6 µg beta-carotene. /// // ReSharper disable once PartialTypeWithSinglePart #if WINDOWS_UWP diff --git a/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs b/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs index 2e20d8150a..b4241dda67 100644 --- a/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs +++ b/UnitsNet/GeneratedCode/UnitSystem.Default.g.cs @@ -77,7 +77,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) AccelerationUnit.MicrometerPerSecondSquared, new[] { - new AbbreviationsForCulture("en-US", "μm/s²"), + new AbbreviationsForCulture("en-US", "µm/s²"), }), new CulturesForEnumValue((int) AccelerationUnit.MillimeterPerSecondSquared, new[] @@ -154,14 +154,14 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) AngleUnit.Microdegree, new[] { - new AbbreviationsForCulture("en-US", "μ°"), - new AbbreviationsForCulture("ru-RU", "μ°"), + new AbbreviationsForCulture("en-US", "µ°"), + new AbbreviationsForCulture("ru-RU", "µ°"), }), new CulturesForEnumValue((int) AngleUnit.Microradian, new[] { - new AbbreviationsForCulture("en-US", "μrad"), - new AbbreviationsForCulture("ru-RU", "μрад"), + new AbbreviationsForCulture("en-US", "µrad"), + new AbbreviationsForCulture("ru-RU", "µрад"), }), new CulturesForEnumValue((int) AngleUnit.Millidegree, new[] @@ -472,7 +472,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) ElectricCurrentUnit.Microampere, new[] { - new AbbreviationsForCulture("en-US", "μA"), + new AbbreviationsForCulture("en-US", "µA"), }), new CulturesForEnumValue((int) ElectricCurrentUnit.Milliampere, new[] @@ -503,8 +503,8 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) ElectricPotentialUnit.Microvolt, new[] { - new AbbreviationsForCulture("en-US", "μV"), - new AbbreviationsForCulture("ru-RU", "μВ"), + new AbbreviationsForCulture("en-US", "µV"), + new AbbreviationsForCulture("ru-RU", "µВ"), }), new CulturesForEnumValue((int) ElectricPotentialUnit.Millivolt, new[] @@ -662,7 +662,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) FlowUnit.MicrolitersPerMinute, new[] { - new AbbreviationsForCulture("en-US", "μLPM"), + new AbbreviationsForCulture("en-US", "µLPM"), }), new CulturesForEnumValue((int) FlowUnit.MillilitersPerMinute, new[] @@ -773,7 +773,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) ForceChangeRateUnit.MicronewtonPerSecond, new[] { - new AbbreviationsForCulture("en-US", "μN/s"), + new AbbreviationsForCulture("en-US", "µN/s"), }), new CulturesForEnumValue((int) ForceChangeRateUnit.MillinewtonPerSecond, new[] @@ -823,7 +823,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) ForcePerLengthUnit.MicronewtonPerMeter, new[] { - new AbbreviationsForCulture("en-US", "μN/m"), + new AbbreviationsForCulture("en-US", "µN/m"), }), new CulturesForEnumValue((int) ForcePerLengthUnit.MillinewtonPerMeter, new[] @@ -1043,7 +1043,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) KinematicViscosityUnit.Microstokes, new[] { - new AbbreviationsForCulture("en-US", "μSt"), + new AbbreviationsForCulture("en-US", "µSt"), new AbbreviationsForCulture("ru-RU", "мкСт"), }), new CulturesForEnumValue((int) KinematicViscosityUnit.Millistokes, @@ -1113,13 +1113,13 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) LengthUnit.Microinch, new[] { - new AbbreviationsForCulture("en-US", "μin"), + new AbbreviationsForCulture("en-US", "µin"), new AbbreviationsForCulture("ru-RU", "микродюйм"), }), new CulturesForEnumValue((int) LengthUnit.Micrometer, new[] { - new AbbreviationsForCulture("en-US", "μm"), + new AbbreviationsForCulture("en-US", "µm"), new AbbreviationsForCulture("ru-RU", "мкм"), }), new CulturesForEnumValue((int) LengthUnit.Mil, @@ -1238,7 +1238,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) MassUnit.Microgram, new[] { - new AbbreviationsForCulture("en-US", "μg"), + new AbbreviationsForCulture("en-US", "µg"), new AbbreviationsForCulture("ru-RU", "мкг"), }), new CulturesForEnumValue((int) MassUnit.Milligram, @@ -1323,7 +1323,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) MassFlowUnit.MicrogramPerSecond, new[] { - new AbbreviationsForCulture("en-US", "μg/S"), + new AbbreviationsForCulture("en-US", "µg/S"), }), new CulturesForEnumValue((int) MassFlowUnit.MilligramPerSecond, new[] @@ -1392,7 +1392,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) PowerUnit.Microwatt, new[] { - new AbbreviationsForCulture("en-US", "μW"), + new AbbreviationsForCulture("en-US", "µW"), }), new CulturesForEnumValue((int) PowerUnit.Milliwatt, new[] @@ -1557,7 +1557,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) PressureUnit.Micropascal, new[] { - new AbbreviationsForCulture("en-US", "μPa"), + new AbbreviationsForCulture("en-US", "µPa"), new AbbreviationsForCulture("ru-RU", "мкПа"), }), new CulturesForEnumValue((int) PressureUnit.Millibar, @@ -1725,14 +1725,14 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) RotationalSpeedUnit.MicrodegreePerSecond, new[] { - new AbbreviationsForCulture("en-US", "μ°/s"), - new AbbreviationsForCulture("ru-RU", "μ°/с"), + new AbbreviationsForCulture("en-US", "µ°/s"), + new AbbreviationsForCulture("ru-RU", "µ°/с"), }), new CulturesForEnumValue((int) RotationalSpeedUnit.MicroradianPerSecond, new[] { - new AbbreviationsForCulture("en-US", "μrad/s"), - new AbbreviationsForCulture("ru-RU", "μрад/с"), + new AbbreviationsForCulture("en-US", "µrad/s"), + new AbbreviationsForCulture("ru-RU", "µрад/с"), }), new CulturesForEnumValue((int) RotationalSpeedUnit.MillidegreePerSecond, new[] @@ -1971,12 +1971,12 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) SpeedUnit.MicrometerPerMinute, new[] { - new AbbreviationsForCulture("en-US", "μm/min"), + new AbbreviationsForCulture("en-US", "µm/min"), }), new CulturesForEnumValue((int) SpeedUnit.MicrometerPerSecond, new[] { - new AbbreviationsForCulture("en-US", "μm/s"), + new AbbreviationsForCulture("en-US", "µm/s"), }), new CulturesForEnumValue((int) SpeedUnit.MilePerHour, new[] @@ -2084,7 +2084,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) TemperatureChangeRateUnit.MicrodegreeCelsiusPerSecond, new[] { - new AbbreviationsForCulture("en-US", "μ°C/s"), + new AbbreviationsForCulture("en-US", "µ°C/s"), }), new CulturesForEnumValue((int) TemperatureChangeRateUnit.MillidegreeCelsiusPerSecond, new[] @@ -2357,7 +2357,7 @@ private static readonly ReadOnlyCollection DefaultLocalization new CulturesForEnumValue((int) VolumeUnit.Microliter, new[] { - new AbbreviationsForCulture("en-US", "μl"), + new AbbreviationsForCulture("en-US", "µl"), new AbbreviationsForCulture("ru-RU", "мкл"), }), new CulturesForEnumValue((int) VolumeUnit.Milliliter, diff --git a/UnitsNet/Scripts/GenerateUnits.ps1 b/UnitsNet/Scripts/GenerateUnits.ps1 index 3b70fb8245..66df7c1fb5 100644 --- a/UnitsNet/Scripts/GenerateUnits.ps1 +++ b/UnitsNet/Scripts/GenerateUnits.ps1 @@ -173,7 +173,7 @@ function Add-PrefixUnits { "Deci" { "d", "1e-1d"; break; } "Centi" { "c", "1e-2d"; break; } "Milli" { "m", "1e-3d"; break; } - "Micro" { "μ", "1e-6d"; break; } + "Micro" { "µ", "1e-6d"; break; } "Nano" { "n", "1e-9d"; break; } # Optimization, move less frequently used prefixes to the end diff --git a/UnitsNet/UnitDefinitions/Flow.json b/UnitsNet/UnitDefinitions/Flow.json index fde3ceabdc..5c49e8c1f3 100644 --- a/UnitsNet/UnitDefinitions/Flow.json +++ b/UnitsNet/UnitDefinitions/Flow.json @@ -69,7 +69,7 @@ { "Culture": "en-US", "Abbreviations": [ "LPM" ], - "AbbreviationsWithPrefixes": [ "nLPM", "μLPM", "mLPM", "cLPM", "dLPM", "kLPM" ] + "AbbreviationsWithPrefixes": [ "nLPM", "µLPM", "mLPM", "cLPM", "dLPM", "kLPM" ] } ] }, diff --git a/UnitsNet/UnitDefinitions/Length.json b/UnitsNet/UnitDefinitions/Length.json index 3de846ae15..01f7ad5be0 100644 --- a/UnitsNet/UnitDefinitions/Length.json +++ b/UnitsNet/UnitDefinitions/Length.json @@ -137,7 +137,7 @@ "Localization": [ { "Culture": "en-US", - "Abbreviations": [ "μin" ] + "Abbreviations": [ "µin" ] }, { "Culture": "ru-RU", diff --git a/UnitsNet/UnitDefinitions/VitaminA.json b/UnitsNet/UnitDefinitions/VitaminA.json index b31d1c2dae..412a37b713 100644 --- a/UnitsNet/UnitDefinitions/VitaminA.json +++ b/UnitsNet/UnitDefinitions/VitaminA.json @@ -1,7 +1,7 @@ { "Name": "VitaminA", "BaseUnit": "InternationalUnit", - "XmlDoc": "Vitamin A: 1 IU is the biological equivalent of 0.3 μg retinol, or of 0.6 μg beta-carotene.", + "XmlDoc": "Vitamin A: 1 IU is the biological equivalent of 0.3 µg retinol, or of 0.6 µg beta-carotene.", "Units": [ { "SingularName": "InternationalUnit",