diff options
| author | Brian Anderson <banderson@mozilla.com> | 2012-01-17 19:05:07 -0800 |
|---|---|---|
| committer | Brian Anderson <banderson@mozilla.com> | 2012-01-17 19:48:58 -0800 |
| commit | 6e27b27cf8a9ece270f2556c3362524854d06de4 (patch) | |
| tree | e310348b211f329737cec9a1a30fbf641492ad46 /src/libstd/tri.rs | |
| parent | 17bf4b0e1be01bc7a54c389deb5896949736d7f2 (diff) | |
| download | rust-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.rs | 118 |
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; |
