nbits 0.8.1

Bits operations on [u8]
Documentation
#![cfg(test)]

use nbits::NBits as Bits;

#[test]
fn test_bits_offset() {
    let data = [0b0000_0001];
    assert_eq!(Bits(data) << 1, Bits([0b0000_0010]));
    assert_eq!(Bits(data) << 2, Bits([0b0000_0100]));
    assert_eq!(Bits(data) << 3, Bits([0b0000_1000]));
    assert_eq!(Bits(data) << 4, Bits([0b0001_0000]));
    assert_eq!(Bits(data) << 5, Bits([0b0010_0000]));
    assert_eq!(Bits(data) << 6, Bits([0b0100_0000]));
    assert_eq!(Bits(data) << 7, Bits([0b1000_0000]));

    let data = [0b1111_1111, 0b1111_1111];
    assert_eq!(Bits(data) << 1, Bits([0b1111_1111, 0b1111_1110]));
    assert_eq!(Bits(data) << 2, Bits([0b1111_1111, 0b1111_1100]));
    assert_eq!(Bits(data) << 3, Bits([0b1111_1111, 0b1111_1000]));
    assert_eq!(Bits(data) << 4, Bits([0b1111_1111, 0b1111_0000]));
    assert_eq!(Bits(data) << 5, Bits([0b1111_1111, 0b1110_0000]));
    assert_eq!(Bits(data) << 6, Bits([0b1111_1111, 0b1100_0000]));
    assert_eq!(Bits(data) << 7, Bits([0b1111_1111, 0b1000_0000]));
    assert_eq!(Bits(data) << 8, Bits([0b1111_1111, 0b0000_0000]));
    assert_eq!(Bits(data) << 9, Bits([0b1111_1110, 0b0000_0000]));
    assert_eq!(Bits(data) << 10, Bits([0b1111_1100, 0b0000_0000]));
    assert_eq!(Bits(data) << 11, Bits([0b1111_1000, 0b0000_0000]));
    assert_eq!(Bits(data) << 12, Bits([0b1111_0000, 0b0000_0000]));
    assert_eq!(Bits(data) << 13, Bits([0b1110_0000, 0b0000_0000]));
    assert_eq!(Bits(data) << 14, Bits([0b1100_0000, 0b0000_0000]));
    assert_eq!(Bits(data) << 15, Bits([0b1000_0000, 0b0000_0000]));

    let data = [0b1000_0000];
    assert_eq!(Bits(data) >> 7, Bits([0b0000_0001]));
    assert_eq!(Bits(data) >> 6, Bits([0b0000_0010]));
    assert_eq!(Bits(data) >> 5, Bits([0b0000_0100]));
    assert_eq!(Bits(data) >> 4, Bits([0b0000_1000]));
    assert_eq!(Bits(data) >> 3, Bits([0b0001_0000]));
    assert_eq!(Bits(data) >> 2, Bits([0b0010_0000]));
    assert_eq!(Bits(data) >> 1, Bits([0b0100_0000]));

    let data = [0b1111_1111, 0b1111_1111];
    assert_eq!(Bits(data) >> 1, Bits([0b0111_1111, 0b1111_1111]));
    assert_eq!(Bits(data) >> 2, Bits([0b0011_1111, 0b1111_1111]));
    assert_eq!(Bits(data) >> 3, Bits([0b0001_1111, 0b1111_1111]));
    assert_eq!(Bits(data) >> 4, Bits([0b0000_1111, 0b1111_1111]));
    assert_eq!(Bits(data) >> 5, Bits([0b0000_0111, 0b1111_1111]));
    assert_eq!(Bits(data) >> 6, Bits([0b0000_0011, 0b1111_1111]));
    assert_eq!(Bits(data) >> 7, Bits([0b0000_0001, 0b1111_1111]));
    assert_eq!(Bits(data) >> 8, Bits([0b0000_0000, 0b1111_1111]));
    assert_eq!(Bits(data) >> 9, Bits([0b0000_0000, 0b0111_1111]));
    assert_eq!(Bits(data) >> 10, Bits([0b0000_0000, 0b0011_1111]));
    assert_eq!(Bits(data) >> 11, Bits([0b0000_0000, 0b0001_1111]));
    assert_eq!(Bits(data) >> 12, Bits([0b0000_0000, 0b0000_1111]));
    assert_eq!(Bits(data) >> 13, Bits([0b0000_0000, 0b0000_0111]));
    assert_eq!(Bits(data) >> 14, Bits([0b0000_0000, 0b0000_0011]));
    assert_eq!(Bits(data) >> 15, Bits([0b0000_0000, 0b0000_0001]));
}