diff --git a/autotest/Bits/Bits.cpp b/autotest/Bits/Bits.cpp index cdeff97c7..2fd7f2eba 100644 --- a/autotest/Bits/Bits.cpp +++ b/autotest/Bits/Bits.cpp @@ -6,19 +6,58 @@ CONSOLE_APP_MAIN { StdLogSetup(LOG_COUT|LOG_FILE); - Bits h; - Vector v; - - for(int i = 0; i < 100000; i++) { - int pos = Random(120000); - bool b = Random() & 1; + { + Bits h; + Vector v; - v.At(pos, false) = b; - h.Set(pos, b); + SeedRandom(); + + for(int i = 0; i < 100000; i++) { + int pos = Random(120000); + bool b = Random() & 1; + + v.At(pos, false) = b; + h.Set(pos, b); + } + + for(int i = 0; i < v.GetCount(); i++) + ASSERT(h.Get(i) == v[i]); } - for(int i = 0; i < v.GetCount(); i++) - ASSERT(h.Get(i) == v[i]); + { + Bits r; + dword *h = r.CreateRaw(2); + *h = 0x4444; + + ASSERT(r.Get(0) == 0); + ASSERT(r.Get(1) == 0); + ASSERT(r.Get(2) == 1); + ASSERT(r.Get(3) == 0); + ASSERT(r.Get(4) == 0); + ASSERT(r.Get(5) == 0); + ASSERT(r.Get(6) == 1); + + r.Set(31, 1); + ASSERT(*h == 0x80004444); + + int n; + const dword *x = r.Raw(n); + + DUMP(n); + ASSERT(n >= 2); + ASSERT(*x == 0x80004444); + + r.Set(1000, 1); + r.Raw(n); + DUMP(n); + r.Set(2000, 1); + r.Raw(n); + DUMP(n); + r.Set(2000, 0); + r.Shrink(); + ASSERT(*r.Raw(n) == 0x80004444); + DUMP(n); + } LOG("--------- OK"); }