]> git.lizzy.rs Git - rust.git/commitdiff
Tests
authorNick Cameron <ncameron@mozilla.com>
Mon, 15 Dec 2014 01:23:00 +0000 (14:23 +1300)
committerNick Cameron <ncameron@mozilla.com>
Tue, 23 Dec 2014 20:12:46 +0000 (09:12 +1300)
src/test/compile-fail/range-1.rs [new file with mode: 0644]
src/test/compile-fail/range-2.rs [new file with mode: 0644]
src/test/run-pass/range.rs [new file with mode: 0644]

diff --git a/src/test/compile-fail/range-1.rs b/src/test/compile-fail/range-1.rs
new file mode 100644 (file)
index 0000000..f1751f3
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Test range syntax - type errors.
+
+pub fn main() {
+    // Mixed types.
+    let _ = 0u..10i;
+    //~^ ERROR mismatched types: expected `uint`, found `int`
+
+    // Float => does not implement iterator.
+    for i in 0f32..42f32 {}
+    //~^ ERROR `for` loop expression has type `core::ops::Range<f32>` which does not implement
+
+    // Unsized type.
+    let arr: &[_] = &[1u, 2, 3];
+    let range = (*arr)..;
+    //~^ ERROR the trait `core::kinds::Sized` is not implemented
+}
diff --git a/src/test/compile-fail/range-2.rs b/src/test/compile-fail/range-2.rs
new file mode 100644 (file)
index 0000000..e9bb148
--- /dev/null
@@ -0,0 +1,26 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Test range syntax - borrow errors.
+
+pub fn main() {
+    let x = &42i;
+    {
+        let y = 42i;
+        let r = x..&y;
+        //~^ ERROR `y` does not live long enough
+    }
+
+    let r = {
+        (&42i)..&42
+        //~^ ERROR borrowed value does not live long enough
+        //~^^ ERROR borrowed value does not live long enough
+    };
+}
diff --git a/src/test/run-pass/range.rs b/src/test/run-pass/range.rs
new file mode 100644 (file)
index 0000000..64eabe1
--- /dev/null
@@ -0,0 +1,41 @@
+// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
+// file at the top-level directory of this distribution and at
+// http://rust-lang.org/COPYRIGHT.
+//
+// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
+// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
+// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
+// option. This file may not be copied, modified, or distributed
+// except according to those terms.
+
+// Test range syntax.
+
+fn foo() -> int { 42 }
+
+pub fn main() {
+    let mut count = 0;
+    for i in 0u..10 {
+        assert!(i >= 0 && i < 10);
+        count += i;
+    }
+    assert!(count == 45);
+
+    let mut count = 0;
+    let mut range = 0u..10;
+    for i in range {
+        assert!(i >= 0 && i < 10);
+        count += i;
+    }
+    assert!(count == 45);
+
+    let mut count = 0;
+    let mut rf = 3u..;
+    for i in rf.take(10) {
+        assert!(i >= 3 && i < 13);
+        count += i;
+    }
+    assert!(count == 75);
+
+    let _ = 0u..4+4-3;
+    let _ = 0..foo();
+}