13 struct nettle_buffer buffer;
16 const uint8_t e[] = "(3:foo(3:bar17:xxxxxxxxxxxxxxxxx))";
18 nettle_buffer_init(&buffer);
19 ASSERT(sexp_format(&buffer, "(%0s(%0s%0s))",
20 "foo", "bar", "xxxxxxxxxxxxxxxxx")
23 ASSERT(sexp_format(NULL, "(%0s(%0s%0s))",
24 "foo", "bar", "xxxxxxxxxxxxxxxxx")
27 ASSERT(buffer.size == strlen(e));
28 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
29 nettle_buffer_clear(&buffer);
32 const uint8_t e[] = "{KDM6Zm9vKDM6YmFyMTc6eHh4eHh4eHh4eHh4eHh4eHgpKQ==}";
34 nettle_buffer_init(&buffer);
35 ASSERT(sexp_transport_format(&buffer, "(%0s(%0s%0s))",
36 "foo", "bar", "xxxxxxxxxxxxxxxxx")
39 ASSERT(sexp_transport_format(NULL, "(%0s(%0s%0s))",
40 "foo", "bar", "xxxxxxxxxxxxxxxxx")
43 ASSERT(buffer.size == strlen(e));
44 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
45 nettle_buffer_clear(&buffer);
48 const uint8_t e[] = "1:\0""1:a2:bc3:def4:ghij5:\x00\xDE\xAD\xBE\xEF";
50 nettle_buffer_init(&buffer);
51 ASSERT(sexp_format(&buffer, "%i%i%i%i%i%i",
52 0, 0x61, 0x6263, 0x646566, 0x6768696a, 0xDEADBEEF)
55 ASSERT(buffer.size == LLENGTH(e));
56 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
57 nettle_buffer_clear(&buffer);
61 const uint8_t e[] = "(3:foo(4:bar))";
63 nettle_buffer_init(&buffer);
64 ASSERT(sexp_format(&buffer, "(%0s%l)",
68 ASSERT(buffer.size == strlen(e));
69 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
70 nettle_buffer_clear(&buffer);
74 const uint8_t e[] = "([1:t]3:foo3:bar[6:gazonk]3:baz1:q)";
76 nettle_buffer_init(&buffer);
77 ASSERT(sexp_format(&buffer, "(%0t%0s%0s%0t%0s%0t%0s)",
78 "t", "foo", "bar", "gazonk", "baz", NULL, "q")
81 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
82 nettle_buffer_clear(&buffer);
87 const uint8_t e[] = "(3:foo(3:bar17:xxxxxxxxxxxxxxxxx))";
89 nettle_buffer_init(&buffer);
90 ASSERT(sexp_format(&buffer, "(%0s(bar%0s))",
91 "foo", "xxxxxxxxxxxxxxxxx")
94 ASSERT(sexp_format(NULL, "(%0s(bar %0s))",
95 "foo", "xxxxxxxxxxxxxxxxx")
98 ASSERT(buffer.size == strlen(e));
99 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
100 nettle_buffer_clear(&buffer);
103 const uint8_t e[] = "(3:foo(3:bar17:xxxxxxxxxxxxxxxxx))";
105 nettle_buffer_init(&buffer);
106 ASSERT(sexp_format(&buffer, "(%0s(bar xxxxxxxxxxxxxxxxx))",
110 ASSERT(sexp_format(NULL, "(%0s(bar xxxxxxxxxxxxxxxxx))",
114 ASSERT(buffer.size == strlen(e));
115 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
116 nettle_buffer_clear(&buffer);
119 /* Literal parenthesis */
121 const uint8_t e[] = ")3:foo(3:bar";
123 nettle_buffer_init(&buffer);
124 ASSERT(sexp_format(&buffer, "%)foo%(%s", 3, "bar")
127 ASSERT(sexp_format(NULL, "%)foo%(%s", 3, "bar")
130 ASSERT(buffer.size == strlen(e));
131 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
132 nettle_buffer_clear(&buffer);
142 "(3:foo(3:bar1:\xff""11:abcdefghijk13:\0\x81""abcdefghijk))";
144 mpz_init_set_si(x, -1);
145 nettle_mpz_init_set_str_256_u(y, 11, "abcdefghijk");
146 nettle_mpz_init_set_str_256_u(z, 12, "\x81""abcdefghijk");
147 nettle_buffer_init(&buffer);
149 ASSERT(sexp_format(&buffer, "(%0s(%0s%b%b%b))",
150 "foo", "bar", x, y, z)
153 ASSERT(sexp_format(NULL, "(%0s(%0s%b%b%b))",
154 "foo", "bar", x, y, z)
157 ASSERT(buffer.size == LLENGTH(e));
158 ASSERT(MEMEQ(buffer.size, buffer.contents, e));
160 nettle_buffer_clear(&buffer);
165 #endif /* HAVE_LIBGMP */