クラスをテストしてみる

投稿者: | 2016年2月9日

checkOptionクラス単体ではプログラムとして動かないので、簡単な動作確認プログラムを作ってみました。

#! /usr/bin/swift
import Foundation
let testArguments: [[String]] = [["no-option"],["current-year", "-y"], ["specified-year", "-y", "2016"],
    ["current-month", "-m"], ["specified-month", "-m", "2"], ["specified-month-and-year", "-m", "2", "2016"],
    ["current-month-and-befor-after", "-3"], ["three-month-from-current", "+3"], ["current-week", "-w"], ["error", "-x"]]
for var i in 0..<testArguments.count {
    var chkopt = checkOption(arguments: testArguments[i])
    print(testArguments[i])
    print("Raws:\(chkopt.getCalendarRaws()), ", terminator:"")
    print("Cols:\(chkopt.getCalendarCols()), ", terminator:"")
    print("WeekFormat:\(chkopt.getWeekFormat()), ", terminator:"")
    print("StartYear:\(chkopt.getStartYear()), ", terminator:"")
    print("StartMonth:\(chkopt.getStartMonth())")
}

まずオプションチェックの仕様を確認しておきます。

  • オプションなし:今月のカレンダーのみ表示
  • -yのみ:今年のカレンダーを表示
  • -yに続けて年指定:指定された年のカレンダーを表示
  • -mのみ:今月のカレンダーのみ表示
  • -mに続けて月指定:指定された月のカレンダーのみ表示
  • -mに続けて月と年を指定:指定された年月のカレンダーのみ表示
  • -3のみ:先月、今月、来月のカレンダーを表示
  • +3のみ:今月、来月、再来月のカレンダーを表示
  • -wのみ:今週のカレンダーのみ表示
  • それ以外:オプション指定エラー表示(ここでは間違って-x指定を想定)

実際にはこれではすべてのエラーを網羅しきれていないんですが、とりあえず仕様どおりのオプション指定について正しく判定できることを確認します。

実際のプログラムに与えられる引数は文字列型の配列なので、上記条件を表現した配列群を3から5行目で定義します。これは2次元配列という配列を要素に持つ配列です。

6から14行目でそれぞれの条件についてテストを実行するわけですが、ここの7行目がクラスの呼び出し部分になっています。用意した変数にクラスを代入することで、その変数名を持ったインスタンスが作成されます。

…クラスとかインスタンスとかよくわかりませんが、とにかくクラスっていうものを使うにはこう書く!と。

おさらいになりますが配列は0番から始まる値の集合なので、ここでのforループは0以上要素数未満についてのチェックになります。定義されたすべての条件について、都度インスタンスを作ってはプロパティを表示するということを繰り返します。

条件を増やしたければ配列を追加すればOK。理想を言えば結果の良否判定も自動化したいところですが、今はこれが精一杯。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です