chiark / gitweb /
more thorough kvp.c testing
authorRichard Kettlewell <rjk@greenend.org.uk>
Fri, 30 Nov 2007 18:58:35 +0000 (18:58 +0000)
committerRichard Kettlewell <rjk@greenend.org.uk>
Fri, 30 Nov 2007 18:58:35 +0000 (18:58 +0000)
lib/test.c

index 781a1fc5fe7fe34859b7782447d8eff0048746ba..635c2457fecb5c3ae5891ab0420e8688085311b9 100644 (file)
@@ -818,8 +818,10 @@ static void test_wstat(void) {
 
 static void test_kvp(void) {
   struct kvp *k;
+  size_t n;
   
   fprintf(stderr, "test_kvp\n");
+  /* decoding */
 #define KVP_URLDECODE(S) kvp_urldecode((S), strlen(S))
   insist(KVP_URLDECODE("=%zz") == 0);
   insist(KVP_URLDECODE("=%0") == 0);
@@ -838,7 +840,19 @@ static void test_kvp(void) {
   check_string(kvp_get(k, "bar"), "spong");
   insist(kvp_get(k, "ONE") == 0);
   insist(k->next->next == 0);
-  /* TODO test encoding too */
+  /* encoding */
+  insist(kvp_set(&k, "bar", "spong") == 0);
+  insist(kvp_set(&k, "bar", "foo") == 1);
+  insist(kvp_set(&k, "zog", "%") == 1);
+  insist(kvp_set(&k, "wibble", 0) == 1);
+  insist(kvp_set(&k, "wibble", 0) == 0);
+  check_string(kvp_urlencode(k, 0),
+               "bar=foo&zog=%25");
+  check_string(kvp_urlencode(k, &n),
+               "bar=foo&zog=%25");
+  insist(n == strlen("bar=foo&zog=%25"));
+  check_string(urlencodestring("abc% +\n"),
+               "abc%25%20%2b%0a");
 }
 
 int main(void) {