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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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 }