正しいオートマトンができたと思ったら,オートマトンの動作を検証するための自動テストを実行します.
検証用自動テストの選択
メニューの「Test」をクリックします.
すると下のように自動テストの一覧が表示されます.
検証用自動テストの実行
オートマトンの一覧の中から「My first automaton」をクリックして選択し,「Test」ボタンを押しましょう.用意された入力についてオートマトンが自動的にテストされ,その結果が次のように表示されます.
- 「SUCCESS <String:'aabac', Expected:non-final, Result:non-final>」とあるのは,初期状態から「
aabac
」と入力した時点では,非終了状態(non-final)になっているはずのところ,実際その通りなので「SUCCESS」であるという意味です. - 「**FAILURE** <String:'abaca', Expected:non-final, Result:No transition>」とあるのは,初期状態から「
abaca
」を入力したときに,「abac
」を入力したときの状態でさらに「a
」が入力された際の遷移規則がなかったので,そこで止まってしまい「FAILURE」だったという意味です. - また仮に「**FAILURE** <String:'aba', Expected:non-final, Result:final>」とあったとすれば,初期状態から「
aba
」を入力したときには非終了状態(non-final)になっているはずなのに,実際には終了状態(final)になっていたので「FAILURE」だったという意味になります.
このように,上で定義したオートマトンは一度解錠した後に,さらに入力されたときのことを考えていなかったことが分かりました.今回は「abac
」に加えて入力が行われた場合には,解錠が失敗することとします.この点を修正するには,終了状態から何を入力しても「解錠失敗」を意味する非終了状態への遷移を加えるだけです.
もう一度テストしてみましょう.すべてのテストに「SUCCESS」すると,評価結果の表示領域が緑色になります.