バッチファイル(オセロ008_テスト)

■正しく動くかのテスト。

結果表示までできたので、いくつか項目をあげてみてテストをした。
思いつくもので下の項目をやってみた。
ちゃんとやるなら、これらの項目に期待される結果とかカテゴリーとか正常系、異常系とかつけてやるんだろうけど、ざっとした感じで。

  1. バッチファイルを実行する。
  2. バッチファイルに引数をつけて実行する。
  3. 相手の石を挟める場所へ石を置く。
  4. 相手の石を挟めない場所へ石を置く。
  5. 既に石が置いてある場所へ石を置く。
  6. フィールド外へ石を置く。
  7. 石の場所としてpassを入力する。
  8. 石の場所としてpassを入力した後、さらに相手もpassと入力する。
  9. 石の場所としてpassを入力した後、相手は石を置く。
  10. 石の場所としてスペースを入力する。
  11. 石の場所として入力なしとする(そのままEnterを押す)。
  12. 上方向の石の処理を確認する。
  13. 右上方向の石の処理を確認する。
  14. 右方向の石の処理を確認する。
  15. 右下方向の石の処理を確認する。
  16. 下方向の石の処理を確認する。
  17. 左下方向の石の処理を確認する。
  18. 左方向の石の処理を確認する。
  19. 左上方向の石の処理を確認する。
  20. 複数の石を挟んだ状態を確認する。
  21. フィールドのすべてに石を置いた状態を確認する。
  22. 白の数が黒の数より多い状態で結果表示する。
  23. 黒の数が白の数より多い状態で結果表示する。
  24. 黒と白の数が同じ状態で結果表示する。


10番目のスペース入力したときに、エラーとなって中断してしまったので、いろいろと試して、下のコードを追加し、さらにpositionの変数を"で囲んだ。
下のコードは、入力の前と後ろのスペースを消す処理。
"で囲むと変数にスペースが入っている場合でも処理してくれるよう。

:TRIM
if "%position:~0,1%"==" " (
SET position=%position:~1%
GOTO TRIM
)
if "%position:~-1%"==" " (
SET position=%position:~0,-1%
GOTO TRIM
)
if "%position:~0,1%"==" " (
SET position=%position:~1%
GOTO TRIM
)
if "%position:~-1%"==" " (
SET position=%position:~0,-1%
GOTO TRIM
)

21番目もうまく動作したなかったので、turnchangeflagなどのフラグの数値を一部修正して、上の24項目はクリアした。
「最大 setlocal 再帰レベルに到達しました。」の文字は、setlocal enabledelayedexpansionの宣言を一度だけにしたら消えてくれた。
ひととおり動くようになったので、次はプラスアルファとして出力について考えてみる。