前回の続き。
前回作成したプログラムをテストするコードを書いていきます。
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_ok() {
let calc = RpnCalculator::new(false);
assert_eq!(calc.eval("5"), 5);
assert_eq!(calc.eval("50"), 50);
assert_eq!(calc.eval("-50"), -50);
assert_eq!(calc.eval("2 3 +"), 5);
assert_eq!(calc.eval("2 3 *"), 6);
assert_eq!(calc.eval("2 3 -"), -1);
assert_eq!(calc.eval("2 3 /"), 0);
assert_eq!(calc.eval("2 3 %"), 2);
}
#[test]
#[should_panic]
fn test_ng() {
let calc = RpnCalculator::new(false);
calc.eval("1 1 ^");
}
}
#[cfg(test)]はテストコードであることを示すアノテーション。
modはモジュールの意味。
#[test]がついた関数がテストコードとなる。
#[should_panic]をつけるとパニックを起こすことを確認するテストになる。