You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

69 lines
1.6 KiB
Rust

use rusty_value::{RustyValue, StructFields, Value};
use rusty_value_derive::*;
#[derive(RustyValue)]
struct TestStructNamed {
foo: String,
bar: u64,
}
#[test]
fn it_handles_named_fields() {
let test_struct = TestStructNamed {
foo: String::from("Hello World"),
bar: 12,
};
let value = test_struct.into_rusty_value();
dbg!(&value);
if let Value::Struct(s) = value {
assert_eq!(&s.name, "TestStructNamed");
if let StructFields::Named(fields) = s.fields {
assert_eq!(fields.len(), 2);
} else {
panic!("Struct wasn't serialized as named struct")
}
} else {
panic!("Struct wasn't serialized as struct");
}
}
#[derive(RustyValue)]
struct TestStructUnnamed(String, u64);
#[test]
fn it_handles_unnamed_fields() {
let test_struct = TestStructUnnamed(String::from("Hello World"), 12);
let value = test_struct.into_rusty_value();
dbg!(&value);
if let Value::Struct(s) = value {
assert_eq!(&s.name, "TestStructUnnamed");
if let StructFields::Unnamed(fields) = s.fields {
assert_eq!(fields.len(), 2);
} else {
panic!("Struct wasn't serialized as unnamed struct")
}
} else {
panic!("Struct wasn't serialized as struct");
}
}
#[derive(RustyValue)]
struct TestStructUnit;
#[test]
fn it_handles_unit_structs() {
let test_struct = TestStructUnit;
let value = test_struct.into_rusty_value();
dbg!(&value);
if let Value::Unit(s) = value {
assert_eq!(&s, "TestStructUnit");
} else {
panic!("Struct wasn't serialized as struct");
}
}