4. 別のオートマトンを作る

もう1つ別のオートマトンを作成し,自動テストで検証してみましょう.

電子錠の改良

「3. オートマトンのテストをする」で完成させたオートマトンは,一度でも誤った入力をすると「解錠失敗」に相当する状態に落ち込んで,二度と開けることができなくなってしまいます.そこで,誤った入力をした際には振り出しに戻ることにします.具体的には「解錠失敗」状態を削除し,誤った入力の際には初期状態に遷移するようにします.

検証用自動テストの実行

2番目のテストである「Rollback automaton」を選択して「Test」をクリックしましょう.残念ながら,失敗作であることが判ります.

「**FAILURE** <String:'aabac', Expected:final, Result:non-final>」とあるので,初期状態から「aabac」を入力したときには終了状態(final)になっているはずなのに,実際には非終了状態(non-final)になっていたので「FAILURE」だったということです.

オートマトンの修正

失敗した際には,実際に自分で1つずつ入力してみるのが良いでしょう.緑色の三角ボタンをクリックして,「aabac」と順にタイプしてみましょう.すると,誤った入力をした際に,常に振り出しに戻るという方策に間違いがあったことが判ります.2番目の状態で「a」が入力された際には,その状態に留まるべきでした.

修正結果を確認すべく,再度自動テストを実行してみましょう.次のように「**FAILURE**」とされていた入力が「SUCCESS」に変わっていることがわかります.

上の修正だけでは,まだ完全とは言えません.入力に応じて適当な状態に移るようにオートマトンを修正しましょう.ここでは,これ以上細かな説明はしません.1文字ずつ入力しながら,修正方法を検討してみてください.修正が完成すれば,次のようにテストに成功するはずです.