【Rust】テストコード用のマクロ

macro_rules! test_eq {
    ($func_name:ident, $arg:expr => $ans:expr) => {
        #[test]
        fn $func_name() {
            assert_eq!($arg, $ans);
        }
    }
}

macro_rules! test_ne {
    ($func_name:ident, $arg:expr => $ans:expr) => {
        #[test]
        fn $func_name() {
            assert_ne!($arg, $ans);
        }
    }
}

このようにマクロを定義しておく。

使う時は

test_eq!(test1, 1 + 2 => 3);
test_eq!(test2, 2 + 2 => 4);
test_eq!(test3, 1 + 10 => 11);

こんな感じで第一引数に生成される関数名、第二引数の => の左側に引数、=> の右側に期待している値を記入すればok.

fn add(x: i32, y: i32) -> i32 {
    x + y
}

このような関数をテストしたい場合も問題なく、

test_eq!(add_test, add(1, 2) => 3);

このように書けばok

追記(2/14)

毎回このマクロを探してきてコピペするのは面倒臭いのでライブラリ化した。 https://github.com/VeyronSakai/test-macro