diff options
-rw-r--r-- | runtime/tests/maps/ii.c | 24 | ||||
-rw-r--r-- | runtime/tests/maps/iiss.c | 12 | ||||
-rw-r--r-- | runtime/tests/maps/is.c | 26 | ||||
-rw-r--r-- | runtime/tests/maps/ist.c | 4 | ||||
-rw-r--r-- | runtime/tests/maps/map.test | 90 | ||||
-rw-r--r-- | runtime/tests/maps/map_format.c | 87 | ||||
-rw-r--r-- | runtime/tests/maps/si.c | 28 | ||||
-rw-r--r-- | runtime/tests/maps/test_list_int64.c | 8 | ||||
-rw-r--r-- | runtime/tests/maps/test_list_string.c | 8 |
9 files changed, 232 insertions, 55 deletions
diff --git a/runtime/tests/maps/ii.c b/runtime/tests/maps/ii.c index 64aa05ac..afee14d4 100644 --- a/runtime/tests/maps/ii.c +++ b/runtime/tests/maps/ii.c @@ -18,13 +18,13 @@ int main () _stp_map_key_int64 (map, 1); _stp_map_set_int64 (map, 2); printf ("map[%lld]=%lld\n", key1int(map->key), _stp_map_get_int64(map)); - _stp_map_print(map,"map"); + _stp_map_print(map,"map[%1d] = %d"); /* map[3] = 4 */ /* try it with macros this time */ _stp_map_key (map, 3); _stp_map_set (map, 4); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* now try to confuse things */ /* These won't do anything useful, but shouldn't crash */ @@ -35,7 +35,7 @@ int main () _stp_map_key_del (map); _stp_map_set_int64 (map,1000000); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* create and delete a key */ _stp_map_key_int64 (map, 1024); @@ -43,14 +43,14 @@ int main () _stp_map_key_int64 (map, 1024); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* create and delete a key again*/ _stp_map_key_int64 (map, 1024); _stp_map_set_int64 (map, 2048); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* check that unset values are 0 */ _stp_map_key_int64 (map, 5); @@ -58,7 +58,7 @@ int main () /* map[5] = 6 */ _stp_map_set (map, 6); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* add 4 new entries, pushing the others out */ int i; @@ -68,7 +68,7 @@ int main () _stp_map_set_int64 (map, 100 + i); } - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* 5, 382, 526, and 903 all hash to the same value (23) */ /* use them to test the hash chain */ @@ -77,24 +77,24 @@ int main () _stp_map_key_int64 (map, 526); _stp_map_set_int64 (map, 1526); _stp_map_key_int64 (map, 903); _stp_map_set_int64 (map, 1903); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); /* now delete all 4 nodes, one by one */ _stp_map_key_int64 (map, 382); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); _stp_map_key_int64 (map, 5); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); _stp_map_key_int64 (map, 903); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); _stp_map_key_int64 (map, 526); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %d"); _stp_map_del (map); return 0; diff --git a/runtime/tests/maps/iiss.c b/runtime/tests/maps/iiss.c index e1ec2407..dc034c94 100644 --- a/runtime/tests/maps/iiss.c +++ b/runtime/tests/maps/iiss.c @@ -25,26 +25,26 @@ int main () _stp_map_key_int64_int64_str (map, 7,8,"Oregon"); _stp_map_set_str (map, "Salem" ); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_key_int64_int64_str (map, -9,-10,"Nevada"); _stp_map_set_str (map, "Carson City" ); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_key_int64_int64_str (map, 5,6,"Washington"); _stp_map_set (map, "Olymp" ); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_add_str (map, "ia" ); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_key_int64_int64_str (map, -9,-10,"Nevada"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_key_int64_int64_str (map, 0,0,""); _stp_map_set_str (map, "XX" ); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1d, %2d, %3s] = %s"); _stp_map_del (map); return 0; diff --git a/runtime/tests/maps/is.c b/runtime/tests/maps/is.c index bfb21753..6b2cbb0e 100644 --- a/runtime/tests/maps/is.c +++ b/runtime/tests/maps/is.c @@ -18,13 +18,13 @@ int main () _stp_map_key_int64 (map, 1); _stp_map_set_str (map, "one"); printf ("map[%lld]=%s\n", key1int(map->key), _stp_map_get_str(map)); - _stp_map_print(map,"map"); + _stp_map_print(map,"map[%1d] = %s"); /* map[3] = "three" */ /* try it with macros this time */ _stp_map_key (map, 3); _stp_map_set (map, "three"); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* now try to confuse things */ @@ -36,7 +36,7 @@ int main () _stp_map_key_del (map); _stp_map_set_str (map,"1000000"); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* create and delete a key */ _stp_map_key_int64 (map, 1024); @@ -44,14 +44,14 @@ int main () _stp_map_key_int64 (map, 1024); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* create and delete a key again*/ _stp_map_key_int64 (map, 1024); _stp_map_set_str (map, "2048"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* check that unset values are 0 */ _stp_map_key_int64 (map, 5); @@ -59,11 +59,11 @@ int main () /* map[5] = "five" */ _stp_map_set (map, "five"); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* test empty string */ _stp_map_set (map, ""); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* add 4 new entries, pushing the others out */ @@ -76,7 +76,7 @@ int main () _stp_map_set_str (map, buf); } - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* 5, 382, 526, and 903 all hash to the same value (23) */ /* use them to test the hash chain */ @@ -85,24 +85,24 @@ int main () _stp_map_key_int64 (map, 526); _stp_map_set_str (map, "1526"); _stp_map_key_int64 (map, 903); _stp_map_set_str (map, "1903"); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); /* now delete all 4 nodes, one by one */ _stp_map_key_int64 (map, 382); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); _stp_map_key_int64 (map, 5); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); _stp_map_key_int64 (map, 903); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); _stp_map_key_int64 (map, 526); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print(map,"map[%1d] = %s"); _stp_map_del (map); return 0; diff --git a/runtime/tests/maps/ist.c b/runtime/tests/maps/ist.c index 24eb6f42..be3ca87d 100644 --- a/runtime/tests/maps/ist.c +++ b/runtime/tests/maps/ist.c @@ -41,8 +41,8 @@ int main () for (j = 0; j < 1024 ; j++ ) _stp_map_add_int64_stat (map2, i); - _stp_map_print (map, "map"); - _stp_map_print (map2, "map2"); + _stp_map_print (map, "map[%1d] = count:%C sum:%S avg:%A min:%m max:%M\n%H"); + _stp_map_print (map2, "map2[%1d] = count:%C sum:%S avg:%A min:%m max:%M\n%H"); _stp_map_del (map); _stp_map_del (map2); diff --git a/runtime/tests/maps/map.test b/runtime/tests/maps/map.test index 14668a17..3684831b 100644 --- a/runtime/tests/maps/map.test +++ b/runtime/tests/maps/map.test @@ -338,6 +338,96 @@ newlist[3] = Item53 newlist[4] = Item54 } +test map_format {Torture test of map formatting} -setup { + exec gcc $CFLAGS -I $KPATH -I $PATH -I $MPATH -o test map_format.c +} -body { + exec ./test +} -result {Columbus -> mapiis 1 2 Ohio +Sacramento -> mapiis 3 4 California +Olympia -> mapiis 5 6 Washington +Salem -> mapiis 7 8 Oregon + +Columbus % Ohio +Sacramento % California +Olympia % Washington +Salem % Oregon + +Columbus -> mapiis +Sacramento -> mapiis +Olympia -> mapiis +Salem -> mapiis + +The capitol of Riga is Latvia and the nerd population is 212063400820736 +The capitol of Sofia is Bulgaria and the nerd population is -2400999087387945352 +The capitol of Valletta is Malta and the nerd population is 1 +The capitol of Nicosia is Cyprus and the nerd population is -1 + +The capitol of Riga is Latvia and the nerd population is c0dedbad0000 +The capitol of Sofia is Bulgaria and the nerd population is deadf00d12345678 +The capitol of Valletta is Malta and the nerd population is 1 +The capitol of Nicosia is Cyprus and the nerd population is ffffffffffffffff + +The capitol of Riga is Latvia and the nerd population is C0DEDBAD0000 +The capitol of Sofia is Bulgaria and the nerd population is DEADF00D12345678 +The capitol of Valletta is Malta and the nerd population is 1 +The capitol of Nicosia is Cyprus and the nerd population is FFFFFFFFFFFFFFFF + +The capitol of Riga is Latvia and the nerd population is 0000c0dedbad0000 +The capitol of Sofia is Bulgaria and the nerd population is deadf00d12345678 +The capitol of Valletta is Malta and the nerd population is 0000000000000001 +The capitol of Nicosia is Cyprus and the nerd population is ffffffffffffffff + +Bogons per packet for Riga +count:49600 sum:3288450 avg:66 min:0 max:99 +value |-------------------------------------------------- count + 0 |@@ 460 + 10 |@@@@@@@ 1460 + 20 |@@@@@@@@@@@@ 2460 + 30 |@@@@@@@@@@@@@@@@@@ 3460 + 40 |@@@@@@@@@@@@@@@@@@@@@@@ 4460 + 50 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 5460 + 60 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 6460 + 70 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 7460 + 80 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 8460 + 90 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 9460 + +Bogons per packet for Sofia +count:100 sum:2025 avg:20 min:0 max:81 +value |-------------------------------------------------- count + 0 |@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 42 + 10 |@@@@@@@@@@@@@@@@@ 17 + 20 |@@@@@@@@@@@@@ 13 + 30 |@@@@@@@@@ 9 + 40 |@@@@@@@@@ 9 + 50 |@@@@ 4 + 60 |@@@ 3 + 70 |@@ 2 + 80 |@ 1 + 90 | 0 + +Bogons per packet for Valletta +count:45 sum:2850 avg:63 min:10 max:90 +value |-------------------------------------------------- count + 0 | 0 + 10 |@ 1 + 20 |@@ 2 + 30 |@@@ 3 + 40 |@@@@ 4 + 50 |@@@@@ 5 + 60 |@@@@@@ 6 + 70 |@@@@@@@ 7 + 80 |@@@@@@@@ 8 + 90 |@@@@@@@@@ 9 + + +49600 was the count for Riga, Latvia +100 was the count for Sofia, Bulgaria +45 was the count for Valletta, Malta + +mapsst[ Riga, Latvia] = 322D82 +mapsst[ Sofia, Bulgaria] = 7E9 +mapsst[ Valletta, Malta] = B22} + exec rm test cleanupTests diff --git a/runtime/tests/maps/map_format.c b/runtime/tests/maps/map_format.c new file mode 100644 index 00000000..d6a848ab --- /dev/null +++ b/runtime/tests/maps/map_format.c @@ -0,0 +1,87 @@ +#include "runtime.h" + +/* torture test of map formatting */ + +#define KEY1_TYPE INT64 +#define KEY2_TYPE INT64 +#define KEY3_TYPE STRING +#include "map-keys.c" + +#define KEY1_TYPE STRING +#define KEY2_TYPE STRING +#include "map-keys.c" + +#define VALUE_TYPE STRING +#include "map-values.c" + +#define VALUE_TYPE INT64 +#include "map-values.c" + +#define VALUE_TYPE STAT +#include "map-values.c" + +#include "map.c" + +int main () +{ + MAP mapiis = _stp_map_new_int64_int64_str(4, STRING); + _stp_map_key_int64_int64_str (mapiis, 1,2,"Ohio"); + _stp_map_set_str (mapiis, "Columbus" ); + _stp_map_key_int64_int64_str (mapiis, 3,4,"California"); + _stp_map_add_str (mapiis, "Sacramento" ); + _stp_map_key_int64_int64_str (mapiis, 5,6,"Washington"); + _stp_map_set_str (mapiis, "Olympia" ); + _stp_map_key_int64_int64_str (mapiis, 7,8,"Oregon"); + _stp_map_set_str (mapiis, "Salem" ); + _stp_map_print (mapiis, "%s -> mapiis %1d %2d %3s"); + + /* test printing of '%' */ + _stp_map_print (mapiis, "%s %% %3s"); + + /* very bad string. don't crash */ + _stp_map_print (mapiis, "%s -> mapiis %1s %2s %3d %4d"); + + MAP mapss = _stp_map_new_str_str(4, INT64); + _stp_map_key_str_str (mapss, "Riga", "Latvia"); + _stp_map_set_int64 (mapss, 0x0000c0dedbad0000); + _stp_map_key_str_str (mapss, "Sofia", "Bulgaria"); + _stp_map_set_int64 (mapss, 0xdeadf00d12345678); + _stp_map_key_str_str (mapss, "Valletta", "Malta"); + _stp_map_set_int64 (mapss, 1); + _stp_map_key_str_str (mapss, "Nicosia", "Cyprus"); + _stp_map_set_int64 (mapss, -1); + _stp_map_print (mapss, "The capitol of %1s is %2s and the nerd population is %d"); + _stp_map_print (mapss, "The capitol of %1s is %2s and the nerd population is %x"); + _stp_map_print (mapss, "The capitol of %1s is %2s and the nerd population is %X"); + _stp_map_print (mapss, "The capitol of %1s is %2s and the nerd population is %p"); + + MAP mapsst = _stp_map_new_str_str(4, HSTAT_LINEAR, 0, 100, 10 ); + int i,j; + + _stp_map_key_str_str (mapsst, "Riga", "Latvia"); + for (i = 0; i < 100; i++) + for (j = 0; j <= i*10 ; j++ ) + _stp_map_add_int64_stat (mapsst, i); + + _stp_map_key_str_str (mapsst, "Sofia", "Bulgaria"); + for (i = 0; i < 10; i++) + for (j = 0; j < 10 ; j++ ) + _stp_map_add_int64_stat (mapsst, j * i ); + + _stp_map_key_str_str (mapsst, "Valletta", "Malta"); + for (i = 0; i < 100; i += 10) + for (j = 0; j < i/10 ; j++ ) + _stp_map_add_int64_stat (mapsst, i); + + _stp_map_print (mapsst, "Bogons per packet for %1s\ncount:%C sum:%S avg:%A min:%m max:%M\n%H"); + + _stp_map_print (mapsst, "%C was the count for %1s, %2s"); + + /* here's how to print a map without using _stp_map_print(). */ + struct map_node *ptr; + foreach (mapsst, ptr) + _stp_printf ("mapsst[%09s,%09s] = %llX\n", key1str(ptr), key2str(ptr), _stp_get_stat(ptr)->sum); + _stp_print_flush(); + + return 0; +} diff --git a/runtime/tests/maps/si.c b/runtime/tests/maps/si.c index 0e88bc4e..90544ed2 100644 --- a/runtime/tests/maps/si.c +++ b/runtime/tests/maps/si.c @@ -18,13 +18,13 @@ int main () _stp_map_key_str (map, "Ohio"); _stp_map_set_int64 (map, 1); printf ("map[%s]=%lld\n", key1str(map->key), _stp_map_get_int64(map)); - _stp_map_print(map,"map"); + _stp_map_print(map,"map[%1s] = %d"); /* map[Washington] = 2 */ /* try it with macros this time */ _stp_map_key (map, "Washington"); _stp_map_set (map, 2); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* now try to confuse things */ /* These won't do anything useful, but shouldn't crash */ @@ -35,7 +35,7 @@ int main () _stp_map_key_del (map); _stp_map_set_int64 (map,1000000); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* create and delete a key */ _stp_map_key_str (map, "1024"); @@ -43,14 +43,14 @@ int main () _stp_map_key_str (map, "1024"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* create and delete a key again*/ _stp_map_key_str (map, "1024"); _stp_map_set_int64 (map, 2048); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* check that unset values are 0 */ _stp_map_key_str (map, "California"); @@ -58,15 +58,15 @@ int main () /* map[California] = 3 */ _stp_map_set (map, 3); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* test an empty string as key */ _stp_map_key (map, ""); _stp_map_set_int64 (map, 7777); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); _stp_map_key (map, ""); _stp_map_set_int64 (map, 8888); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* add 4 new entries, pushing the others out */ int i; @@ -78,7 +78,7 @@ int main () _stp_map_set_int64 (map, 100 + i); } - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* 5, 382, 526, and 903 all hash to the same value (23) */ @@ -88,24 +88,24 @@ int main () _stp_map_key (map, "526"); _stp_map_set_int64 (map, 1526); _stp_map_key (map, "903"); _stp_map_set_int64 (map, 1903); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); /* now delete all 4 nodes, one by one */ _stp_map_key (map, "382"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); _stp_map_key (map, "5"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); _stp_map_key (map, "903"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); _stp_map_key (map, "526"); _stp_map_key_del (map); - _stp_map_print (map, "map"); + _stp_map_print (map, "map[%1s] = %d"); _stp_map_del (map); return 0; diff --git a/runtime/tests/maps/test_list_int64.c b/runtime/tests/maps/test_list_int64.c index 4355cb45..810a18b6 100644 --- a/runtime/tests/maps/test_list_int64.c +++ b/runtime/tests/maps/test_list_int64.c @@ -20,23 +20,23 @@ int main () _stp_list_add_int64 (map, (int64_t)i); - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %d"); printf ("size is %d\n\n", _stp_list_size(map)); /* we set a limit of 10 elements so these */ /* won't be added to the list */ for (i = 50; i < 55; i++) _stp_list_add_int64 (map, i); - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %d"); _stp_list_clear (map); - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %d"); for (i = 50; i < 55; i++) _stp_list_add_int64 (map, i); - _stp_map_print(map, "newlist"); + _stp_map_print(map, "newlist[%1d] = %d"); _stp_map_del (map); diff --git a/runtime/tests/maps/test_list_string.c b/runtime/tests/maps/test_list_string.c index 5edae41f..455e8537 100644 --- a/runtime/tests/maps/test_list_string.c +++ b/runtime/tests/maps/test_list_string.c @@ -24,7 +24,7 @@ int main () _stp_list_add_str (map, buf); } - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %s"); printf ("size is %d\n\n", _stp_list_size(map)); /* we set a limit of 10 elements so these */ @@ -34,18 +34,18 @@ int main () sprintf (buf, "Item%d", i); _stp_list_add_str (map, buf); } - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %s"); _stp_list_clear (map); - _stp_map_print(map, "list"); + _stp_map_print(map, "list[%1d] = %s"); for (i = 50; i < 55; i++) { sprintf (buf, "Item%d", i); _stp_list_add_str (map, buf); } - _stp_map_print(map, "newlist"); + _stp_map_print(map, "newlist[%1d] = %s"); _stp_map_del (map); |