use tina::{
chrono::Timelike,
tina::data::{
date_time::{DateTimeExt, LocalDate, LocalDateTime},
json::{FromJson, ToJson},
},
};
#[test]
fn serde() {
let now = LocalDateTime(LocalDateTime::now().with_nanosecond(0).expect("init date time failed"));
let today = now.to_date();
let now_str = now.to_json_string();
let today_str = today.to_json_string();
let now2 = LocalDateTime::from_json_string(now_str.as_str()).unwrap_or_else(|err| panic!("{:?}", err));
let today2 = LocalDate::from_json_string(today_str.as_str()).unwrap_or_else(|err| panic!("{:?}", err));
assert_eq!(now2.0, now.0);
assert_eq!(today2.0, today.0);
let now_bson = tina::bson::to_bson(&now).unwrap_or_else(|err| panic!("{err:?}"));
let today_bson = tina::bson::to_bson(&today).unwrap_or_else(|err| panic!("{err:?}"));
assert!(now_bson.as_datetime().is_some());
assert!(today_bson.as_datetime().is_some());
let now3 = tina::bson::from_bson::<LocalDateTime>(now_bson).unwrap_or_else(|err| panic!("{err:?}"));
let today3 = tina::bson::from_bson::<LocalDate>(today_bson).unwrap_or_else(|err| panic!("{err:?}"));
assert_eq!(now3.0, now.0);
assert_eq!(today3.0, today.0);
let now_rbs = tina::rbs::to_value(now).unwrap_or_else(|err| panic!("{err:?}"));
let today_rbs = tina::rbs::to_value(today).unwrap_or_else(|err| panic!("{err:?}"));
assert!(now_rbs.is_i64());
assert!(today_rbs.is_i64());
let now4 = tina::rbs::from_value::<LocalDateTime>(now_rbs).unwrap_or_else(|err| panic!("{err:?}"));
let today4 = tina::rbs::from_value::<LocalDate>(today_rbs).unwrap_or_else(|err| panic!("{err:?}"));
assert_eq!(now4.0, now.0);
assert_eq!(today4.0, today.0);
}