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