Skip to content

Commit

Permalink
improve end-of-line treatments
Browse files Browse the repository at this point in the history
  • Loading branch information
smdn committed Dec 26, 2022
1 parent b51988f commit 0511181
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 11 deletions.
10 changes: 7 additions & 3 deletions src/Smdn.Text.Ondulish/Smdn.Text.Ondulish/Translator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -175,10 +175,16 @@ public void Translate(string input, bool convertKatakanaToNarrow, TextWriter out
return;

var reader = new StringReader(input);
var firstLine = true;

for (var line = reader.ReadLine(); line is not null; line = reader.ReadLine()) {
if (firstLine)
firstLine = false;
else
output.WriteLine();

if (string.IsNullOrWhiteSpace(line)) {
output.WriteLine(line);
output.Write(line);
continue;
}

Expand Down Expand Up @@ -218,8 +224,6 @@ f.ConvertedText is null
foreach (var fragment in fragments) {
output.Write(fragment.ConvertedText);
}

output.WriteLine();
}

output.Flush();
Expand Down
46 changes: 38 additions & 8 deletions tests/Smdn.Text.Ondulish/Smdn.Text.Ondulish/Translator.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,37 @@ public void Translate(string input, string expected)

Assert.AreEqual(
expected,
t.Translate(input, convertKatakanaToNarrow: false).TrimEnd()
t.Translate(input, convertKatakanaToNarrow: false)
);
}

[Test]
public void Translate_SingleLine()
{
using var t = Create();

Assert.AreEqual(
"オンドゥルルラギッタンディスカー",
t.Translate("本当に裏切ったんですか", convertKatakanaToNarrow: false)
);
}

[Test]
public void Translate_MultipleLines()
{
const string input = @"本当に裏切ったんですか
本当に裏切ったんですか";

var expected = @"オンドゥルルラギッタンディスカー
オンドゥルルラギッタンディスカー".Replace("\r", string.Empty).Replace("\n", Environment.NewLine);

using var t = Create();

Assert.AreEqual(
expected,
t.Translate(input, convertKatakanaToNarrow: false)
);
}

Expand All @@ -93,7 +123,7 @@ public void Translate_ConvertKatakanaToNarrowDefaultValue(string input, string e

Assert.AreEqual(
expected,
t.Translate(input).TrimEnd()
t.Translate(input)
);
}

Expand All @@ -116,7 +146,7 @@ public void Translate_ToTextWriter(string input, string expectedOutput)
var writer = new StringWriter(sb);

Assert.DoesNotThrow(() => t.Translate(input: input, convertKatakanaToNarrow: false, output: writer));
Assert.AreEqual(expectedOutput, sb.ToString().TrimEnd());
Assert.AreEqual(expectedOutput, sb.ToString());
}

[Test]
Expand Down Expand Up @@ -147,7 +177,7 @@ public void Translate_ToNarrowKatakana(string input, string expected)

Assert.AreEqual(
expected,
t.Translate(input, convertKatakanaToNarrow: true).TrimEnd()
t.Translate(input, convertKatakanaToNarrow: true)
);
}

Expand All @@ -159,7 +189,7 @@ public void Translate_SpecialCase(string input, string expected)

Assert.AreEqual(
expected,
t.Translate(input, convertKatakanaToNarrow: false).TrimEnd()
t.Translate(input, convertKatakanaToNarrow: false)
);
}

Expand All @@ -183,7 +213,7 @@ public void Translate_Phoneme(string input, string expected)

Assert.AreEqual(
expected,
t.Translate(input, convertKatakanaToNarrow: false).TrimEnd()
t.Translate(input, convertKatakanaToNarrow: false)
);
}

Expand All @@ -200,7 +230,7 @@ public void Translate_DictionaryTerm_Words()

Assert.AreEqual(
outputPrepend + pair.Value + outputAppend,
t.Translate(inputPrepend + pair.Key + inputAppend, convertKatakanaToNarrow: false).TrimEnd()
t.Translate(inputPrepend + pair.Key + inputAppend, convertKatakanaToNarrow: false)
);
}
}
Expand All @@ -218,7 +248,7 @@ public void Translate_DictionaryTerm_Phrases()

Assert.AreEqual(
outputPrepend + pair.Value + outputAppend,
t.Translate(inputPrepend + pair.Key + inputAppend, convertKatakanaToNarrow: false).TrimEnd()
t.Translate(inputPrepend + pair.Key + inputAppend, convertKatakanaToNarrow: false)
);
}
}
Expand Down

0 comments on commit 0511181

Please sign in to comment.