From ee899dc55e7313161f69bd2e8e9194ba06ac4970 Mon Sep 17 00:00:00 2001 From: Sebastian Lackner Date: Thu, 9 Jul 2015 03:05:45 +0200 Subject: [PATCH] ntdll/tests: Add tests for RtlGetCompressionWorkSpaceSize. --- dlls/ntdll/tests/rtl.c | 47 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 47 insertions(+) diff --git a/dlls/ntdll/tests/rtl.c b/dlls/ntdll/tests/rtl.c index 755424c044a..a2e7f6cb130 100644 --- a/dlls/ntdll/tests/rtl.c +++ b/dlls/ntdll/tests/rtl.c @@ -1685,6 +1685,52 @@ static void test_RtlCompressBuffer(void) HeapFree(GetProcessHeap(), 0, workspace); } +static void test_RtlGetCompressionWorkSpaceSize(void) +{ + ULONG compress_workspace, decompress_workspace; + NTSTATUS status; + + if (!pRtlGetCompressionWorkSpaceSize) + { + win_skip("RtlGetCompressionWorkSpaceSize is not available\n"); + return; + } + + /* test invalid format / engine */ + status = pRtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_NONE, &compress_workspace, + &decompress_workspace); + todo_wine + ok(status == STATUS_INVALID_PARAMETER, "got wrong status 0x%08x\n", status); + + status = pRtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_DEFAULT, &compress_workspace, + &decompress_workspace); + todo_wine + ok(status == STATUS_INVALID_PARAMETER, "got wrong status 0x%08x\n", status); + + status = pRtlGetCompressionWorkSpaceSize(0xFF, &compress_workspace, &decompress_workspace); + todo_wine + ok(status == STATUS_UNSUPPORTED_COMPRESSION, "got wrong status 0x%08x\n", status); + + /* test LZNT1 with normal and maximum compression */ + compress_workspace = decompress_workspace = 0xdeadbeef; + status = pRtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1, &compress_workspace, + &decompress_workspace); + todo_wine + ok(status == STATUS_SUCCESS, "got wrong status 0x%08x\n", status); + ok(compress_workspace != 0, "got wrong compress_workspace %u\n", compress_workspace); + todo_wine + ok(decompress_workspace == 0x1000, "got wrong decompress_workspace %u\n", decompress_workspace); + + compress_workspace = decompress_workspace = 0xdeadbeef; + status = pRtlGetCompressionWorkSpaceSize(COMPRESSION_FORMAT_LZNT1 | COMPRESSION_ENGINE_MAXIMUM, + &compress_workspace, &decompress_workspace); + todo_wine + ok(status == STATUS_SUCCESS, "got wrong status 0x%08x\n", status); + ok(compress_workspace != 0, "got wrong compress_workspace %u\n", compress_workspace); + todo_wine + ok(decompress_workspace == 0x1000, "got wrong decompress_workspace %u\n", decompress_workspace); +} + START_TEST(rtl) { InitFunctionPtrs(); @@ -1712,4 +1758,5 @@ START_TEST(rtl) test_LdrAddRefDll(); test_LdrLockLoaderLock(); test_RtlCompressBuffer(); + test_RtlGetCompressionWorkSpaceSize(); }