use bstr::ByteSlice; use git_date::{time::Sign, Time}; #[test] fn is_set() { assert!(!Time::default().is_set()); assert!(Time { seconds_since_unix_epoch: 1, ..Default::default() } .is_set()); } #[test] fn write_to() -> Result<(), Box> { for (time, expected) in &[ ( Time { seconds_since_unix_epoch: 500, offset_in_seconds: 9000, sign: Sign::Plus, }, "500 +0230", ), ( Time { seconds_since_unix_epoch: 189009009, offset_in_seconds: 36000, sign: Sign::Minus, }, "189009009 -1000", ), ( Time { seconds_since_unix_epoch: 0, offset_in_seconds: 0, sign: Sign::Minus, }, "0 -0000", ), ] { let mut output = Vec::new(); time.write_to(&mut output)?; assert_eq!(output.as_bstr(), expected); } Ok(()) } mod format { use git_date::time::Sign; use git_date::Time; use time::macros::format_description; #[test] fn year_month_day() { assert_eq!(time().format(git_date::time::format::SHORT), "1970-01-01"); } #[test] fn custom_compile_time() { assert_eq!( time().format(&format_description!("[year]-[month]-[day] [hour]:[minute]:[second]")), "1970-01-01 00:08:20", ); } fn time() -> Time { Time { seconds_since_unix_epoch: 500, offset_in_seconds: 9000, sign: Sign::Plus, } } } mod parse { use git_date::time::Sign; use git_date::Time; #[test] fn special_time_is_ok_for_now() { assert_eq!( git_date::parse("1979-02-26 18:30:00").unwrap(), Time { seconds_since_unix_epoch: 42, offset_in_seconds: 1800, sign: Sign::Plus, } ); } }