Something went wrong. Try again.
Reactos
Something went wrong. Try again.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633
#include "precomp.h"#include <versionhelpers.h>
#include <pseh/pseh2.h>
static BOOL IsBroken = FALSE;
voidTest_RtlFindMostSignificantBit(void){ ok_int(RtlFindMostSignificantBit(0), -1);
ok_int(RtlFindMostSignificantBit(0x0000000000000001ULL), 0); ok_int(RtlFindMostSignificantBit(0x0000000000000002ULL), 1); ok_int(RtlFindMostSignificantBit(0x1000000000000000ULL), 60); ok_int(RtlFindMostSignificantBit(0x8000000000000000ULL), 63); ok_int(RtlFindMostSignificantBit(0x8000000000000001ULL), 63); ok_int(RtlFindMostSignificantBit(0xFFFFFFFFFFFFFFFFULL), 63); ok_int(RtlFindMostSignificantBit(0x0000000070000000ULL), 30);}
voidTest_RtlFindLeastSignificantBit(void){ ok_int(RtlFindLeastSignificantBit(0), -1);
ok_int(RtlFindLeastSignificantBit(0x0000000000000001ULL), 0); ok_int(RtlFindLeastSignificantBit(0x0000000000000002ULL), 1); ok_int(RtlFindLeastSignificantBit(0x1000000000000000ULL), 60); ok_int(RtlFindLeastSignificantBit(0x8000000000000000ULL), 63); ok_int(RtlFindLeastSignificantBit(0x8000000000000000ULL), 63); ok_int(RtlFindLeastSignificantBit(0xFFFFFFFFFFFFFFFFULL), 0); ok_int(RtlFindLeastSignificantBit(0x0000000070000000ULL), 28);}
voidTest_RtlInitializeBitMap(void){ RTL_BITMAP BitMapHeader; ULONG Buffer[2]; BOOLEAN Exception = FALSE;
_SEH2_TRY { RtlInitializeBitMap(NULL, NULL, 0); } _SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER) { Exception = TRUE; } _SEH2_END; ok_int(Exception, 1);
RtlInitializeBitMap(&BitMapHeader, NULL, -1); ok_int(BitMapHeader.SizeOfBitMap, -1); ok_ptr(BitMapHeader.Buffer, NULL);
memset(Buffer, 0xcc, sizeof(Buffer)); RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(BitMapHeader.SizeOfBitMap, 0); ok_ptr(BitMapHeader.Buffer, Buffer); ok_hex(Buffer[0], 0xcccccccc);
RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(BitMapHeader.SizeOfBitMap, 8); ok_hex(Buffer[0], 0xcccccccc);}
voidTest_RtlClearAllBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer; ULONG BufferSize = 2 * sizeof(*Buffer);
Buffer = AllocateGuarded(BufferSize); RtlInitializeBitMap(&BitMapHeader, Buffer, 19); memset(Buffer, 0xcc, BufferSize); RtlClearAllBits(&BitMapHeader); ok_hex(Buffer[0], 0x00000000); ok_hex(Buffer[1], 0xcccccccc);
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); memset(Buffer, 0xcc, BufferSize); RtlClearAllBits(&BitMapHeader); ok_hex(Buffer[0], 0xcccccccc); ok_hex(Buffer[1], 0xcccccccc);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); memset(Buffer, 0xcc, BufferSize); RtlClearAllBits(&BitMapHeader); ok_hex(Buffer[0], 0x00000000); ok_hex(Buffer[1], 0x00000000); FreeGuarded(Buffer);}
voidTest_RtlSetAllBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer; ULONG BufferSize = 2 * sizeof(*Buffer);
Buffer = AllocateGuarded(BufferSize); RtlInitializeBitMap(&BitMapHeader, Buffer, 19); memset(Buffer, 0xcc, BufferSize); RtlSetAllBits(&BitMapHeader); ok_hex(Buffer[0], 0xffffffff); ok_hex(Buffer[1], 0xcccccccc);
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); memset(Buffer, 0xcc, BufferSize); RtlSetAllBits(&BitMapHeader); ok_hex(Buffer[0], 0xcccccccc); ok_hex(Buffer[1], 0xcccccccc);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); memset(Buffer, 0xcc, BufferSize); RtlSetAllBits(&BitMapHeader); ok_hex(Buffer[0], 0xffffffff); ok_hex(Buffer[1], 0xffffffff); FreeGuarded(Buffer);}
voidTest_RtlClearBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer; ULONG BufferSize = 2 * sizeof(*Buffer);
Buffer = AllocateGuarded(BufferSize); RtlInitializeBitMap(&BitMapHeader, Buffer, 19);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 0, 0); ok_hex(Buffer[0], 0xffffffff); ok_hex(Buffer[1], 0xffffffff);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 0, 1); ok_hex(Buffer[0], 0xfffffffe); ok_hex(Buffer[1], 0xffffffff);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 21, 1); ok_hex(Buffer[0], 0xffdfffff); ok_hex(Buffer[1], 0xffffffff);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 7, 9); ok_hex(Buffer[0], 0xffff007f); ok_hex(Buffer[1], 0xffffffff);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 13, 22); ok_hex(Buffer[0], 0x00001fff); ok_hex(Buffer[1], 0xfffffff8);
memset(Buffer, 0xff, BufferSize); RtlClearBits(&BitMapHeader, 63, 1); ok_hex(Buffer[0], 0xffffffff); ok_hex(Buffer[1], 0x7fffffff);
memset(Buffer, 0xcc, BufferSize); RtlClearBits(&BitMapHeader, 3, 6); RtlClearBits(&BitMapHeader, 11, 5); RtlClearBits(&BitMapHeader, 21, 7); RtlClearBits(&BitMapHeader, 37, 4); ok_hex(Buffer[0], 0xc00c0404); ok_hex(Buffer[1], 0xcccccc0c); FreeGuarded(Buffer);}
voidTest_RtlSetBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer; ULONG BufferSize = 2 * sizeof(*Buffer);
Buffer = AllocateGuarded(BufferSize); RtlInitializeBitMap(&BitMapHeader, Buffer, 19);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 0, 0); ok_hex(Buffer[0], 0x00000000); ok_hex(Buffer[1], 0x00000000);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 0, 1); ok_hex(Buffer[0], 0x00000001); ok_hex(Buffer[1], 0x00000000);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 21, 1); ok_hex(Buffer[0], 0x00200000); ok_hex(Buffer[1], 0x00000000);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 7, 9); ok_hex(Buffer[0], 0x0000ff80); ok_hex(Buffer[1], 0x00000000);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 13, 22); ok_hex(Buffer[0], 0xffffe000); ok_hex(Buffer[1], 0x00000007);
memset(Buffer, 0x00, BufferSize); RtlSetBits(&BitMapHeader, 63, 1); ok_hex(Buffer[0], 0x00000000); ok_hex(Buffer[1], 0x80000000);
memset(Buffer, 0xcc, BufferSize); RtlSetBits(&BitMapHeader, 3, 6); RtlSetBits(&BitMapHeader, 11, 5); RtlSetBits(&BitMapHeader, 21, 7); RtlSetBits(&BitMapHeader, 37, 4); ok_hex(Buffer[0], 0xcfecfdfc); ok_hex(Buffer[1], 0xcccccdec); FreeGuarded(Buffer);}
voidTest_RtlAreBitsClear(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); RtlInitializeBitMap(&BitMapHeader, Buffer, 19); Buffer[0] = 0x00ff00ff; Buffer[1] = 0xc0cfc0cf;
ok_hex(RtlAreBitsClear(&BitMapHeader, 0, 8), FALSE); ok_hex(RtlAreBitsClear(&BitMapHeader, 8, 8), TRUE); ok_hex(RtlAreBitsClear(&BitMapHeader, 7, 8), FALSE); ok_hex(RtlAreBitsClear(&BitMapHeader, 8, 9), FALSE); ok_hex(RtlAreBitsClear(&BitMapHeader, 24, 1), FALSE);
RtlInitializeBitMap(&BitMapHeader, Buffer, 31); ok_hex(RtlAreBitsClear(&BitMapHeader, 24, 1), TRUE); ok_hex(RtlAreBitsClear(&BitMapHeader, 24, 7), TRUE); ok_hex(RtlAreBitsClear(&BitMapHeader, 24, 8), FALSE);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_hex(RtlAreBitsClear(&BitMapHeader, 60, 4), FALSE); FreeGuarded(Buffer);}
voidTest_RtlAreBitsSet(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); RtlInitializeBitMap(&BitMapHeader, Buffer, 19); Buffer[0] = 0xff00ff00; Buffer[1] = 0x3F303F30;
ok_hex(RtlAreBitsSet(&BitMapHeader, 0, 8), FALSE); ok_hex(RtlAreBitsSet(&BitMapHeader, 8, 8), TRUE); ok_hex(RtlAreBitsSet(&BitMapHeader, 7, 8), FALSE); ok_hex(RtlAreBitsSet(&BitMapHeader, 8, 9), FALSE); ok_hex(RtlAreBitsSet(&BitMapHeader, 24, 1), FALSE);
RtlInitializeBitMap(&BitMapHeader, Buffer, 31); ok_hex(RtlAreBitsSet(&BitMapHeader, 24, 1), TRUE); ok_hex(RtlAreBitsSet(&BitMapHeader, 24, 7), TRUE); ok_hex(RtlAreBitsSet(&BitMapHeader, 24, 8), FALSE);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_hex(RtlAreBitsSet(&BitMapHeader, 60, 4), FALSE); FreeGuarded(Buffer);}
voidTest_RtlNumberOfSetBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0xff00ff0f; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_int(RtlNumberOfSetBits(&BitMapHeader), 36); ok_hex(Buffer[0], 0xff00ff0f); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 56); ok_int(RtlNumberOfSetBits(&BitMapHeader), 30); ok_hex(Buffer[0], 0xff00ff0f); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 31); ok_int(RtlNumberOfSetBits(&BitMapHeader), 19); ok_hex(Buffer[0], IsBroken ? 0x7f00ff0f : 0xff00ff0f); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 4); ok_int(RtlNumberOfSetBits(&BitMapHeader), 4); ok_hex(Buffer[0], IsBroken ? 0x7f00ff0f : 0xff00ff0f); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlNumberOfSetBits(&BitMapHeader), 0); ok_hex(Buffer[0], IsBroken ? 0x7f00ff0f : 0xff00ff0f); ok_hex(Buffer[1], 0x3F303F30);
FreeGuarded(Buffer);}
voidTest_RtlNumberOfClearBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0xff00fff0; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_int(RtlNumberOfClearBits(&BitMapHeader), 28); ok_hex(Buffer[0], 0xff00fff0); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 56); ok_int(RtlNumberOfClearBits(&BitMapHeader), 26); ok_hex(Buffer[0], 0xff00fff0); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 31); ok_int(RtlNumberOfClearBits(&BitMapHeader), 12); ok_hex(Buffer[0], IsBroken ? 0x7f00fff0 : 0xff00fff0); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 4); ok_int(RtlNumberOfClearBits(&BitMapHeader), 4); ok_hex(Buffer[0], IsBroken ? 0x7f00ff00 : 0xff00fff0); ok_hex(Buffer[1], 0x3F303F30);
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlNumberOfClearBits(&BitMapHeader), 0); ok_hex(Buffer[0], IsBroken ? 0x7f00ff00 : 0xff00fff0); ok_hex(Buffer[1], 0x3F303F30);
FreeGuarded(Buffer);}
voidTest_RtlFindClearBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0x060F874D; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlFindClearBits(&BitMapHeader, 0, 0), 0); ok_int(RtlFindClearBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindClearBits(&BitMapHeader, 1, 0), -1); ok_int(RtlFindClearBits(&BitMapHeader, 1, 1), -1);
RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(RtlFindClearBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindClearBits(&BitMapHeader, 1, 0), 1); ok_int(RtlFindClearBits(&BitMapHeader, 1, 1), 1); ok_int(RtlFindClearBits(&BitMapHeader, 1, 2), 4);
ok_int(RtlFindClearBits(&BitMapHeader, 2, 0), 4); ok_int(RtlFindClearBits(&BitMapHeader, 3, 0), -1);
RtlInitializeBitMap(&BitMapHeader, Buffer, 32); ok_int(RtlFindClearBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindClearBits(&BitMapHeader, 0, 21), 16); ok_int(RtlFindClearBits(&BitMapHeader, 0, 12), 8); ok_int(RtlFindClearBits(&BitMapHeader, 0, 31), 24); ok_int(RtlFindClearBits(&BitMapHeader, 0, 32), 0); ok_int(RtlFindClearBits(&BitMapHeader, 0, 39), 0); ok_int(RtlFindClearBits(&BitMapHeader, 4, 0), 11); ok_int(RtlFindClearBits(&BitMapHeader, 5, 0), 20); ok_int(RtlFindClearBits(&BitMapHeader, 4, 11), 11); ok_int(RtlFindClearBits(&BitMapHeader, 4, 12), 20); ok_int(RtlFindClearBits(&BitMapHeader, 2, 11), 11); ok_int(RtlFindClearBits(&BitMapHeader, 2, 12), 12); ok_int(RtlFindClearBits(&BitMapHeader, 1, 32), 1); ok_int(RtlFindClearBits(&BitMapHeader, 4, 32), 11); ok_int(RtlFindClearBits(&BitMapHeader, 5, 32), 20);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_int(RtlFindClearBits(&BitMapHeader, 5, 64), 20); ok_int(RtlFindClearBits(&BitMapHeader, 9, 28), 27); ok_int(RtlFindClearBits(&BitMapHeader, 10, 0), -1); Buffer[1] = 0xFF303F30; ok_int(RtlFindClearBits(&BitMapHeader, 1, 56), 1); FreeGuarded(Buffer);}
voidTest_RtlFindSetBits(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0xF9F078B2; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlFindSetBits(&BitMapHeader, 0, 0), 0); ok_int(RtlFindSetBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindSetBits(&BitMapHeader, 1, 0), -1); ok_int(RtlFindSetBits(&BitMapHeader, 1, 1), -1);
RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(RtlFindSetBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindSetBits(&BitMapHeader, 1, 0), 1); ok_int(RtlFindSetBits(&BitMapHeader, 1, 1), 1); ok_int(RtlFindSetBits(&BitMapHeader, 1, 2), 4);
ok_int(RtlFindSetBits(&BitMapHeader, 2, 0), 4); ok_int(RtlFindSetBits(&BitMapHeader, 3, 0), -1);
RtlInitializeBitMap(&BitMapHeader, Buffer, 32); ok_int(RtlFindSetBits(&BitMapHeader, 0, 3), 0); ok_int(RtlFindSetBits(&BitMapHeader, 0, 21), 16); ok_int(RtlFindSetBits(&BitMapHeader, 0, 12), 8); ok_int(RtlFindSetBits(&BitMapHeader, 0, 31), 24); ok_int(RtlFindSetBits(&BitMapHeader, 0, 32), 0); ok_int(RtlFindSetBits(&BitMapHeader, 0, 39), 0); ok_int(RtlFindSetBits(&BitMapHeader, 4, 0), 11); ok_int(RtlFindSetBits(&BitMapHeader, 5, 0), 20); ok_int(RtlFindSetBits(&BitMapHeader, 4, 11), 11); ok_int(RtlFindSetBits(&BitMapHeader, 4, 12), 20); ok_int(RtlFindSetBits(&BitMapHeader, 2, 11), 11); ok_int(RtlFindSetBits(&BitMapHeader, 1, 32), 1); ok_int(RtlFindSetBits(&BitMapHeader, 4, 32), 11); ok_int(RtlFindSetBits(&BitMapHeader, 5, 32), 20);
RtlInitializeBitMap(&BitMapHeader, Buffer, 64); ok_int(RtlFindSetBits(&BitMapHeader, 5, 64), 20); ok_int(RtlFindSetBits(&BitMapHeader, 6, 57), 40); ok_int(RtlFindSetBits(&BitMapHeader, 7, 0), -1); ok_int(RtlFindSetBits(&BitMapHeader, 1, 62), 1); FreeGuarded(Buffer);}
voidTest_RtlFindClearBitsAndSet(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0x060F874D; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 0, 0), 0); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 0, 3), 0); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 1, 0), -1); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 1, 1), -1); ok_hex(Buffer[0], 0x060F874D);
Buffer[0] = 0x060F874D; RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 1, 0), 1); ok_hex(Buffer[0], 0x60f874f); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 1, 1), 4); ok_hex(Buffer[0], 0x60f875f); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 1, 2), 5); ok_hex(Buffer[0], 0x60f877f); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 2, 0), -1); ok_hex(Buffer[0], 0x60f877f);
Buffer[0] = 0x060F874D; RtlInitializeBitMap(&BitMapHeader, Buffer, 32); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 4, 0), 11); ok_hex(Buffer[0], 0x60fff4d); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 5, 0), 20); ok_hex(Buffer[0], 0x7ffff4d); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 4, 11), 27); ok_hex(Buffer[0], 0x7fffff4d);
Buffer[0] = 0x060F874D; ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 4, 12), 20); ok_hex(Buffer[0], 0x6ff874d); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 2, 11), 11); ok_hex(Buffer[0], 0x6ff9f4d); ok_int(RtlFindClearBitsAndSet(&BitMapHeader, 2, 12), 13); ok_hex(Buffer[0], 0x6ffff4d); FreeGuarded(Buffer);}
voidTest_RtlFindSetBitsAndClear(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0xF9F078B2; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 0, 0), 0); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 0, 3), 0); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 1, 0), -1); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 1, 1), -1); ok_hex(Buffer[0], 0xF9F078B2);
Buffer[0] = 0xF9F078B2; RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 1, 0), 1); ok_hex(Buffer[0], 0xf9f078b0); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 1, 1), 4); ok_hex(Buffer[0], 0xf9f078a0); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 1, 2), 5); ok_hex(Buffer[0], 0xf9f07880); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 2, 0), -1); ok_hex(Buffer[0], 0xf9f07880);
Buffer[0] = 0xF9F078B2; RtlInitializeBitMap(&BitMapHeader, Buffer, 32); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 4, 0), 11); ok_hex(Buffer[0], 0xf9f000b2); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 5, 0), 20); ok_hex(Buffer[0], 0xf80000b2); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 4, 11), 27); ok_hex(Buffer[0], 0x800000b2);
Buffer[0] = 0xF9F078B2; ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 4, 12), 20); ok_hex(Buffer[0], 0xf90078b2); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 2, 11), 11); ok_hex(Buffer[0], 0xf90060b2); ok_int(RtlFindSetBitsAndClear(&BitMapHeader, 2, 12), 13); ok_hex(Buffer[0], 0xf90000b2); FreeGuarded(Buffer);}
voidTest_RtlFindNextForwardRunClear(void){ RTL_BITMAP BitMapHeader; ULONG *Buffer; ULONG Index;
Buffer = AllocateGuarded(2 * sizeof(*Buffer)); Buffer[0] = 0xF9F078B2; Buffer[1] = 0x3F303F30;
RtlInitializeBitMap(&BitMapHeader, Buffer, 0); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 0, &Index), 0); ok_int(Index, 0); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 1, &Index), 0); ok_int(Index, 1);
Index = -1; RtlInitializeBitMap(&BitMapHeader, Buffer, 8); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 0, &Index), 1); ok_int(Index, 0); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 1, &Index), 2); ok_int(Index, 2); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 7, &Index), 0); ok_int(Index, 8); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 17, &Index), 0); ok_int(Index, 17); ok_int(RtlFindNextForwardRunClear(&BitMapHeader, 39, &Index), 0); ok_int(Index, 39); FreeGuarded(Buffer);}
voidTest_RtlFindFirstRunClear(void){}
voidTest_RtlFindLastBackwardRunClear(void){}
voidTest_RtlFindClearRuns(void){}
voidTest_RtlFindLongestRunClear(void){}
START_TEST(RtlBitmap){ /* Windows 2003 has broken bitmap code that modifies the buffer */ if (!IsWindowsVistaOrGreater() && !IsReactOS()) { IsBroken = TRUE; }
Test_RtlFindMostSignificantBit(); Test_RtlFindLeastSignificantBit(); Test_RtlInitializeBitMap(); Test_RtlClearAllBits(); Test_RtlSetAllBits(); Test_RtlClearBits(); Test_RtlSetBits(); Test_RtlAreBitsClear(); Test_RtlAreBitsSet(); Test_RtlNumberOfSetBits(); Test_RtlNumberOfClearBits(); Test_RtlFindClearBits(); Test_RtlFindSetBits(); Test_RtlFindClearBitsAndSet(); Test_RtlFindSetBitsAndClear(); Test_RtlFindNextForwardRunClear(); Test_RtlFindFirstRunClear(); Test_RtlFindLastBackwardRunClear(); Test_RtlFindClearRuns(); Test_RtlFindLongestRunClear();}