Files
PowerToys/src/modules/cmdpal/Tests/Microsoft.CmdPal.Common.UnitTests/Text/StringFolderTests.cs
2026-02-20 13:01:36 -06:00

56 lines
1.7 KiB
C#

// Copyright (c) Microsoft Corporation
// The Microsoft Corporation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using Microsoft.CmdPal.Common.Text;
namespace Microsoft.CmdPal.Common.UnitTests.Text;
[TestClass]
public class StringFolderTests
{
private readonly StringFolder _folder = new();
[TestMethod]
[DataRow(null, "")]
[DataRow("", "")]
[DataRow("abc", "ABC")]
[DataRow("ABC", "ABC")]
[DataRow("a\\b", "A/B")]
[DataRow("a/b", "A/B")]
[DataRow("ÁBC", "ABC")] // Diacritic removal
[DataRow("ñ", "N")]
[DataRow("hello world", "HELLO WORLD")]
public void Fold_RemoveDiacritics_Works(string input, string expected)
{
Assert.AreEqual(expected, _folder.Fold(input, removeDiacritics: true));
}
[TestMethod]
[DataRow("abc", "ABC")]
[DataRow("ÁBC", "ÁBC")] // No diacritic removal
[DataRow("a\\b", "A/B")]
public void Fold_KeepDiacritics_Works(string input, string expected)
{
Assert.AreEqual(expected, _folder.Fold(input, removeDiacritics: false));
}
[TestMethod]
public void Fold_IsAlreadyFolded_ReturnsSameInstance()
{
var input = "ALREADY/FOLDED";
var result = _folder.Fold(input, removeDiacritics: true);
Assert.AreSame(input, result);
}
[TestMethod]
public void Fold_WithNonAsciiButNoDiacritics_ReturnsFolded()
{
// E.g. Cyrillic or other scripts that might not decompose in a simple way or just upper case
// "привет" -> "ПРИВЕТ"
var input = "привет";
var expected = "ПРИВЕТ";
Assert.AreEqual(expected, _folder.Fold(input, removeDiacritics: true));
}
}