From a9d62e5a90c4c29276ea3a3b7475712a63af8174 Mon Sep 17 00:00:00 2001
From: Michael Sullivan <sully@msully.net>
Date: Wed, 15 Jun 2011 17:08:10 -0700
Subject: [PATCH] Write some tests for swap.

---
 src/test/compile-fail/swap-uninit.rs |  7 +++++++
 src/test/run-pass/swap-1.rs          |  7 +++++++
 src/test/run-pass/swap-2.rs          | 14 ++++++++++++++
 3 files changed, 28 insertions(+)
 create mode 100644 src/test/compile-fail/swap-uninit.rs
 create mode 100644 src/test/run-pass/swap-1.rs
 create mode 100644 src/test/run-pass/swap-2.rs

diff --git a/src/test/compile-fail/swap-uninit.rs b/src/test/compile-fail/swap-uninit.rs
new file mode 100644
index 00000000000..18ca56b5aea
--- /dev/null
+++ b/src/test/compile-fail/swap-uninit.rs
@@ -0,0 +1,7 @@
+// error-pattern:Unsatisfied precondition
+
+fn main() {
+    auto x = 3;
+    auto y;
+    x <-> y;
+}
diff --git a/src/test/run-pass/swap-1.rs b/src/test/run-pass/swap-1.rs
new file mode 100644
index 00000000000..a4ce5bf2d62
--- /dev/null
+++ b/src/test/run-pass/swap-1.rs
@@ -0,0 +1,7 @@
+fn main() {
+    auto x = 3;
+    auto y = 7;
+    x <-> y;
+    assert (x == 7);
+    assert (y == 3);
+}
diff --git a/src/test/run-pass/swap-2.rs b/src/test/run-pass/swap-2.rs
new file mode 100644
index 00000000000..6c33030ba0a
--- /dev/null
+++ b/src/test/run-pass/swap-2.rs
@@ -0,0 +1,14 @@
+fn swap[T](&vec[mutable T] v, int i, int j) {
+    v.(i) <-> v.(j);
+}
+
+fn main() {
+    let vec[mutable int] a = [mutable 0,1,2,3,4,5,6];
+    swap(a, 2, 4);
+    assert(a.(2) == 4);
+    assert(a.(4) == 2);
+    auto n = 42;
+    n <-> a.(0);
+    assert(a.(0) == 42);
+    assert(n == 0);
+}