about summary refs log tree commit diff
path: root/src/libcore/tests
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2018-02-09 01:47:18 -0800
committerScott McMurray <scottmcm@users.noreply.github.com>2018-02-09 01:47:18 -0800
commit4f8049a2b00c46cb1ac77cabaaf716895f185afe (patch)
tree9d04efd20feb079c5cc6e1a5182535109a8ca47c /src/libcore/tests
parentafa8acce251cda7ab1548640fdb769139a45f839 (diff)
Add Range[Inclusive]::is_empty
During the RFC, it was discussed that figuring out whether a range is empty was subtle, and thus there should be a clear and obvious way to do it.  It can't just be ExactSizeIterator::is_empty (also unstable) because not all ranges are ExactSize -- not even Range<i32> or RangeInclusive<usize>.
Diffstat (limited to 'src/libcore/tests')
-rw-r--r--src/libcore/tests/iter.rs4
-rw-r--r--src/libcore/tests/lib.rs1
-rw-r--r--src/libcore/tests/ops.rs24
3 files changed, 27 insertions, 2 deletions
diff --git a/src/libcore/tests/iter.rs b/src/libcore/tests/iter.rs
index b2a5243d5e6..062b6d4126e 100644
--- a/src/libcore/tests/iter.rs
+++ b/src/libcore/tests/iter.rs
@@ -1427,9 +1427,9 @@ fn test_range_inclusive_nth() {
     assert_eq!(r, 13..=20);
     assert_eq!(r.nth(2), Some(15));
     assert_eq!(r, 16..=20);
-    assert_eq!(r.is_empty(), false);
+    assert_eq!(ExactSizeIterator::is_empty(&r), false);
     assert_eq!(r.nth(10), None);
-    assert_eq!(r.is_empty(), true);
+    assert_eq!(ExactSizeIterator::is_empty(&r), true);
     assert_eq!(r, 1..=0);  // We may not want to document/promise this detail
 }
 
diff --git a/src/libcore/tests/lib.rs b/src/libcore/tests/lib.rs
index 1c32452f846..91b4f02594b 100644
--- a/src/libcore/tests/lib.rs
+++ b/src/libcore/tests/lib.rs
@@ -29,6 +29,7 @@
 #![feature(iter_rfold)]
 #![feature(nonzero)]
 #![feature(pattern)]
+#![feature(range_is_empty)]
 #![feature(raw)]
 #![feature(refcell_replace_swap)]
 #![feature(sip_hash_13)]
diff --git a/src/libcore/tests/ops.rs b/src/libcore/tests/ops.rs
index 9d2fa1abff6..68a692b24a3 100644
--- a/src/libcore/tests/ops.rs
+++ b/src/libcore/tests/ops.rs
@@ -68,3 +68,27 @@ fn test_range_inclusive() {
     assert_eq!(r.size_hint(), (0, Some(0)));
     assert_eq!(r.next(), None);
 }
+
+
+#[test]
+fn test_range_is_empty() {
+    use core::f32::*;
+
+    assert!(!(0.0 .. 10.0).is_empty());
+    assert!( (-0.0 .. 0.0).is_empty());
+    assert!( (10.0 .. 0.0).is_empty());
+
+    assert!(!(NEG_INFINITY .. INFINITY).is_empty());
+    assert!( (EPSILON .. NAN).is_empty());
+    assert!( (NAN .. EPSILON).is_empty());
+    assert!( (NAN .. NAN).is_empty());
+
+    assert!(!(0.0 ..= 10.0).is_empty());
+    assert!(!(-0.0 ..= 0.0).is_empty());
+    assert!( (10.0 ..= 0.0).is_empty());
+
+    assert!(!(NEG_INFINITY ..= INFINITY).is_empty());
+    assert!( (EPSILON ..= NAN).is_empty());
+    assert!( (NAN ..= EPSILON).is_empty());
+    assert!( (NAN ..= NAN).is_empty());
+}
\ No newline at end of file