More tests for {Local,Global}{,Re}Alloc() calls.
Cleanup of the Heap*() tests.
diff --git a/dlls/kernel/tests/heap.c b/dlls/kernel/tests/heap.c
index 7c2c58e..53a436c 100644
--- a/dlls/kernel/tests/heap.c
+++ b/dlls/kernel/tests/heap.c
@@ -21,24 +21,59 @@
#include <stdarg.h>
#include <stdlib.h>
-#include "ntstatus.h"
#include "windef.h"
#include "winbase.h"
#include "wine/test.h"
-#include "winnt.h"
-#include "winnls.h"
-#include "winreg.h"
-#include "winternl.h"
-
-static void test_realloc( void )
-{
- void *mem = NULL;
-
- mem = HeapReAlloc(GetProcessHeap(), 0, mem, 10);
- ok(mem == NULL, "memory allocated");
-}
START_TEST(heap)
{
- test_realloc();
+ void *mem;
+ HGLOBAL gbl;
+ SIZE_T size;
+
+ /* Heap*() functions */
+ mem = HeapAlloc(GetProcessHeap(), 0, 0);
+ ok(mem != NULL, "memory not allocated for size 0");
+
+ mem = HeapReAlloc(GetProcessHeap(), 0, NULL, 10);
+ ok(mem == NULL, "memory allocated by HeapReAlloc");
+
+ /* Global*() functions */
+ gbl = GlobalAlloc(GMEM_MOVEABLE, 0);
+ ok(gbl != NULL, "global memory not allocated for size 0");
+
+ gbl = GlobalReAlloc(gbl, 10, GMEM_MOVEABLE);
+ ok(gbl != NULL, "Can't realloc global memory");
+ size = GlobalSize(gbl);
+ ok(size >= 10 && size <= 16, "Memory not resized to size 10, instead size=%ld", size);
+ gbl = GlobalReAlloc(gbl, 0, GMEM_MOVEABLE);
+ ok(gbl == NULL, "GlobalReAlloc should fail on size 0, instead size=%ld", size);
+ size = GlobalSize(gbl);
+ ok(size == 0, "Memory not resized to size 0, instead size=%ld", size);
+ ok(GlobalFree(gbl) == NULL, "Memory not freed");
+ size = GlobalSize(gbl);
+ ok(size == 0, "Memory should have been freed, size=%ld", size);
+
+ gbl = GlobalReAlloc(0, 10, GMEM_MOVEABLE);
+ ok(gbl == NULL, "global realloc allocated memory");
+
+ /* Local*() functions */
+ gbl = LocalAlloc(GMEM_MOVEABLE, 0);
+ ok(gbl != NULL, "global memory not allocated for size 0");
+
+ gbl = LocalReAlloc(gbl, 10, GMEM_MOVEABLE);
+ ok(gbl != NULL, "Can't realloc global memory");
+ size = LocalSize(gbl);
+ ok(size >= 10 && size <= 16, "Memory not resized to size 10, instead size=%ld", size);
+ gbl = LocalReAlloc(gbl, 0, GMEM_MOVEABLE);
+ ok(gbl == NULL, "LocalReAlloc should fail on size 0, instead size=%ld", size);
+ size = LocalSize(gbl);
+ ok(size == 0, "Memory not resized to size 0, instead size=%ld", size);
+ ok(LocalFree(gbl) == NULL, "Memory not freed");
+ size = LocalSize(gbl);
+ ok(size == 0, "Memory should have been freed, size=%ld", size);
+
+ gbl = LocalReAlloc(0, 10, GMEM_MOVEABLE);
+ ok(gbl == NULL, "global realloc allocated memory");
+
}