about summary refs log tree commit diff
path: root/src/libstd/tri.rs
diff options
context:
space:
mode:
authorBrian Anderson <banderson@mozilla.com>2012-01-17 19:05:07 -0800
committerBrian Anderson <banderson@mozilla.com>2012-01-17 19:48:58 -0800
commit6e27b27cf8a9ece270f2556c3362524854d06de4 (patch)
treee310348b211f329737cec9a1a30fbf641492ad46 /src/libstd/tri.rs
parent17bf4b0e1be01bc7a54c389deb5896949736d7f2 (diff)
downloadrust-6e27b27cf8a9ece270f2556c3362524854d06de4.tar.gz
rust-6e27b27cf8a9ece270f2556c3362524854d06de4.zip
libstd: Move std tests into libstd
Diffstat (limited to 'src/libstd/tri.rs')
-rw-r--r--src/libstd/tri.rs118
1 files changed, 118 insertions, 0 deletions
diff --git a/src/libstd/tri.rs b/src/libstd/tri.rs
index fd4456cfde3..558a45f475a 100644
--- a/src/libstd/tri.rs
+++ b/src/libstd/tri.rs
@@ -179,6 +179,124 @@ An u8 whose first bit is set if `if_true(v)` holds
 */
 fn to_bit(v: t) -> u8 { v & b0 }
 
+#[cfg(test)]
+mod tests {
+
+    pure fn eq1(a: tri::t, b: tri::t) -> bool { tri::eq(a , b) }
+    pure fn ne1(a: tri::t, b: tri::t) -> bool { tri::ne(a , b) }
+
+    pure fn eq2(a: tri::t, b: tri::t) -> bool { eq1( a, b ) && eq1( b, a ) }
+
+    #[test]
+    fn test_eq2() {
+        tri::all_values { |a|
+            tri::all_values { |b|
+                assert if a == b { eq1( a, b ) } else { ne1( a, b ) }
+            }
+        }
+    }
+
+    #[test]
+    fn test_tri_and_symmetry() {
+        tri::all_values { |a|
+            tri::all_values { |b|
+                assert eq1( tri::and(a ,b), tri::and(b, a) );
+            }
+        }
+    }
+
+    #[test]
+    fn test_tri_or_symmetry() {
+        tri::all_values { |a|
+            tri::all_values { |b|
+                assert eq1( tri::or(a ,b), tri::or(b, a) );
+            }
+        }
+    }
+
+    #[test]
+    fn test_tri_xor_symmetry() {
+        tri::all_values { |a|
+            tri::all_values { |b|
+                assert eq1( tri::xor(a ,b), tri::xor(b, a) );
+            }
+        }
+    }
+
+    #[test]
+    fn test_tri_not() {
+        assert eq2( tri::not(tri::true), tri::false);
+        assert eq2( tri::not(tri::unknown), tri::unknown);
+        assert eq2( tri::not(tri::false), tri::true);
+    }
+
+    #[test]
+    fn test_tri_and() {
+        assert eq2( tri::and(tri::true, tri::true), tri::true);
+        assert eq2( tri::and(tri::true, tri::false), tri::false);
+        assert eq2( tri::and(tri::true, tri::unknown), tri::unknown);
+        assert eq2( tri::and(tri::false, tri::false), tri::false);
+        assert eq2( tri::and(tri::false, tri::unknown), tri::false);
+        assert eq2( tri::and(tri::unknown, tri::unknown), tri::unknown);
+    }
+
+    #[test]
+    fn test_tri_or() {
+        assert eq2( tri::or(tri::true, tri::true), tri::true);
+        assert eq2( tri::or(tri::true, tri::false), tri::true);
+        assert eq2( tri::or(tri::true, tri::unknown), tri::true);
+        assert eq2( tri::or(tri::false, tri::false), tri::false);
+        assert eq2( tri::or(tri::false, tri::unknown), tri::unknown);
+        assert eq2( tri::or(tri::unknown, tri::unknown), tri::unknown);
+    }
+
+    #[test]
+    fn test_tri_xor() {
+        assert eq2( tri::xor(tri::true, tri::true), tri::false);
+        assert eq2( tri::xor(tri::false, tri::false), tri::false);
+        assert eq2( tri::xor(tri::true, tri::false), tri::true);
+        assert eq2( tri::xor(tri::true, tri::unknown), tri::unknown);
+        assert eq2( tri::xor(tri::false, tri::unknown), tri::unknown);
+        assert eq2( tri::xor(tri::unknown, tri::unknown), tri::unknown);
+    }
+
+    #[test]
+    fn test_tri_implies() {
+        assert eq2( tri::implies(tri::false, tri::false), tri::true);
+        assert eq2( tri::implies(tri::false, tri::unknown), tri::true);
+        assert eq2( tri::implies(tri::false, tri::true), tri::true);
+
+        assert eq2( tri::implies(tri::unknown, tri::false), tri::unknown);
+        assert eq2( tri::implies(tri::unknown, tri::unknown), tri::unknown);
+        assert eq2( tri::implies(tri::unknown, tri::true), tri::true);
+
+        assert eq2( tri::implies(tri::true, tri::false), tri::false);
+        assert eq2( tri::implies(tri::true, tri::unknown), tri::unknown);
+        assert eq2( tri::implies(tri::true, tri::true), tri::true);
+    }
+
+    #[test]
+    fn test_tri_from_str() {
+        tri::all_values { |v|
+            assert eq2( v, tri::from_str(tri::to_str(v)));
+        }
+    }
+
+    #[test]
+    fn test_tri_to_str() {
+        assert tri::to_str(tri::false) == "false";
+        assert tri::to_str(tri::unknown) == "unknown";
+        assert tri::to_str(tri::true) == "true";
+    }
+
+    #[test]
+    fn test_tri_to_bit() {
+        tri::all_values { |v|
+            assert tri::to_bit(v) == if tri::is_true(v) { 1u8 } else { 0u8 };
+        }
+    }
+}
+
 // Local Variables:
 // mode: rust;
 // fill-column: 78;