rust_test_framework 0.1.3-alpha.2

A testing framework for Rust
Documentation
use rust_test_framework::test_params_source;

#[test_params_source(JsonString("[1, 2, 3]"))]
fn test_json_string_primitive(val: u32) {
    assert!(val > 0);
}

#[derive(serde::Deserialize, Debug, PartialEq)]
struct User {
    name: String,
    age: u32,
}

#[test_params_source(JsonString(r#"[{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]"#))]
fn test_json_string_struct(user: User) {
    assert!(!user.name.is_empty());
    assert!(user.age > 0);
}

#[test_params_source(JsonString(r#"{"name": "Charlie", "age": 35}"#))]
fn test_json_string_single_struct(user: User) {
    assert_eq!(user.name, "Charlie");
    assert_eq!(user.age, 35);
}

#[test_params_source(JsonString(r#"[[1, "one"], [2, "two"]]"#))]
fn test_json_string_tuple(id: u32, label: String) {
    assert!(id > 0);
    assert!(!label.is_empty());
}

#[test_params_source(JsonString("[[1, 2], [3, 4]]"))]
fn test_json_string_vec_of_vec(v: Vec<u32>) {
    assert!(!v.is_empty());
}

#[test_params_source(JsonString(r#""A""#))]
fn test_json_string_single_enum(e: TestEnum) {
    assert_eq!(e, TestEnum::A);
}

#[derive(serde::Deserialize, Debug, PartialEq)]
enum TestEnum {
    A,
    B,
    C(u32),
}

#[test_params_source(JsonString(r#"[{"name": "Alice", "age": 30}]"#))]
fn test_json_string_vec_of_struct(user: User) {
    assert_eq!(user.name, "Alice");
}

#[test_params_source(JsonString(r#"["A", "B", {"C": 10}]"#))]
fn test_json_string_vec_enum(e: TestEnum) {
    match e {
        TestEnum::A => (),
        TestEnum::B => (),
        TestEnum::C(10) => (),
        _ => (),
    }
}

#[test_params_source(JsonString("[null, 1]"))]
fn test_json_string_option(v: Option<u32>) {
    assert!(v.is_none() || v.is_some());
}