見出し画像

Rustで100本ノック: テストコード

おはようございます、100本ノック、継続中です。

中級編に入り、ちょっと難しいロジックの登場です。自分でも『これでいいのか?』と思ってしまうようなことが出てきそうなので、サンプルをベースにテストを組み込んで安心感を高めたいと考えるようになってきました。

素材はNo.44(円とドル円を渡してドル・セントを計算するもの)です。Rustでは、testというアノテーション(というの?)が用意されていて、テストコード実行を制御できるようになってます。

#[test]
fn check() {
   let (doller, cent) = convert(10000, 120);
   assert_eq!(83, doller);
   assert_eq!(33, cent);
   let (doller, cent) = convert(15000, 125);
   assert_eq!(120, doller);
   assert_eq!(0, cent);
}

テストコード無いで使える標準的そうなものとしては、assert_eq!()マクロでしょうか。引数に『こうなってて欲しいもの』と『実行結果』を渡すことで、アサーションを示せます。数値は100本ノックの実行結果から抜いてます。

これを実行するには、こんな感じとなります。

$ cargo test --bin no044 # no044がバイナリ名

なおRustでは多値返却がサポートされているようです、戻り値となる式をタプルのように書けばOKで、戻り値の定義もそれにしておけば受け取れます。一度ドルとセントの構造体をと考えましたが、そこまで複雑にしなくて良いのは助かりました。

これからは少し時間を取って、テストを加えながら安心した開発に持ち込めるようにしてきましょうか、そのためには関数定義から考えなくてはいけませんでしょうから、良い勉強が増えると思います。

(楽天の方向けはこちら)

この記事が気に入ったらサポートをしてみませんか?