diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/InputInterpreterTests.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/InputInterpreterTests.cs
index 92b5c19b1d..360543558f 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/InputInterpreterTests.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/InputInterpreterTests.cs
@@ -43,6 +43,16 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter.UnitTest
CollectionAssert.AreEqual(expectedResult, input);
}
+ [DataTestMethod]
+ [DataRow(new string[] { "1", "metre", "in", "metre" }, new object[] { new string[] { "1", "meter", "in", "meter" } })]
+ [DataRow(new string[] { "1", "centimetre", "in", "kilometre" }, new object[] { new string[] { "1", "centimeter", "in", "kilometer" } })]
+ [DataRow(new string[] { "1", "metres", "in", "kilometres" }, new object[] { new string[] { "1", "meters", "in", "kilometers" } })]
+ public void HandlesMetreVsMeterNotation(string[] input, string[] expectedResult)
+ {
+ InputInterpreter.MetreToMeter(ref input);
+ CollectionAssert.AreEqual(expectedResult, input);
+ }
+
[DataTestMethod]
[DataRow(new string[] { "5", "CeLsIuS", "in", "faHrenheiT" }, new object[] { new string[] { "5", "DegreeCelsius", "in", "DegreeFahrenheit" } })]
[DataRow(new string[] { "5", "f", "in", "celsius" }, new object[] { new string[] { "5", "°f", "in", "DegreeCelsius" } })]
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/UnitHandlerTests.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/UnitHandlerTests.cs
index 5b1988cb1c..8f5d1cfc90 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/UnitHandlerTests.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter.UnitTest/UnitHandlerTests.cs
@@ -14,7 +14,7 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter.UnitTest
public void HandleTemperature()
{
var convertModel = new ConvertModel(1, "DegreeCelsius", "DegreeFahrenheit");
- double result = UnitHandler.ConvertInput(convertModel, UnitsNet.QuantityType.Temperature);
+ double result = UnitHandler.ConvertInput(convertModel, UnitsNet.Temperature.Info);
Assert.AreEqual(33.79999999999999d, result);
}
@@ -22,7 +22,7 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter.UnitTest
public void HandleLength()
{
var convertModel = new ConvertModel(1, "meter", "centimeter");
- double result = UnitHandler.ConvertInput(convertModel, UnitsNet.QuantityType.Length);
+ double result = UnitHandler.ConvertInput(convertModel, UnitsNet.Length.Info);
Assert.AreEqual(100, result);
}
@@ -30,15 +30,23 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter.UnitTest
public void HandleNanometerToKilometer()
{
var convertModel = new ConvertModel(1, "nanometer", "kilometer");
- double result = UnitHandler.ConvertInput(convertModel, UnitsNet.QuantityType.Length);
+ double result = UnitHandler.ConvertInput(convertModel, UnitsNet.Length.Info);
Assert.AreEqual(1E-12, result);
}
+ [TestMethod]
+ public void HandlePlurals()
+ {
+ var convertModel = new ConvertModel(1, "meters", "centimeters");
+ double result = UnitHandler.ConvertInput(convertModel, UnitsNet.Length.Info);
+ Assert.AreEqual(100, result);
+ }
+
[TestMethod]
public void HandlesByteCapitals()
{
var convertModel = new ConvertModel(1, "kB", "kb");
- double result = UnitHandler.ConvertInput(convertModel, UnitsNet.QuantityType.Information);
+ double result = UnitHandler.ConvertInput(convertModel, UnitsNet.Information.Info);
Assert.AreEqual(8, result);
}
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj
index 13577f0162..76afbf6b9e 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Community.PowerToys.Run.Plugin.UnitConverter.csproj
@@ -44,7 +44,7 @@
-
+
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/InputInterpreter.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/InputInterpreter.cs
index 537bb99c1a..6e9d621906 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/InputInterpreter.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/InputInterpreter.cs
@@ -169,19 +169,12 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
}
///
- /// Converts spelling "metre" to "meter"
+ /// Converts spelling "metre" to "meter", also for centimetre and other variants
///
public static void MetreToMeter(ref string[] split)
{
- if (split[1].ToLowerInvariant() == "metre")
- {
- split[1] = "meter";
- }
-
- if (split[3].ToLowerInvariant() == "metre")
- {
- split[3] = "meter";
- }
+ split[1] = split[1].Replace("metre", "meter", System.StringComparison.CurrentCultureIgnoreCase);
+ split[3] = split[3].Replace("metre", "meter", System.StringComparison.CurrentCultureIgnoreCase);
}
///
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Main.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Main.cs
index 6d1638d264..aa25ceb994 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Main.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/Main.cs
@@ -65,7 +65,7 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
Title = result.ToString(),
IcoPath = _icon_path,
Score = 300,
- SubTitle = string.Format(CultureInfo.CurrentCulture, Properties.Resources.copy_to_clipboard, result.QuantityType),
+ SubTitle = string.Format(CultureInfo.CurrentCulture, Properties.Resources.copy_to_clipboard, result.QuantityInfo.Name),
Action = c =>
{
var ret = false;
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitConversionResult.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitConversionResult.cs
index 9079b27bf2..9c5c94c69e 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitConversionResult.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitConversionResult.cs
@@ -14,13 +14,13 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
public string UnitName { get; }
- public QuantityType QuantityType { get; }
+ public QuantityInfo QuantityInfo { get; }
- public UnitConversionResult(double convertedValue, string unitName, QuantityType quantityType)
+ public UnitConversionResult(double convertedValue, string unitName, QuantityInfo quantityInfo)
{
ConvertedValue = convertedValue;
UnitName = unitName;
- QuantityType = quantityType;
+ QuantityInfo = quantityInfo;
}
public string ToString(System.IFormatProvider provider = null)
diff --git a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs
index d80790d888..40dfcacb32 100644
--- a/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs
+++ b/src/modules/launcher/Plugins/Community.PowerToys.Run.Plugin.UnitConverter/UnitHandler.cs
@@ -14,21 +14,21 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
{
private static readonly int _roundingFractionalDigits = 4;
- private static readonly QuantityType[] _included = new QuantityType[]
+ private static readonly QuantityInfo[] _included = new QuantityInfo[]
{
- QuantityType.Acceleration,
- QuantityType.Angle,
- QuantityType.Area,
- QuantityType.Duration,
- QuantityType.Energy,
- QuantityType.Information,
- QuantityType.Length,
- QuantityType.Mass,
- QuantityType.Power,
- QuantityType.Pressure,
- QuantityType.Speed,
- QuantityType.Temperature,
- QuantityType.Volume,
+ Acceleration.Info,
+ Angle.Info,
+ Area.Info,
+ Duration.Info,
+ Energy.Info,
+ Information.Info,
+ Length.Info,
+ Mass.Info,
+ Power.Info,
+ Pressure.Info,
+ Speed.Info,
+ Temperature.Info,
+ Volume.Info,
};
///
@@ -37,7 +37,9 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
/// Corresponding enum or null.
private static Enum GetUnitEnum(string unit, QuantityInfo unitInfo)
{
- UnitInfo first = Array.Find(unitInfo.UnitInfos, info => info.Name.ToLowerInvariant() == unit.ToLowerInvariant());
+ UnitInfo first = Array.Find(unitInfo.UnitInfos, info =>
+ unit.ToLowerInvariant() == info.Name.ToLowerInvariant() || unit.ToLowerInvariant() == info.PluralName.ToLowerInvariant());
+
if (first != null)
{
return first.Value;
@@ -72,12 +74,10 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
/// Given parsed ConvertModel, computes result. (E.g "1 foot in cm").
///
/// The converted value as a double.
- public static double ConvertInput(ConvertModel convertModel, QuantityType quantityType)
+ public static double ConvertInput(ConvertModel convertModel, QuantityInfo quantityInfo)
{
- QuantityInfo unitInfo = Quantity.GetInfo(quantityType);
-
- var fromUnit = GetUnitEnum(convertModel.FromUnit, unitInfo);
- var toUnit = GetUnitEnum(convertModel.ToUnit, unitInfo);
+ var fromUnit = GetUnitEnum(convertModel.FromUnit, quantityInfo);
+ var toUnit = GetUnitEnum(convertModel.ToUnit, quantityInfo);
if (fromUnit != null && toUnit != null)
{
@@ -94,13 +94,13 @@ namespace Community.PowerToys.Run.Plugin.UnitConverter
public static IEnumerable Convert(ConvertModel convertModel)
{
var results = new List();
- foreach (QuantityType quantityType in _included)
+ foreach (var quantityInfo in _included)
{
- double convertedValue = UnitHandler.ConvertInput(convertModel, quantityType);
+ double convertedValue = UnitHandler.ConvertInput(convertModel, quantityInfo);
if (!double.IsNaN(convertedValue))
{
- UnitConversionResult result = new UnitConversionResult(Round(convertedValue), convertModel.ToUnit, quantityType);
+ UnitConversionResult result = new UnitConversionResult(Round(convertedValue), convertModel.ToUnit, quantityInfo);
results.Add(result);
}
}
diff --git a/src/modules/launcher/PowerLauncher/PowerLauncher.csproj b/src/modules/launcher/PowerLauncher/PowerLauncher.csproj
index 0b2df74728..1246204178 100644
--- a/src/modules/launcher/PowerLauncher/PowerLauncher.csproj
+++ b/src/modules/launcher/PowerLauncher/PowerLauncher.csproj
@@ -90,7 +90,7 @@
-
+