diff --git a/testsuite/sexp-format-test.c b/testsuite/sexp-format-test.c
index 0f0ffd2e9b1336dd2c66a043466c8d3515b35d25..65039859570e85b7aa2305d630c94992018ef9d5 100644
--- a/testsuite/sexp-format-test.c
+++ b/testsuite/sexp-format-test.c
@@ -8,30 +8,81 @@ int
 test_main(void)
 {
   struct nettle_buffer buffer;
-  const uint8_t e1[] = "(3:foo(3:bar17:xxxxxxxxxxxxxxxxx))";
-  
-  nettle_buffer_init(&buffer);
-  ASSERT(sexp_format(&buffer, "(%s(%s%s))",
-		     "foo", "bar", "xxxxxxxxxxxxxxxxx"));
 
-  ASSERT(buffer.size == strlen(e1));
-  ASSERT(MEMEQ(buffer.size, buffer.contents, e1));
+  {
+    const uint8_t e[] = "(3:foo(3:bar17:xxxxxxxxxxxxxxxxx))";
 
-  nettle_buffer_clear(&buffer);
-  
+    nettle_buffer_init(&buffer);
+    ASSERT(sexp_format(&buffer, "(%z(%z%z))",
+		       "foo", "bar", "xxxxxxxxxxxxxxxxx")
+	   == strlen(e));
+    
+    ASSERT(sexp_format(NULL, "(%z(%z%z))",
+		       "foo", "bar", "xxxxxxxxxxxxxxxxx")
+	   == strlen(e));
+    
+    ASSERT(buffer.size == strlen(e));
+    ASSERT(MEMEQ(buffer.size, buffer.contents, e));
+  }
+  {
+    const uint8_t e[] = "{KDM6Zm9vKDM6YmFyMTc6eHh4eHh4eHh4eHh4eHh4eHgpKQ==}";
+
+    nettle_buffer_init(&buffer);
+    ASSERT(sexp_transport_format(&buffer, "(%z(%z%z))",
+		       "foo", "bar", "xxxxxxxxxxxxxxxxx")
+	   == strlen(e));
+    
+    ASSERT(sexp_transport_format(NULL, "(%z(%z%z))",
+				 "foo", "bar", "xxxxxxxxxxxxxxxxx")
+	   == strlen(e));
+    
+    ASSERT(buffer.size == strlen(e));
+    ASSERT(MEMEQ(buffer.size, buffer.contents, e));
+  }
+  {
+    const uint8_t e[] = "1:a2:bc3:def4:ghij";
+
+    nettle_buffer_init(&buffer);  
+    ASSERT(sexp_format(&buffer, "%i%i%i%i",
+		       0x61, 0x6263, 0x646566, 0x6768696a)
+	   == strlen(e));
+    
+    ASSERT(buffer.size == strlen(e));
+    ASSERT(MEMEQ(buffer.size, buffer.contents, e));
+  }
+
+  {
+    const uint8_t e[] = "(3:foo(4:bar))";
+    
+    nettle_buffer_init(&buffer);  
+    ASSERT(sexp_format(&buffer, "(%z%l)",
+		       "foo", 7, "(4:bar)")
+	   == strlen(e));
+    
+    ASSERT(buffer.size == strlen(e));
+    ASSERT(MEMEQ(buffer.size, buffer.contents, e));
+  }
+    
 #if HAVE_LIBGMP
   {
     mpz_t x;
-    const uint8_t e2[] = "(3:foo(3:bar11:abcdefghijk))";
+    const uint8_t e[] = "(3:foo(3:bar11:abcdefghijk))";
+
+    nettle_buffer_clear(&buffer);
     
     nettle_mpz_init_set_str_256(x, 11, "abcdefghijk");
     nettle_buffer_init(&buffer);
 
-    ASSERT(sexp_format(&buffer, "(%s(%s%b))",
-		     "foo", "bar", x));
+    ASSERT(sexp_format(&buffer, "(%z(%z%b))",
+		     "foo", "bar", x)
+	   == strlen(e));
 
-    ASSERT(buffer.size == strlen(e2));
-    ASSERT(MEMEQ(buffer.size, buffer.contents, e2));
+    ASSERT(sexp_format(NULL, "(%z(%z%b))",
+		     "foo", "bar", x)
+	   == strlen(e));
+    
+    ASSERT(buffer.size == strlen(e));
+    ASSERT(MEMEQ(buffer.size, buffer.contents, e));
 
     nettle_buffer_clear(&buffer);
     mpz_clear(x);