#[macro_use] extern crate table_test; fn correct_add(val_1: i64, val_2: i64, val_3: i64) -> i64 { val_1 + val_2 + val_3 } fn incorrect_add(val_1: i64, val_2: i64, _val_3: i64) -> i64 { val_1 + val_2 } #[test] fn given_correct_add_function_when_use_table_test_then_no_panic() { let table = vec![ ((1, 2, 0), 3), ((1, 5, 1), 7), ((0, 0, 0), 0), ((0, 1, -6), -5), ]; for (test_case, (input_1, input_2, input_3), expected) in table_test!(table) { let actual = correct_add(input_1, input_2, input_3); test_case .given(&format!("{}, {}, {}", input_1, input_2, input_3)) .when("add") .then(&format!("it returns {}", expected)) .assert_eq(actual, expected); } } #[test] #[should_panic] fn given_incorrect_add_function_when_use_table_test_then_panic() { let table = vec![ ((1, 2, 0), 3), ((1, 5, 1), 7), ((0, 0, 0), 0), ((0, 1, -6), -5), ]; for (test_case, (input_1, input_2, input_3), expected) in table_test!(table) { let actual = incorrect_add(input_1, input_2, input_3); test_case .given(&format!("{}, {}, {}", input_1, input_2, input_3)) .when("add") .then(&format!("it returns {}", expected)) .assert_eq(actual, expected); } }