Mercurial > dovecot > core-2.2
annotate src/lib/test-ostream-escaped.c @ 22955:812e5c961328
fts: Indexing virtual mailbox didn't always index the last mails
author | Timo Sirainen <timo.sirainen@dovecot.fi> |
---|---|
date | Thu, 03 May 2018 18:33:00 +0300 |
parents | cb108f786fb4 |
children |
rev | line source |
---|---|
22713
cb108f786fb4
Updated copyright notices to include the year 2018.
Stephan Bosch <stephan.bosch@dovecot.fi>
parents:
22598
diff
changeset
|
1 /* Copyright (c) 2016-2018 Dovecot authors, see the included COPYING file */ |
19735
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
2 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
3 #include "test-lib.h" |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
4 #include "str.h" |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
5 #include "ostream.h" |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
6 #include "ostream-escaped.h" |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
7 #include "json-parser.h" |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
8 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
9 static void test_ostream_escaped_json(void) |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
10 { |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
11 struct ostream *os_sink; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
12 struct ostream *os_encode; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
13 struct const_iovec iov[2]; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
14 string_t *str = t_str_new(64); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
15 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
16 test_begin("test_ostream_escaped_json()"); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
17 os_sink = o_stream_create_buffer(str); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
18 os_encode = o_stream_create_escaped(os_sink, ostream_escaped_json_format); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
19 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
20 /* test sending iovec */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
21 iov[0].iov_base = "hello"; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
22 iov[0].iov_len = 5; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
23 iov[1].iov_base = ", world"; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
24 iov[1].iov_len = 7; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
25 test_assert(o_stream_sendv(os_encode, iov, 2) == 12); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
26 test_assert(os_encode->offset == 12); |
20266
bd22ff741f5d
lib: ostream-escaped: Fixed setting offset
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19735
diff
changeset
|
27 test_assert(os_sink->offset == 12); |
19735
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
28 test_assert(strcmp(str_c(str), "hello, world") == 0); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
29 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
30 /* reset buffer */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
31 str_truncate(str, 0); os_sink->offset = 0; os_encode->offset = 0; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
32 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
33 /* test shrinking ostream-escaped's max buffer size */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
34 o_stream_set_max_buffer_size(os_encode, 10); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
35 o_stream_set_max_buffer_size(os_sink, 100); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
36 test_assert(o_stream_send(os_encode, "\x15\x00!\x00\x15\x11" "123456", 12) == 12); |
20266
bd22ff741f5d
lib: ostream-escaped: Fixed setting offset
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19735
diff
changeset
|
37 test_assert(os_encode->offset == 12); |
bd22ff741f5d
lib: ostream-escaped: Fixed setting offset
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19735
diff
changeset
|
38 test_assert(os_sink->offset == 2*6 + 1 + 3*6 + 6); |
19735
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
39 test_assert(strcmp(str_c(str), "\\u0015\\u0000!\\u0000\\u0015\\u0011123456") == 0); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
40 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
41 /* reset buffer */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
42 str_truncate(str, 0); os_sink->offset = 0; os_encode->offset = 0; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
43 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
44 /* test shrinking sink's max buffer size */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
45 o_stream_set_max_buffer_size(os_encode, 100); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
46 o_stream_set_max_buffer_size(os_sink, 10); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
47 const char *partial_input = "\x15!\x01?#&"; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
48 ssize_t ret = o_stream_send_str(os_encode, partial_input); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
49 test_assert(ret < 6); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
50 /* send the rest */ |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
51 o_stream_set_max_buffer_size(os_sink, 100); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
52 ret += o_stream_send_str(os_encode, partial_input + ret); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
53 test_assert(ret == (ssize_t)strlen(partial_input)); |
20266
bd22ff741f5d
lib: ostream-escaped: Fixed setting offset
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19735
diff
changeset
|
54 test_assert((ssize_t)os_encode->offset == ret); |
bd22ff741f5d
lib: ostream-escaped: Fixed setting offset
Timo Sirainen <timo.sirainen@dovecot.fi>
parents:
19735
diff
changeset
|
55 test_assert(os_sink->offset == str_len(str)); |
19735
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
56 test_assert(strcmp(str_c(str), "\\u0015!\\u0001?#&") == 0); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
57 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
58 o_stream_unref(&os_encode); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
59 o_stream_unref(&os_sink); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
60 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
61 test_end(); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
62 } |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
63 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
64 static void test_ostream_escaped_hex(void) |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
65 { |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
66 struct ostream *os_sink; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
67 struct ostream *os_encode; |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
68 string_t *str = t_str_new(64); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
69 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
70 os_sink = o_stream_create_buffer(str); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
71 os_encode = o_stream_create_escaped(os_sink, ostream_escaped_hex_format); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
72 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
73 test_begin("test_ostream_escaped_hex()"); |
21845
2a7172f12be9
test: lib: Check o_stream_send return value
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21390
diff
changeset
|
74 test_assert(o_stream_send_str(os_encode, "hello, world") == 12); |
22598
14262da623ba
test-ostream-escaped: Check flush return value
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
21845
diff
changeset
|
75 test_assert(o_stream_flush(os_encode) == 1); |
19735
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
76 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
77 test_assert(strcmp(str_c(str), "68656c6c6f2c20776f726c64") == 0); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
78 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
79 o_stream_unref(&os_encode); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
80 o_stream_unref(&os_sink); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
81 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
82 test_end(); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
83 } |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
84 |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
85 void test_ostream_escaped(void) { |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
86 test_ostream_escaped_json(); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
87 test_ostream_escaped_hex(); |
a3872143befd
lib: Add ostream-escaped filter
Aki Tuomi <aki.tuomi@dovecot.fi>
parents:
diff
changeset
|
88 } |