無差別に技術をついばむ鳥

情報処理技術全般を気まぐれにつつくゆるいブログです

英語を啄ばむ3−文字を見極める目が大事。

くそぉー。前回はLexerに文字種判定機能をつけていなかったのが間違いピヨ。 コンパイラにとって文字の種別を判定することは大事ピヨ。 あれぇ?ボク、コンパイラ作っていたのかな?まぁそんなことはいいから実装しよう。
ドリィちゃん「この鳥頭!作っているのは簡易翻訳ソフトでしょ。もぅ。3歩で物事を忘れんだからぁ。」
うん?今日は登場が早いね・・・・・・もしかして、その手に持っているのは・・・
ドリィちゃん「テストよ♪」。
・・・・・・・・・まぁ、何を言っても仕方が無いから見せて。どれどれ。

< Test() > Public Sub IsAlphabetTest()
    'テストの準備
    Dim target As Lexer = GenereteTestTarget()
    Dim datas As Char() = New Char() {"a"c, "b"c, "c"c, "d"c, "e"c, _
        "f"c, "g"c, "h"c, "i"c, "j"c, "k"c, "l"c, "m"c, "n"c, "o"c, "p"c, _
        "q"c, "r"c, "s"c, "t"c, "u"c, "v"c, "w"c, "x"c, "y"c, "z"c, _
        "A"c, "B"c, "C"c, "D"c, "E"c, _
        "F"c, "G"c, "H"c, "I"c, "J"c, "K"c, "L"c, "M"c, "N"c, "O"c, "P"c, _
        "Q"c, "R"c, "S"c, "T"c, "U"c, "V"c, "W"c, "X"c, "Y"c, "Z"c}
    Dim method As MethodInfo = target.GetType().GetMethod("IsAlphabet", _
        BindingFlags.Instance Or BindingFlags.InvokeMethod Or _
        BindingFlags.Public Or BindingFlags.NonPublic)
    Assert.IsNotNull(method, _ 
        "IsAlphabetメソッドが無いけど、それどういうことぉぉ by ドリィ")

    'テスト実行
    Dim val(0) As Object
    For i As Integer = 0 To datas.Length - 1
        val(0) = datas(i)
        Assert.IsTrue(CBool(method.Invoke(target, val)), _
            "あらあら" & val(0).ToString() & _ 
            "はアルファベットじゃないのかなぁ by ドリィ")
    Next

    'エラーチェック
    val(0) = ","c
    Assert.IsFalse(CBool(method.Invoke(target, val)), _
            "あらあら" & val(0).ToString() & "を通していいのかな by ドリィ")
End Sub

< Test() > Public Sub IsSymbolTest()
    'テストの準備
    Dim target As Lexer = GenereteTestTarget()
    Dim datas As Char() = New Char() { _ 
        ","c, "."c, "?"c, "'"c, "@"c, ":"c, ";"c, "\"c}
    Dim method As MethodInfo = target.GetType().GetMethod("IsSymbol", _
        BindingFlags.Instance Or BindingFlags.InvokeMethod Or _
        BindingFlags.Public Or BindingFlags.NonPublic)
    Assert.IsNotNull(method, _ 
        "IsSymbolメソッドが無いけど、それどういうことぉぉ by ドリィ")

    'テスト実行
    Dim val(0) As Object
    For i As Integer = 0 To datas.Length - 1
        val(0) = datas(i)
        Assert.IsTrue(CBool(method.Invoke(target, val)), _
            "あらあら" & val(0).ToString() & "はお忘れ? by ドリィ")
    Next

    'エラーチェック
    val(0) = "8"c
    Assert.IsFalse(CBool(method.Invoke(target, val)), _
            "あらあら" & val(0).ToString() & "を通していいのかな by ドリィ")
End Sub


また嫌らしそうなのをいっぱい打ってるね。えーとどれどれ・・・
ドリィちゃん「カンニング禁止ぃ!」。
うっっっ!仕方が無い一丁やったるかぁ!


'指定した文字がアルファベットか否かチェック
Private Function IsAlphabet(ByVal str As Char) As Boolean
    Dim tmp As Char = Char.ToLower(str)
    If tmp >= "a"c And tmp <= "z"c Then
        Return True
    End If
    Return False
End Function

'指定した文字がシンボルか否かチェック
Private Function IsSymbol(ByVal str As Char) As Boolean
    If str = "."c Then
        Return True
    End If
    Return False
End Function


ドリィちゃん(*´ー`*)
ドリィちゃんが微笑むと何かいやな予感がするぞ。うわぁーまたエラーだぁー。 えっ!ちょっ!でもドリィちゃんずるいよ!ドット以外も入れているじゃないか!
ドリィちゃん「あらあら。英語の記号はドットだけじゃないのよぉ。テストし甲斐があるわぁ。」
またやられたピヨ。
お後がよろしいようなので今回はおしまい。
別窓 | 英語翻訳 | コメント:0 | トラックバック:0 | ∧top | under∨
<<中の人の徒然草45 | 無差別に技術をついばむ鳥 | VB.NETをつつく26−引数の参照渡し。時には曖昧にしておくのがベスト。>>

この記事のコメント

∧top | under∨

コメントの投稿

 

管理者だけに閲覧
 

この記事のトラックバック

∧top | under∨
| 無差別に技術をついばむ鳥 |