1 use nix::sys::time::{TimeSpec, TimeVal, TimeValLike};
2 use std::time::Duration;
3 
4 #[test]
test_timespec()5 pub fn test_timespec() {
6     assert_ne!(TimeSpec::seconds(1), TimeSpec::zero());
7     assert_eq!(
8         TimeSpec::seconds(1) + TimeSpec::seconds(2),
9         TimeSpec::seconds(3)
10     );
11     assert_eq!(
12         TimeSpec::minutes(3) + TimeSpec::seconds(2),
13         TimeSpec::seconds(182)
14     );
15 }
16 
17 #[test]
test_timespec_from()18 pub fn test_timespec_from() {
19     let duration = Duration::new(123, 123_456_789);
20     let timespec = TimeSpec::nanoseconds(123_123_456_789);
21 
22     assert_eq!(TimeSpec::from(duration), timespec);
23     assert_eq!(Duration::from(timespec), duration);
24 }
25 
26 #[test]
test_timespec_neg()27 pub fn test_timespec_neg() {
28     let a = TimeSpec::seconds(1) + TimeSpec::nanoseconds(123);
29     let b = TimeSpec::seconds(-1) + TimeSpec::nanoseconds(-123);
30 
31     assert_eq!(a, -b);
32 }
33 
34 #[test]
test_timespec_ord()35 pub fn test_timespec_ord() {
36     assert_eq!(TimeSpec::seconds(1), TimeSpec::nanoseconds(1_000_000_000));
37     assert!(TimeSpec::seconds(1) < TimeSpec::nanoseconds(1_000_000_001));
38     assert!(TimeSpec::seconds(1) > TimeSpec::nanoseconds(999_999_999));
39     assert!(TimeSpec::seconds(-1) < TimeSpec::nanoseconds(-999_999_999));
40     assert!(TimeSpec::seconds(-1) > TimeSpec::nanoseconds(-1_000_000_001));
41 }
42 
43 #[test]
test_timespec_fmt()44 pub fn test_timespec_fmt() {
45     assert_eq!(TimeSpec::zero().to_string(), "0 seconds");
46     assert_eq!(TimeSpec::seconds(42).to_string(), "42 seconds");
47     assert_eq!(TimeSpec::milliseconds(42).to_string(), "0.042 seconds");
48     assert_eq!(TimeSpec::microseconds(42).to_string(), "0.000042 seconds");
49     assert_eq!(TimeSpec::nanoseconds(42).to_string(), "0.000000042 seconds");
50     assert_eq!(TimeSpec::seconds(-86401).to_string(), "-86401 seconds");
51 }
52 
53 #[test]
test_timeval()54 pub fn test_timeval() {
55     assert_ne!(TimeVal::seconds(1), TimeVal::zero());
56     assert_eq!(
57         TimeVal::seconds(1) + TimeVal::seconds(2),
58         TimeVal::seconds(3)
59     );
60     assert_eq!(
61         TimeVal::minutes(3) + TimeVal::seconds(2),
62         TimeVal::seconds(182)
63     );
64 }
65 
66 #[test]
test_timeval_ord()67 pub fn test_timeval_ord() {
68     assert_eq!(TimeVal::seconds(1), TimeVal::microseconds(1_000_000));
69     assert!(TimeVal::seconds(1) < TimeVal::microseconds(1_000_001));
70     assert!(TimeVal::seconds(1) > TimeVal::microseconds(999_999));
71     assert!(TimeVal::seconds(-1) < TimeVal::microseconds(-999_999));
72     assert!(TimeVal::seconds(-1) > TimeVal::microseconds(-1_000_001));
73 }
74 
75 #[test]
test_timeval_neg()76 pub fn test_timeval_neg() {
77     let a = TimeVal::seconds(1) + TimeVal::microseconds(123);
78     let b = TimeVal::seconds(-1) + TimeVal::microseconds(-123);
79 
80     assert_eq!(a, -b);
81 }
82 
83 #[test]
test_timeval_fmt()84 pub fn test_timeval_fmt() {
85     assert_eq!(TimeVal::zero().to_string(), "0 seconds");
86     assert_eq!(TimeVal::seconds(42).to_string(), "42 seconds");
87     assert_eq!(TimeVal::milliseconds(42).to_string(), "0.042 seconds");
88     assert_eq!(TimeVal::microseconds(42).to_string(), "0.000042 seconds");
89     assert_eq!(TimeVal::nanoseconds(1402).to_string(), "0.000001 seconds");
90     assert_eq!(TimeVal::seconds(-86401).to_string(), "-86401 seconds");
91 }
92