Skip to content

Commit 4673c9a

Browse files
Code review response v2
1 parent 7d3f110 commit 4673c9a

File tree

3 files changed

+13
-17
lines changed

3 files changed

+13
-17
lines changed

UnitsNet.Tests/UnitParserTests.cs

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,30 +44,24 @@ public void Parse_ReturnsUnitMappedByCustomAbbreviation(string customAbbreviatio
4444
[Fact]
4545
public void Parse_AbbreviationCaseInsensitive_Lowercase_years()
4646
{
47-
// Arrange
4847
var abbreviation = "years";
4948
var expected = DurationUnit.Year365;
5049
var parser = UnitParser.Default;
5150

52-
// Act
5351
var actual = parser.Parse<DurationUnit>(abbreviation);
5452

55-
// Assert
5653
Assert.Equal(expected, actual);
5754
}
5855

5956
[Fact]
6057
public void Parse_AbbreviationCaseInsensitive_Uppercase_Years()
6158
{
62-
// Arrange
6359
var abbreviation = "Years";
6460
var expected = DurationUnit.Year365;
6561
var parser = UnitParser.Default;
6662

67-
// Act
6863
var actual = parser.Parse<DurationUnit>(abbreviation);
6964

70-
// Assert
7165
Assert.Equal(expected, actual);
7266
}
7367

UnitsNet/CustomCode/UnitValueAbbreviationLookup.cs

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -63,20 +63,22 @@ internal List<string> GetAbbreviationsForUnit(int unit)
6363

6464
internal List<int> GetUnitsForAbbreviation(string abbreviation)
6565
{
66-
return abbreviationToUnitMap
67-
.Where(x => x.Key.Equals(abbreviation, StringComparison.OrdinalIgnoreCase))
68-
.SelectMany(x => x.Value)
69-
.Distinct()
70-
.ToList();
66+
abbreviation = abbreviation.ToLower();
67+
if(!abbreviationToUnitMap.TryGetValue(abbreviation, out var units))
68+
abbreviationToUnitMap[abbreviation] = units = new List<int>();
69+
70+
return units.Distinct().ToList();
7171
}
7272

7373
internal void Add(int unit, string abbreviation, bool setAsDefault = false)
7474
{
75+
// abbreviation = abbreviation.ToLower();
76+
var lower = abbreviation.ToLower();
7577
if(!unitToAbbreviationMap.TryGetValue(unit, out var abbreviationsForUnit))
7678
abbreviationsForUnit = unitToAbbreviationMap[unit] = new List<string>();
7779

78-
if(!abbreviationToUnitMap.TryGetValue(abbreviation, out var unitsForAbbreviation))
79-
abbreviationToUnitMap[abbreviation] = unitsForAbbreviation = new List<int>();
80+
if(!abbreviationToUnitMap.TryGetValue(lower, out var unitsForAbbreviation))
81+
abbreviationToUnitMap[lower] = unitsForAbbreviation = new List<int>();
8082

8183
abbreviationsForUnit.Remove(abbreviation);
8284
unitsForAbbreviation.Remove(unit);

UnitsNet/UnitConverter.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,13 +45,13 @@ public static class UnitConverter
4545
private static readonly string UnitTypeNamespace = typeof(LengthUnit).Namespace;
4646
private static readonly Assembly UnitsNetAssembly = typeof(Length).GetAssembly();
4747

48-
private static readonly List<Type> QuantityTypes = UnitsNetAssembly.GetTypes()
48+
private static readonly Type[] QuantityTypes = UnitsNetAssembly.GetTypes()
4949
.Where(x => x.FullName.StartsWith(QuantityNamespace))
50-
.ToList();
50+
.ToArray();
5151

52-
private static readonly List<Type> UnitTypes = UnitsNetAssembly.GetTypes()
52+
private static readonly Type[] UnitTypes = UnitsNetAssembly.GetTypes()
5353
.Where(x => x.FullName.StartsWith(UnitTypeNamespace))
54-
.ToList();
54+
.ToArray();
5555

5656
/// <summary>
5757
/// Convert between any two quantity units by their names, such as converting a "Length" of N "Meter" to "Centimeter".

0 commit comments

Comments
 (0)