about summary refs log tree commit diff
path: root/src/libstd/time.rs
diff options
context:
space:
mode:
authorАртём Павлов [Artyom Pavlov] <newpavlov@gmail.com>2018-07-29 07:00:13 +0300
committerАртём Павлов [Artyom Pavlov] <newpavlov@gmail.com>2018-07-29 07:00:13 +0300
commitc24fb126e7cdd73163af67c264bf626aebbeee84 (patch)
treef1fb9b0e439db9cc118cb8952b3d19b74c19243c /src/libstd/time.rs
parentc7cba3d33f564be140275c4fb9e33c6dc2c97b21 (diff)
duration div mul extras
Diffstat (limited to 'src/libstd/time.rs')
-rw-r--r--src/libstd/time.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libstd/time.rs b/src/libstd/time.rs
index 90ab3491599..640902426cd 100644
--- a/src/libstd/time.rs
+++ b/src/libstd/time.rs
@@ -590,4 +590,30 @@ mod tests {
         let hundred_twenty_years = thirty_years * 4;
         assert!(a < hundred_twenty_years);
     }
+
+    #[test]
+    fn duration_float_ops() {
+        let dur = Duration::new(2, 700_000_000);
+
+        let dur2 = 3.14*dur;
+        assert_eq!(dur2, dur*3.14);
+        assert_eq!(dur2.as_secs(), 8);
+        assert_eq!(dur2.subsec_nanos(), 478_000_000);
+
+        let dur3 = 3.14e5*dur;
+        assert_eq!(dur3, dur*3.14e5);
+        assert_eq!(dur3.as_secs(), 847_800);
+        assert_eq!(dur3.subsec_nanos(), 0);
+
+        let dur4 = dur/3.14;
+        assert_eq!(dur4.as_secs(), 0);
+        assert_eq!(dur4.subsec_nanos(), 859_872_611);
+
+        let dur5 = dur/3.14e5;
+        assert_eq!(dur5.as_secs(), 0);
+        // we are using truncation and not rounding
+        assert_eq!(dur5.subsec_nanos(), 8598);
+
+        assert_eq!(dur/Duration::new(5, 400_000_000), 0.5);
+    }
 }