--- /dev/null
+
+USING: classes.struct tools.test unix.time ;
+
+IN: unix.time
+
+{ S{ timeval f 0 0 } } [ 0 make-timeval ] unit-test
+{ S{ timeval f 1 234567 } } [ 1,234,567 make-timeval ] unit-test
+
+{ S{ timespec f 0 0 } } [ 0 make-timespec ] unit-test
+{ S{ timespec f 1 234567890 } } [ 1,234,567,890 make-timespec ] unit-test
{ nsec long } ;
: make-timeval ( us -- timeval )
- 1000000 /mod
- timeval <struct>
- swap >>usec
- swap >>sec ;
+ [ timeval <struct> ] dip [
+ 1000000 /mod [ >>sec ] [ >>usec ] bi*
+ ] unless-zero ;
: make-timespec ( nanos -- timespec )
- 1000000000 /mod
- timespec <struct>
- swap >>nsec
- swap >>sec ;
+ [ timespec <struct> ] dip [
+ 1000000000 /mod [ >>sec ] [ >>nsec ] bi*
+ ] unless-zero ;
STRUCT: timezone
{ tz_minuteswest int }