- map_t *map = map_alloc(map_type_);
-
- ASSERT_EQUAL( 0, map_count(map) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_add(map,"a",2,10) );
- ASSERT_EQUAL( 1, map_count(map) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_add(map,"b",2,20) );
- ASSERT_EQUAL( 2, map_count(map) );
- ASSERT_EQUAL( 20, map_get(map,"b",2) );
- ASSERT_EQUAL( 10, map_set(map,"a",2,11) );
- ASSERT_EQUAL( 20, map_set(map,"b",2,21) );
- ASSERT_EQUAL( 2, map_count(map) );
- ASSERT_EQUAL( 21, map_add(map,"b",2,22) );
- ASSERT_EQUAL( 11, map_remove(map,"a",2) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_get(map,"a",2) );
- ASSERT_EQUAL( 1, map_count(map) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"a",2) );
- ASSERT_EQUAL( 21, map_remove(map,"b",2) );
- ASSERT_EQUAL( 0, map_count(map) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"b",2) );
- ASSERT_EQUAL( DOES_NOT_EXIST, map_remove(map,"c",2) );
- ASSERT_EQUAL( 0, map_count(map) );
+#ifdef TEST_STRING_KEYS
+ map_t *map = map_alloc(map_type_, &DATATYPE_NSTRING);
+ nstring_t *s1 = ns_alloc(3); strcpy(s1->data, "k1");
+ nstring_t *s2 = ns_alloc(3); strcpy(s2->data, "k2");
+ nstring_t *s3 = ns_alloc(3); strcpy(s3->data, "k3");
+ nstring_t *s4 = ns_alloc(3); strcpy(s4->data, "k4");
+ map_key_t k1 = (map_key_t)s1;
+ map_key_t k2 = (map_key_t)s2;
+ map_key_t k3 = (map_key_t)s3;
+ map_key_t k4 = (map_key_t)s4;
+#else
+ map_t *map = map_alloc(map_type_, NULL);
+ map_key_t k1 = (map_key_t)1;
+ map_key_t k2 = (map_key_t)2;
+ map_key_t k3 = (map_key_t)3;
+ map_key_t k4 = (map_key_t)4;
+#endif
+
+ ASSERT_EQUAL( 0, map_count (map) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_add (map, k1,10) );
+ ASSERT_EQUAL( 1, map_count (map) );
+ ASSERT_EQUAL( 1, iterator_size(map) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_add (map, k2,20) );
+ ASSERT_EQUAL( 2, map_count (map) );
+ ASSERT_EQUAL( 2, iterator_size(map) );
+ ASSERT_EQUAL( 20, map_get (map, k2) );
+ ASSERT_EQUAL( 10, map_set (map, k1,11) );
+ ASSERT_EQUAL( 20, map_set (map, k2,21) );
+ ASSERT_EQUAL( 2, map_count (map) );
+ ASSERT_EQUAL( 2, iterator_size(map) );
+ ASSERT_EQUAL( 21, map_add (map, k2,22) );
+ ASSERT_EQUAL( 11, map_remove (map, k1) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_get (map, k1) );
+ ASSERT_EQUAL( 1, map_count (map) );
+ ASSERT_EQUAL( 1, iterator_size(map) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_remove (map, k1) );
+ ASSERT_EQUAL( 21, map_remove (map, k2) );
+ ASSERT_EQUAL( 0, map_count (map) );
+ ASSERT_EQUAL( 0, iterator_size(map) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_remove (map, k2) );
+ ASSERT_EQUAL( DOES_NOT_EXIST, map_remove (map, k3) );
+ ASSERT_EQUAL( 0, map_count (map) );
+ ASSERT_EQUAL( 0, iterator_size(map) );