test/map_tests.c

changeset 55
180bc6b18fec
parent 53
e533c170bfb8
child 69
fb59270b1de3
--- a/test/map_tests.c	Mon Oct 08 14:04:52 2012 +0200
+++ b/test/map_tests.c	Tue Oct 09 10:21:18 2012 +0200
@@ -4,10 +4,6 @@
 
 #include "map_tests.h"
 
-#ifndef _WIN32
-#include <unistd.h>
-#endif /* not _WIN32 */
-
 UCX_TEST_IMPLEMENT(test_ucx_map_new) {
     UcxMap *map = ucx_map_new(16);
     UCX_TEST_BEGIN
@@ -204,24 +200,24 @@
     ucx_map_cstr_put(map, "simple", "not a key but an extremely long value "
             "to test if the buffer extension works as designed");
 
-    FILE *f = fopen("test_ucx_map_store", "w");
+    UCX_TEST_BEGIN
+    FILE *f = tmpfile();
+    UCX_TEST_ASSERT(f, "test file cannot be opened, test aborted")
     int r;
 
     fwrite(" # comment test\n", 1, 16, f);
     r = ucx_map_store_enc(map, f, test_ucx_map_store_load_encdec, NULL);
     fwrite("!discard this", 1, 13, f);
+    fflush(f);
 
-    fclose(f);
     ucx_map_free(map);
     map = ucx_map_new(1);
-    f = fopen("test_ucx_map_store", "r");
+    fseek(f, 0, SEEK_SET);
     UcxAllocator allocator = UCX_ALLOCATOR_DEFAULT;
     r += ucx_map_load_enc(map, f, allocator,
             test_ucx_map_store_load_encdec, NULL);
     fclose(f);
-    unlink("test_ucx_map_store");
 
-    UCX_TEST_BEGIN
     char *value;
     UCX_TEST_ASSERT(r == 0, "IO errors, test cannot be performed");
 
@@ -250,6 +246,12 @@
             "to test if the buffer extension works as designed") == 0,
             "value error for key: simple");
 
+    void *d;
+    UcxMapIterator iter = ucx_map_iterator(map);
+    UCX_MAP_FOREACH(d, iter) {
+        free(d);
+    }
+    ucx_map_free(map);
     UCX_TEST_END
 }
 
@@ -261,22 +263,22 @@
     ucx_map_cstr_put(map, "testkey", "testvalue");
     ucx_map_cstr_put(map, "simple", "a simple value");
 
-    FILE *f = fopen("test_ucx_map_store", "w");
+    UCX_TEST_BEGIN
+    FILE *f = tmpfile();
+    UCX_TEST_ASSERT(f, "test file cannot be opened, test aborted")
     int r;
     r = ucx_map_store_enc(map, f, NULL, NULL);
-    fclose(f);
     ucx_map_free(map);
+    fflush(f);
 
     UcxMempool *pool = ucx_mempool_new(4);
     map = ucx_map_new(4);
-    f = fopen("test_ucx_map_store", "r");
+    fseek(f, 0, SEEK_SET);
     UcxAllocator allocator = UCX_ALLOCATOR_MEMPOOL(pool);
     r += ucx_map_load_enc(map, f, allocator,
             test_ucx_map_store_load_encdec, NULL);
     fclose(f);
-    unlink("test_ucx_map_store");
 
-    UCX_TEST_BEGIN
     UCX_TEST_ASSERT(r == 0, "IO errors, test cannot be performed");
     UcxMapIterator iter = ucx_map_iterator(map);
     char *value; size_t n;
@@ -285,9 +287,10 @@
         UCX_TEST_ASSERT(strncmp(pool->data[iter.index], value, n),
                 "values of map does not match pooled values");
     }
-    UCX_TEST_END
 
     ucx_mempool_free(pool);
+    ucx_map_free(map);
+    UCX_TEST_END
 }
 
 UCX_TEST_IMPLEMENT(test_ucx_map_clone) {

mercurial