KanaUtils.tests.ps1

#Requires -Module @{ ModuleName = 'Pester'; ModuleVersion = '5.1.0' }

Import-Module .\KanaUtils.psm1 -Force

InModuleScope KanaUtils {
    Describe 'Convert-KanaToRomaji' {
        It '(empty string) => (empty string)' {
            $Kana = ''
            $Expect = ''
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'あいうえお => aiueo' {
            $Kana = 'あいうえお'
            $Expect = 'aiueo'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'あ お => a o' {
            $Kana = 'あ お'
            $Expect = 'a o'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'カキクケコワヲン => kakikukekowaon' {
            $Kana = 'カキクケコワヲン'
            $Expect = 'kakikukekowaon'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'カンダ ジュン => kanda jun' {
            $Kana = 'カンダ ジュン'
            $Expect = 'kanda jun'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ナンバ サンペイ => namba sampei' {
            $Kana = 'ナンバ サンペイ'
            $Expect = 'namba sampei'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ハットリ ハッチョウ => hattori hatcho' {
            $Kana = 'ハットリ ハッチョウ'
            $Expect = 'hattori hatcho'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ニーナ => nina' {
            $Kana = 'ニーナ'
            $Expect = 'nina'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ニイナ => niina' {
            $Kana = 'ニイナ'
            $Expect = 'niina'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ヒュウガ ユウキ => hyuga yuki' {
            $Kana = 'ヒュウガ ユウキ'
            $Expect = 'hyuga yuki'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'コウタ リョウコ => kota ryoko' {
            $Kana = 'コウタ リョウコ'
            $Expect = 'kota ryoko'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'オノ オオノ オオコウチ => ono ono okochi' {
            $Kana = 'オノ オオノ オオコウチ'
            $Expect = 'ono ono okochi'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'セノオ タカトオ => senoo takatoo' {
            $Kana = 'セノオ タカトオ'
            $Expect = 'senoo takatoo'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ミソノウ タカトウ => misono takato' {
            $Kana = 'ミソノウ タカトウ'
            $Expect = 'misono takato'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It 'ヴィヴィアン チャギュン => buibuian chagyun' {
            $Kana = 'ヴィヴィアン チャギュン'
            $Expect = 'buibuian chagyun'
            Convert-KanaToRomaji -Kana $Kana | Should -BeExactly $Expect
        }

        It '吉田 タケシ => ERROR' {
            $Kana = '吉田 タケシ'
            $Expect = '吉田 takeshi'
            { Convert-KanaToRomaji -Kana $Kana -ErrorAction Stop } | Should -Throw
            Convert-KanaToRomaji -Kana $Kana -ErrorAction SilentlyContinue | Should -BeExactly $Expect
        }
    }

    Describe 'Convert-HiraganaToKatakana' {
        It '(empty string) => (empty string)' {
            $Kana = ''
            $Expect = ''
            Convert-HiraganaToKatakana -Hiragana $Kana | Should -BeExactly $Expect
        }

        It 'あいうえお => アイウエオ' {
            $Kana = 'あいうえお'
            $Expect = 'アイウエオ'
            Convert-HiraganaToKatakana -Hiragana $Kana | Should -BeExactly $Expect
        }

        It 'ちゃん・ぐんそく => チャン・グンソク' {
            $Kana = 'ちゃん・ぐんそく'
            $Expect = 'チャン・グンソク'
            Convert-HiraganaToKatakana -Hiragana $Kana | Should -BeExactly $Expect
        }

        It '吉田 alphaX09 ワをン ナにヌねノ => 吉田 alphaX09 ワヲン ナニヌネノ' {
            $Kana = '吉田 alphaX09 ワをン ナにヌねノ'
            $Expect = '吉田 alphaX09 ワヲン ナニヌネノ'
            Convert-HiraganaToKatakana -Hiragana $Kana | Should -BeExactly $Expect
        }
    }

    Describe 'Convert-KatakanaToHiragana' {
        It '(empty string) => (empty string)' {
            $Kana = ''
            $Expect = ''
            Convert-KatakanaToHiragana -Katakana $Kana | Should -BeExactly $Expect
        }

        It 'アイウエオ => あいうえお' {
            $Kana = 'アイウエオ'
            $Expect = 'あいうえお'
            Convert-KatakanaToHiragana -Katakana $Kana | Should -BeExactly $Expect
        }

        It 'チャン・グンソク => ちゃん・ぐんそく' {
            $Kana = 'チャン・グンソク'
            $Expect = 'ちゃん・ぐんそく'
            Convert-KatakanaToHiragana -Katakana $Kana | Should -BeExactly $Expect
        }

        It '吉田 alphaX09 ワをン ナにヌねノ => 吉田 alphaX09 わをん なにぬねの' {
            $Kana = '吉田 alphaX09 ワをン ナにヌねノ'
            $Expect = '吉田 alphaX09 わをん なにぬねの'
            Convert-KatakanaToHiragana -Katakana $Kana | Should -BeExactly $Expect
        }
    }
}