Andrew Nguyen : shlwapi/tests: Add tests for HashData.
Alexandre Julliard
julliard at winehq.org
Tue Jan 26 11:21:06 CST 2010
Module: wine
Branch: master
Commit: 20ac06134e0599c547e4fcdc1fa7f0497b9da410
URL: http://source.winehq.org/git/wine.git/?a=commit;h=20ac06134e0599c547e4fcdc1fa7f0497b9da410
Author: Andrew Nguyen <arethusa26 at gmail.com>
Date: Mon Jan 25 12:44:43 2010 -0600
shlwapi/tests: Add tests for HashData.
---
dlls/shlwapi/tests/url.c | 88 ++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 88 insertions(+), 0 deletions(-)
diff --git a/dlls/shlwapi/tests/url.c b/dlls/shlwapi/tests/url.c
index 2205e09..a253c11 100644
--- a/dlls/shlwapi/tests/url.c
+++ b/dlls/shlwapi/tests/url.c
@@ -1082,6 +1082,93 @@ static void test_ParseURL(void)
}
}
+static void test_HashData(void)
+{
+ HRESULT res;
+ BYTE input[16] = {0x51, 0x33, 0x4F, 0xA7, 0x45, 0x15, 0xF0, 0x52, 0x90,
+ 0x2B, 0xE7, 0xF5, 0xFD, 0xE1, 0xA6, 0xA7};
+ BYTE output[32];
+ static const BYTE expected[] = {0x54, 0x9C, 0x92, 0x55, 0xCD, 0x82, 0xFF,
+ 0xA1, 0x8E, 0x0F, 0xCF, 0x93, 0x14, 0xAA,
+ 0xE3, 0x2D};
+ static const BYTE expected2[] = {0x54, 0x9C, 0x92, 0x55, 0xCD, 0x82, 0xFF,
+ 0xA1, 0x8E, 0x0F, 0xCF, 0x93, 0x14, 0xAA,
+ 0xE3, 0x2D, 0x47, 0xFC, 0x80, 0xB8, 0xD0,
+ 0x49, 0xE6, 0x13, 0x2A, 0x30, 0x51, 0x8D,
+ 0xF9, 0x4B, 0x07, 0xA6};
+ static const BYTE expected3[] = {0x2B, 0xDC, 0x9A, 0x1B, 0xF0, 0x5A, 0xF9,
+ 0xC6, 0xBE, 0x94, 0x6D, 0xF3, 0x33, 0xC1,
+ 0x36, 0x07};
+ int i;
+
+ /* Test hashing with identically sized input/output buffers. */
+ res = HashData(input, 16, output, 16);
+ ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
+ if(res == S_OK)
+ ok(!memcmp(output, expected, sizeof(expected)),
+ "Output buffer did not match expected contents\n");
+
+ /* Test hashing with larger output buffer. */
+ res = HashData(input, 16, output, 32);
+ ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
+ if(res == S_OK)
+ ok(!memcmp(output, expected2, sizeof(expected2)),
+ "Output buffer did not match expected contents\n");
+
+ /* Test hashing with smaller input buffer. */
+ res = HashData(input, 8, output, 16);
+ ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
+ if(res == S_OK)
+ ok(!memcmp(output, expected3, sizeof(expected3)),
+ "Output buffer did not match expected contents\n");
+
+ /* Test passing NULL pointers for input/output parameters. */
+ res = HashData(NULL, 0, NULL, 0);
+ ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */
+ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
+
+ res = HashData(input, 0, NULL, 0);
+ ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */
+ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
+
+ res = HashData(NULL, 0, output, 0);
+ ok(res == E_INVALIDARG || broken(res == S_OK), /* Windows 2000 */
+ "Expected HashData to return E_INVALIDARG, got 0x%08x\n", res);
+
+ /* Test passing valid pointers with sizes of zero. */
+ for (i = 0; i < sizeof(input)/sizeof(BYTE); i++)
+ input[i] = 0x00;
+
+ for (i = 0; i < sizeof(output)/sizeof(BYTE); i++)
+ output[i] = 0xFF;
+
+ res = HashData(input, 0, output, 0);
+ ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
+
+ /* The buffers should be unchanged. */
+ for (i = 0; i < sizeof(input)/sizeof(BYTE); i++)
+ {
+ ok(input[i] == 0x00, "Expected the input buffer to be unchanged\n");
+ if(input[i] != 0x00) break;
+ }
+
+ for (i = 0; i < sizeof(output)/sizeof(BYTE); i++)
+ {
+ ok(output[i] == 0xFF, "Expected the output buffer to be unchanged\n");
+ if(output[i] != 0xFF) break;
+ }
+
+ /* Input/output parameters are not validated. */
+ res = HashData((BYTE *)0xdeadbeef, 0, (BYTE *)0xdeadbeef, 0);
+ ok(res == S_OK, "Expected HashData to return S_OK, got 0x%08x\n", res);
+
+ if (0)
+ {
+ res = HashData((BYTE *)0xdeadbeef, 1, (BYTE *)0xdeadbeef, 1);
+ trace("HashData returned 0x%08x\n", res);
+ }
+}
+
/* ########################### */
START_TEST(url)
@@ -1103,4 +1190,5 @@ START_TEST(url)
test_UrlIs();
test_UrlUnescape();
test_ParseURL();
+ test_HashData();
}
More information about the wine-cvs
mailing list