Skip to content

Commit

Permalink
check arguments
Browse files Browse the repository at this point in the history
  • Loading branch information
smdn committed Dec 23, 2022
1 parent 6d131af commit 3cb8a17
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
16 changes: 16 additions & 0 deletions src/Smdn.Text.Ondulish/Smdn.Text.Ondulish/KanaUtils.cs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
// SPDX-FileCopyrightText: 2012 smdn <smdn@smdn.jp>
// SPDX-License-Identifier: MIT

using System;
using System.Text;

namespace Smdn.Text.Ondulish;
Expand All @@ -27,6 +28,11 @@ public static class KanaUtils {

public static string ConvertWideHiraganaToKatakana(string input)
{
if (input is null)
throw new ArgumentNullException(nameof(input));
if (input.Length == 0)
return string.Empty;

#if SYSTEM_STRING_CREATE
return string.Create(input.Length, input, (chars, s) => {
for (var index = 0; index < chars.Length; index++) {
Expand All @@ -52,6 +58,11 @@ public static string ConvertWideHiraganaToKatakana(string input)

public static string ConvertWideKatakanaToHiragana(string input)
{
if (input is null)
throw new ArgumentNullException(nameof(input));
if (input.Length == 0)
return string.Empty;

#if SYSTEM_STRING_CREATE
return string.Create(input.Length, input, (chars, s) => {
for (var index = 0; index < chars.Length; index++) {
Expand All @@ -77,6 +88,11 @@ public static string ConvertWideKatakanaToHiragana(string input)

public static string ConvertWideKatakanaToNarrowKatakana(string input)
{
if (input is null)
throw new ArgumentNullException(nameof(input));
if (input.Length == 0)
return string.Empty;

var inputChars = input.ToCharArray();
var output = new StringBuilder();

Expand Down
22 changes: 22 additions & 0 deletions tests/Smdn.Text.Ondulish/Smdn.Text.Ondulish/KanaUtils.cs
Original file line number Diff line number Diff line change
@@ -1,11 +1,13 @@
// SPDX-FileCopyrightText: 2020 smdn <smdn@smdn.jp>
// SPDX-License-Identifier: MIT
using System;
using NUnit.Framework;

namespace Smdn.Text.Ondulish;

[TestFixture]
public class KanaUtilsTests {
[TestCase("", "")]
[TestCase("ABC", "ABC")]
[TestCase("abc", "abc")]
[TestCase("ABC", "ABC")]
Expand All @@ -22,6 +24,11 @@ public void TestConvertWideHiraganaToKatakana(string input, string expected)
KanaUtils.ConvertWideHiraganaToKatakana(input)
);

[Test]
public void TestConvertWideHiraganaToKatakana_ArgumentNull()
=> Assert.Throws<ArgumentNullException>(() => KanaUtils.ConvertWideHiraganaToKatakana(input: null));

[TestCase("", "")]
[TestCase("ABC", "ABC")]
[TestCase("abc", "abc")]
[TestCase("ABC", "ABC")]
Expand All @@ -37,4 +44,19 @@ public void TestConvertWideKatakanaToHiragana(string input, string expected)
expected,
KanaUtils.ConvertWideKatakanaToHiragana(input)
);

[Test]
public void TestConvertWideKatakanaToHiragana_ArgumentNull()
=> Assert.Throws<ArgumentNullException>(() => KanaUtils.ConvertWideKatakanaToHiragana(input: null));

[TestCase("", "")]
public void TestConvertWideKatakanaToNarrowKatakana(string input, string expected)
=> Assert.AreEqual(
expected,
KanaUtils.ConvertWideKatakanaToNarrowKatakana(input)
);

[Test]
public void TestConvertWideKatakanaToNarrowKatakana_ArgumentNull()
=> Assert.Throws<ArgumentNullException>(() => KanaUtils.ConvertWideKatakanaToNarrowKatakana(input: null));
}

0 comments on commit 3cb8a17

Please sign in to comment.