diff options
| author | Dave Herman <[email protected]> | 2010-10-21 11:39:53 -0700 |
|---|---|---|
| committer | Dave Herman <[email protected]> | 2010-10-21 11:39:53 -0700 |
| commit | dbe27199b844aea507de8052da7b1e8f60543e70 (patch) | |
| tree | 1438eafecd076a6748aaa6f325e91b58a83887c7 /src/test | |
| parent | rustboot: Don't use ridiculous type names when describing simple types like i... (diff) | |
| download | rust-dbe27199b844aea507de8052da7b1e8f60543e70.tar.xz rust-dbe27199b844aea507de8052da7b1e8f60543e70.zip | |
line length police; moved comp.util.bits to std.bitv
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/run-pass/lib-bitv.rs | 297 |
1 files changed, 297 insertions, 0 deletions
diff --git a/src/test/run-pass/lib-bitv.rs b/src/test/run-pass/lib-bitv.rs new file mode 100644 index 00000000..162e8b13 --- /dev/null +++ b/src/test/run-pass/lib-bitv.rs @@ -0,0 +1,297 @@ +use std; +import std._vec; +import std.bitv; + +fn test_0_elements() { + auto act; + auto exp; + + act = bitv.create(0u, false); + exp = _vec.init_elt[uint](0u, 0u); + // FIXME: why can't I write vec[uint]()? + check (bitv.eq_vec(act, exp)); +} + +fn test_1_element() { + auto act; + + act = bitv.create(1u, false); + check (bitv.eq_vec(act, vec(0u))); + + act = bitv.create(1u, true); + check (bitv.eq_vec(act, vec(1u))); +} + +fn test_10_elements() { + auto act; + + // all 0 + act = bitv.create(10u, false); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // all 1 + act = bitv.create(10u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(10u, false); + bitv.set(act, 0u, true); + bitv.set(act, 1u, true); + bitv.set(act, 2u, true); + bitv.set(act, 3u, true); + bitv.set(act, 4u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 0u, 0u, 0u, 0u, 0u))); + + // mixed + act = bitv.create(10u, false); + bitv.set(act, 5u, true); + bitv.set(act, 6u, true); + bitv.set(act, 7u, true); + bitv.set(act, 8u, true); + bitv.set(act, 9u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(10u, false); + bitv.set(act, 0u, true); + bitv.set(act, 3u, true); + bitv.set(act, 6u, true); + bitv.set(act, 9u, true); + check (bitv.eq_vec(act, vec(1u, 0u, 0u, 1u, 0u, 0u, 1u, 0u, 0u, 1u))); +} + +fn test_31_elements() { + auto act; + + // all 0 + act = bitv.create(31u, false); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // all 1 + act = bitv.create(31u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(31u, false); + bitv.set(act, 0u, true); + bitv.set(act, 1u, true); + bitv.set(act, 2u, true); + bitv.set(act, 3u, true); + bitv.set(act, 4u, true); + bitv.set(act, 5u, true); + bitv.set(act, 6u, true); + bitv.set(act, 7u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // mixed + act = bitv.create(31u, false); + bitv.set(act, 16u, true); + bitv.set(act, 17u, true); + bitv.set(act, 18u, true); + bitv.set(act, 19u, true); + bitv.set(act, 20u, true); + bitv.set(act, 21u, true); + bitv.set(act, 22u, true); + bitv.set(act, 23u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // mixed + act = bitv.create(31u, false); + bitv.set(act, 24u, true); + bitv.set(act, 25u, true); + bitv.set(act, 26u, true); + bitv.set(act, 27u, true); + bitv.set(act, 28u, true); + bitv.set(act, 29u, true); + bitv.set(act, 30u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(31u, false); + bitv.set(act, 3u, true); + bitv.set(act, 17u, true); + bitv.set(act, 30u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 1u))); +} + +fn test_32_elements() { + auto act; + + // all 0 + act = bitv.create(32u, false); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // all 1 + act = bitv.create(32u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(32u, false); + bitv.set(act, 0u, true); + bitv.set(act, 1u, true); + bitv.set(act, 2u, true); + bitv.set(act, 3u, true); + bitv.set(act, 4u, true); + bitv.set(act, 5u, true); + bitv.set(act, 6u, true); + bitv.set(act, 7u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // mixed + act = bitv.create(32u, false); + bitv.set(act, 16u, true); + bitv.set(act, 17u, true); + bitv.set(act, 18u, true); + bitv.set(act, 19u, true); + bitv.set(act, 20u, true); + bitv.set(act, 21u, true); + bitv.set(act, 22u, true); + bitv.set(act, 23u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u))); + + // mixed + act = bitv.create(32u, false); + bitv.set(act, 24u, true); + bitv.set(act, 25u, true); + bitv.set(act, 26u, true); + bitv.set(act, 27u, true); + bitv.set(act, 28u, true); + bitv.set(act, 29u, true); + bitv.set(act, 30u, true); + bitv.set(act, 31u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u))); + + // mixed + act = bitv.create(32u, false); + bitv.set(act, 3u, true); + bitv.set(act, 17u, true); + bitv.set(act, 30u, true); + bitv.set(act, 31u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u))); +} + +fn test_33_elements() { + auto act; + + // all 0 + act = bitv.create(33u, false); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u))); + + // all 1 + act = bitv.create(33u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 1u))); + + // mixed + act = bitv.create(33u, false); + bitv.set(act, 0u, true); + bitv.set(act, 1u, true); + bitv.set(act, 2u, true); + bitv.set(act, 3u, true); + bitv.set(act, 4u, true); + bitv.set(act, 5u, true); + bitv.set(act, 6u, true); + bitv.set(act, 7u, true); + check (bitv.eq_vec(act, vec(1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u))); + + // mixed + act = bitv.create(33u, false); + bitv.set(act, 16u, true); + bitv.set(act, 17u, true); + bitv.set(act, 18u, true); + bitv.set(act, 19u, true); + bitv.set(act, 20u, true); + bitv.set(act, 21u, true); + bitv.set(act, 22u, true); + bitv.set(act, 23u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u))); + + // mixed + act = bitv.create(33u, false); + bitv.set(act, 24u, true); + bitv.set(act, 25u, true); + bitv.set(act, 26u, true); + bitv.set(act, 27u, true); + bitv.set(act, 28u, true); + bitv.set(act, 29u, true); + bitv.set(act, 30u, true); + bitv.set(act, 31u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 1u, 1u, 1u, 1u, 1u, 1u, 1u, 1u, + 0u))); + + // mixed + act = bitv.create(33u, false); + bitv.set(act, 3u, true); + bitv.set(act, 17u, true); + bitv.set(act, 30u, true); + bitv.set(act, 31u, true); + bitv.set(act, 32u, true); + check (bitv.eq_vec(act, vec(0u, 0u, 0u, 1u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 1u, 0u, 0u, 0u, 0u, 0u, 0u, + 0u, 0u, 0u, 0u, 0u, 0u, 1u, 1u, + 1u))); +} + +fn main() { + test_0_elements(); + test_1_element(); + test_10_elements(); + test_31_elements(); + test_32_elements(); + test_33_elements(); +} |