Esempio n. 1
0
  void BitVector_Test::Test_bitVectorStoreBits()
  {
    const u32 PATTERN = 0xdeadbeef;

    BitVector<256>* bits;
    bits = setup();
    bits->StoreBits(PATTERN,12,32*7); // 0-7; unaligned start/end

    assert(bits->Read(  0,32) == 0x246dbeef);
    assert(bits->Read( 32,32) == 0xdeadbeef);
    assert(bits->Read( 64,32) == 0xdeadbeef);
    assert(bits->Read( 96,32) == 0xdeadbeef);
    assert(bits->Read(128,32) == 0xdeadbeef);
    assert(bits->Read(160,32) == 0xdeadbeef);
    assert(bits->Read(192,32) == 0xdeadbeef);
    assert(bits->Read(224,32) == 0xdeabca09);

    bits = setup();
    bits->StoreBits(PATTERN,96,12); // 3-3; single front-aligned

    assertUnchanged(0,2);
    assert(bits->Read( 96,32) == 0xdeacdef0);
    assertUnchanged(4,7);

    bits = setup();
    bits->StoreBits(PATTERN,96+20,12); // 3-3; single back-aligned

    assertUnchanged(0,2);
    assert(bits->Read( 96,32) == 0x9abcdeef);
    assertUnchanged(4,7);

    bits = setup();
    bits->StoreBits(PATTERN,96+8,16); // 3-3; single unaligned

    assertUnchanged(0,2);
    assert(bits->Read( 96,32) == 0x9aadbef0);
    assertUnchanged(4,7);
  }