Co zwykle robicie, gdy chcecie porównać jakieś stringi? Np. w takim języku, jak niemiecki?
[Fact]
[InlineData("Ë", "ë")]
public void StringComparerToLowerReturnsTrue(string input, string expected)
{
var result = input.ToLower() == expected;
Assert.True(result);
}
W powyższym przypadku test przejdzie. Ale okazuje się, że mogą być bardziej specyficzne przypadki, gdy dane słowo nie składa się z takich samych liter.
[Theory]
[InlineData("Straße", "STRASSE")]
public void StringComparerToLowerReturnsTrue(string input, string expected)
{
var result = input.ToLower() == expected;
Assert.True(result);
}
Test nie przechodzi. Spróbujmy inaczej:
[Theory]
[InlineData("Straße", "STRASSE")]
public void StringComparerToLowerInvariantReturnsTrue(string input, string expected)
{
var result = input.ToLowerInvariant() == expected;
Assert.True(result);
}
Ten test również nie przechodzi. Szukamy dalej rozwiązania.
[Theory]
[InlineData("Straße", "STRASSE")]
public void StringComparerToLowerWithInvariantCultureReturnsTrue(string input, string expected)
{
var result = input.ToLower(CultureInfo.InvariantCulture) == expected;
Assert.True(result);
}
Tutaj również nie działa poprawnie. Co zrobić?
Okazuje się, że jest jednak metoda, która zwróci prawidłową wartość. Jest to String.Equals() z parametrem StringComparison.InvariantCultureIgnoreCase.
[Theory]
[InlineData("Straße", "STRASSE")]
public void StringComparerWithInvariantCultureIgnoreCaseParameterReturnsTrue(string input, string expected)
{
var result = String.Equals(input, expected, StringComparison.InvariantCultureIgnoreCase);
Assert.True(result);
}
Jeśli chcesz poczytać jeszcze więcej o rekomendacjach w sprawie stringów, zachęcam do przeczytania dokumentacji.
Podoba Ci się to, co tworzę? Chcesz dostawać informacje o:
– wydarzeniach, które organizuję lub wspieram (np. konferencje, meetupy, webinary)
– inicjatywach, które organizuję lub wspieram (np. GeekWeekWro, DevAdventCalendar)
– moich prelekcjach, kursach i szkoleniach
– wyróżnionych artykułach z mojego bloga
0% SPAMu, 100% informacji! Krótko i na temat.
A nie powinno być ToUpper wszędzie ?:)
PolubieniePolubienie
Czemu tak uważasz?:)
PolubieniePolubienie