diff options
Diffstat (limited to 'src/test/stdtest/tri.rs')
| -rw-r--r-- | src/test/stdtest/tri.rs | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/src/test/stdtest/tri.rs b/src/test/stdtest/tri.rs new file mode 100644 index 00000000000..4ea87c1270e --- /dev/null +++ b/src/test/stdtest/tri.rs @@ -0,0 +1,117 @@ +use std; + +import std::tri; + +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 }; + } +} \ No newline at end of file |
