use zod::ZodType;
mod test_utils;
use test_utils::*;
fn main() {}
#[test]
fn ok() {
test_case! {
struct Test(usize, usize, String);
}
let json = serde_json::to_value(Test(123, 42, String::from("abc"))).unwrap();
assert_eq!(json, serde_json::json!([123, 42, "abc"]));
assert_eq!(
Test::schema(),
tuple(&[usize::schema(), usize::schema(), String::schema()])
);
assert_eq!(Test::type_def(), "[number, number, string]");
assert_eq!(Test::inline().to_string(), "Ns.Test")
}
#[test]
fn with_default_fields() {
test_case! {
#[derive(Debug, PartialEq, serde::Deserialize)]
struct Test(usize, #[serde(default)]usize);
}
let test = Test(42, 0);
let res: Test = serde_json::from_value(serde_json::json!([42])).unwrap();
assert_eq!(test, res);
assert_eq!(
Test::schema(),
tuple(&[usize::schema(), optional(usize::schema())])
);
assert_eq!(Test::type_def(), "[number, number | undefined]");
assert_eq!(Test::inline().to_string(), "Ns.Test")
}