diff --git a/WanaKanaShaapu.UnitTest/ToKanaUnitTests.cs b/WanaKanaShaapu.UnitTest/ToKanaUnitTests.cs index 615e8f0..4f123d6 100644 --- a/WanaKanaShaapu.UnitTest/ToKanaUnitTests.cs +++ b/WanaKanaShaapu.UnitTest/ToKanaUnitTests.cs @@ -19,6 +19,7 @@ public void ToKana_WhenPassedAnEmptyString_ReturnsAnEmptyString(string input, st [TestCase("chyx", "chyx")] [TestCase("shyp", "shyp")] [TestCase("ltsb", "ltsb")] + [TestCase("chuu", "ใกใ‚…ใ†")] public void ToKana_WhenPassedInput_ConvertsItCorrectly(string input, string expectedOutput) { string result = WanaKana.ToKana(input); diff --git a/WanaKanaShaapu/TreeBuilder.cs b/WanaKanaShaapu/TreeBuilder.cs index f9596e0..81adf90 100644 --- a/WanaKanaShaapu/TreeBuilder.cs +++ b/WanaKanaShaapu/TreeBuilder.cs @@ -25,19 +25,19 @@ private static void AddToTree(Dictionary tree, (string Romaji, str private static void AddNode(Node node, string romaji, string kana) { - if (romaji.Length == 1 && !node.Children.ContainsKey(romaji)) + if (romaji.Length == 0) + return; + else if (romaji.Length == 1 && !node.Children.ContainsKey(romaji)) node.Children.Add(romaji, new Node(kana)); else if (romaji.Length == 1 && node.Children.ContainsKey(romaji)) node.Children[romaji].Data = kana; else { - foreach (char c in romaji) - { - if (!node.Children.ContainsKey(c.ToString())) - node.Children.Add(c.ToString(), new Node(string.Empty)); - node = node.Children[c.ToString()]; - AddNode(node, romaji[1..], kana); - } + var firstChar = romaji.First().ToString(); + if (!node.Children.ContainsKey(firstChar)) + node.Children.Add(firstChar.First().ToString(), new Node(string.Empty)); + node = node.Children[firstChar.ToString()]; + AddNode(node, romaji[1..], kana); } }