Sun, 22 Dec 2024 22:10:04 +0100
don't trust that size_t always has word width
it should be the case on all platforms supported by UCX, but it's not strictly defined in POSIX that it must be the case
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
1 | /* |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
2 | * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
3 | * |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
4 | * Copyright 2023 Mike Becker, Olaf Wintermann All rights reserved. |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
5 | * |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
6 | * Redistribution and use in source and binary forms, with or without |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
7 | * modification, are permitted provided that the following conditions are met: |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
8 | * |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
9 | * 1. Redistributions of source code must retain the above copyright |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
10 | * notice, this list of conditions and the following disclaimer. |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
11 | * |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
12 | * 2. Redistributions in binary form must reproduce the above copyright |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
13 | * notice, this list of conditions and the following disclaimer in the |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
14 | * documentation and/or other materials provided with the distribution. |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
15 | * |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
16 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
17 | * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
18 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
19 | * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
20 | * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
21 | * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
22 | * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
23 | * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
24 | * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
25 | * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
26 | * POSSIBILITY OF SUCH DAMAGE. |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
27 | */ |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
28 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
29 | #include "cx/test.h" |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
30 | #include "util_allocator.h" |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
31 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
32 | #include "cx/printf.h" |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
33 | #include "cx/buffer.h" |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
34 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
35 | #define ASSERT_ZERO_TERMINATED(str) CX_TEST_ASSERTM((str).ptr[(str).length] == '\0', \ |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
36 | #str " is not zero terminated") |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
37 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
38 | static size_t test_printf_write_func( |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
849
diff
changeset
|
39 | const void *src, |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
40 | size_t esize, |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
41 | size_t ecount, |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
42 | void *target |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
43 | ) { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
44 | memcpy(target, src, esize * ecount); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
45 | return esize * ecount; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
46 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
47 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
48 | CX_TEST(test_bprintf) { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
49 | CxTestingAllocator talloc; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
50 | cx_testing_allocator_init(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
51 | CxAllocator *alloc = &talloc.base; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
52 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
53 | CxBuffer buf; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
54 | cxBufferInit(&buf, NULL, 64, alloc, 0); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
55 | size_t r = cx_bprintf(&buf, "This %s aged %u years in a %2XSK.", "Test", 10, 0xca); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
56 | CX_TEST_ASSERT(r == 34); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
57 | CX_TEST_ASSERT(buf.size == 34); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
58 | buf.space[r] = '\0'; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
59 | CX_TEST_ASSERT(0 == strcmp(buf.space, "This Test aged 10 years in a CASK.")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
60 | cxBufferDestroy(&buf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
61 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
62 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
63 | cx_testing_allocator_destroy(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
64 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
65 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
66 | CX_TEST(test_bprintf_large_string) { |
805
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
67 | unsigned len = cx_printf_sbo_size; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
68 | CxTestingAllocator talloc; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
69 | cx_testing_allocator_init(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
70 | CxAllocator *alloc = &talloc.base; |
805
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
71 | char *aaa = malloc(len); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
72 | char *bbb = malloc(len); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
73 | char *expected = malloc(2*len+16); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
74 | memset(aaa, 'a', len-1); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
75 | aaa[len-1] = 0; |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
76 | memset(bbb, 'b', len-1); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
77 | bbb[len-1] = 0; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
78 | sprintf(expected, "After %s comes %s.", aaa, bbb); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
79 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
80 | CxBuffer buf; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
81 | cxBufferInit(&buf, NULL, 64, alloc, CX_BUFFER_AUTO_EXTEND); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
82 | size_t r = cx_bprintf(&buf, "After %s comes %s.", aaa, bbb); |
805
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
83 | size_t er = 2*len-2+14; |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
84 | CX_TEST_ASSERT(r == er); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
85 | CX_TEST_ASSERT(buf.size == er); |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
86 | cxBufferPut(&buf, 0); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
87 | CX_TEST_ASSERT(0 == strcmp(expected, buf.space)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
88 | cxBufferDestroy(&buf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
89 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
90 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
91 | free(aaa); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
92 | free(bbb); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
93 | free(expected); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
94 | cx_testing_allocator_destroy(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
95 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
96 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
97 | CX_TEST(test_bprintf_nocap) { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
98 | CxTestingAllocator talloc; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
99 | cx_testing_allocator_init(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
100 | CxAllocator *alloc = &talloc.base; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
101 | char space[20]; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
102 | memset(space, 'a', 20); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
103 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
104 | CxBuffer buf; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
105 | cxBufferInit(&buf, space, 16, alloc, 0); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
106 | size_t r = cx_bprintf(&buf, "Hello %s with more than %d chars.", "string", 16); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
107 | CX_TEST_ASSERT(r == 16); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
108 | CX_TEST_ASSERT(buf.size == 16); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
109 | CX_TEST_ASSERT(0 == memcmp(space, "Hello string witaaaa", 20)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
110 | cxBufferDestroy(&buf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
111 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
112 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
113 | cx_testing_allocator_destroy(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
114 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
115 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
116 | CX_TEST(test_fprintf) { |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
849
diff
changeset
|
117 | const char *h = "Hello"; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
118 | char buf[32]; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
119 | size_t r; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
120 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
121 | r = cx_fprintf(buf, test_printf_write_func, "teststring"); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
122 | CX_TEST_ASSERT(r == 10); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
123 | CX_TEST_ASSERT(0 == memcmp(buf, "teststring", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
124 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
125 | r = cx_fprintf(buf, test_printf_write_func, "[%10s]", h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
126 | CX_TEST_ASSERT(r == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
127 | CX_TEST_ASSERT(0 == memcmp(buf, "[ Hello]", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
128 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
129 | r = cx_fprintf(buf, test_printf_write_func, "[%-10s]", h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
130 | CX_TEST_ASSERT(r == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
131 | CX_TEST_ASSERT(0 == memcmp(buf, "[Hello ]", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
132 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
133 | r = cx_fprintf(buf, test_printf_write_func, "[%*s]", 10, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
134 | CX_TEST_ASSERT(r == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
135 | CX_TEST_ASSERT(0 == memcmp(buf, "[ Hello]", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
136 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
137 | r = cx_fprintf(buf, test_printf_write_func, "[%-10.*s]", 4, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
138 | CX_TEST_ASSERT(r == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
139 | CX_TEST_ASSERT(0 == memcmp(buf, "[Hell ]", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
140 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
141 | r = cx_fprintf(buf, test_printf_write_func, "[%-*.*s]", 10, 4, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
142 | CX_TEST_ASSERT(r == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
143 | CX_TEST_ASSERT(0 == memcmp(buf, "[Hell ]", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
144 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
145 | r = cx_fprintf(buf, test_printf_write_func, "%c", 'A'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
146 | CX_TEST_ASSERT(r == 1); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
147 | CX_TEST_ASSERT(0 == memcmp(buf, "A", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
148 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
149 | r = cx_fprintf(buf, test_printf_write_func, "%i %d %.6i %i %.0i %+i %i", 1, 2, 3, 0, 0, 4, -4); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
150 | CX_TEST_ASSERT(r == 19); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
151 | CX_TEST_ASSERT(0 == memcmp(buf, "1 2 000003 0 +4 -4", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
152 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
153 | r = cx_fprintf(buf, test_printf_write_func, "%x %x %X %#x", 5, 10, 10, 6); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
154 | CX_TEST_ASSERT(r == 9); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
155 | CX_TEST_ASSERT(0 == memcmp(buf, "5 a A 0x6", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
156 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
157 | r = cx_fprintf(buf, test_printf_write_func, "%o %#o %#o", 10, 10, 4); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
158 | CX_TEST_ASSERT(r == 9); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
159 | CX_TEST_ASSERT(0 == memcmp(buf, "12 012 04", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
160 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
161 | r = cx_fprintf(buf, test_printf_write_func, "%05.2f %.2f %5.2f", 1.5, 1.5, 1.5); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
162 | CX_TEST_ASSERT(r == 16); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
163 | CX_TEST_ASSERT(0 == memcmp(buf, "01.50 1.50 1.50", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
164 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
165 | r = cx_fprintf(buf, test_printf_write_func, "'%*c'", 5, 'x'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
166 | CX_TEST_ASSERT(r == 7); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
167 | CX_TEST_ASSERT(0 == memcmp(buf, "' x'", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
168 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
169 | r = cx_fprintf(buf, test_printf_write_func, "'%*c'", -5, 'x'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
170 | CX_TEST_ASSERT(r == 7); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
171 | CX_TEST_ASSERT(0 == memcmp(buf, "'x '", r)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
172 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
173 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
174 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
175 | CX_TEST(test_asprintf) { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
176 | CxTestingAllocator talloc; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
177 | cx_testing_allocator_init(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
178 | CxAllocator *alloc = &talloc.base; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
179 | |
890
54565fd74e74
move all const keywords to the west - fixes #426
Mike Becker <universe@uap-core.de>
parents:
849
diff
changeset
|
180 | const char *h = "Hello"; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
181 | |
951
8f6d6556380a
remove dynamic arrays which are not supported by msvc
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
182 | cxmutstr r[13]; |
8f6d6556380a
remove dynamic arrays which are not supported by msvc
Mike Becker <universe@uap-core.de>
parents:
890
diff
changeset
|
183 | size_t specimen_count = cx_nmemb(r); |
956
abd60ccd74f7
fix comparing size_t with int
Mike Becker <universe@uap-core.de>
parents:
951
diff
changeset
|
184 | size_t specimen = 0; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
185 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
186 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
187 | r[specimen] = cx_asprintf_a(alloc, "teststring"); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
188 | CX_TEST_ASSERT(r[specimen].length == 10); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
189 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
190 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "teststring")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
191 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
192 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
193 | r[specimen] = cx_asprintf_a(alloc, "[%10s]", h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
194 | CX_TEST_ASSERT(r[specimen].length == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
195 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
196 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "[ Hello]")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
197 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
198 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
199 | r[specimen] = cx_asprintf_a(alloc, "[%-10s]", h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
200 | CX_TEST_ASSERT(r[specimen].length == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
201 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
202 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "[Hello ]")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
203 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
204 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
205 | r[specimen] = cx_asprintf_a(alloc, "[%*s]", 10, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
206 | CX_TEST_ASSERT(r[specimen].length == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
207 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
208 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "[ Hello]")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
209 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
210 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
211 | r[specimen] = cx_asprintf_a(alloc, "[%-10.*s]", 4, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
212 | CX_TEST_ASSERT(r[specimen].length == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
213 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
214 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "[Hell ]")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
215 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
216 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
217 | r[specimen] = cx_asprintf_a(alloc, "[%-*.*s]", 10, 4, h); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
218 | CX_TEST_ASSERT(r[specimen].length == 12); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
219 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
220 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "[Hell ]")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
221 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
222 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
223 | r[specimen] = cx_asprintf_a(alloc, "%c", 'A'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
224 | CX_TEST_ASSERT(r[specimen].length == 1); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
225 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
226 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "A")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
227 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
228 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
229 | r[specimen] = cx_asprintf_a(alloc, "%i %d %.6i %i %.0i %+i %i", 1, 2, 3, 0, 0, 4, -4); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
230 | CX_TEST_ASSERT(r[specimen].length == 19); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
231 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
232 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "1 2 000003 0 +4 -4")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
233 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
234 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
235 | r[specimen] = cx_asprintf_a(alloc, "%x %x %X %#x", 5, 10, 10, 6); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
236 | CX_TEST_ASSERT(r[specimen].length == 9); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
237 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
238 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "5 a A 0x6")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
239 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
240 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
241 | r[specimen] = cx_asprintf_a(alloc, "%o %#o %#o", 10, 10, 4); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
242 | CX_TEST_ASSERT(r[specimen].length == 9); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
243 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
244 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "12 012 04")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
245 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
246 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
247 | r[specimen] = cx_asprintf_a(alloc, "%05.2f %.2f %5.2f", 1.5, 1.5, 1.5); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
248 | CX_TEST_ASSERT(r[specimen].length == 16); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
249 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
250 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "01.50 1.50 1.50")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
251 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
252 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
253 | r[specimen] = cx_asprintf_a(alloc, "'%*c'", 5, 'x'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
254 | CX_TEST_ASSERT(r[specimen].length == 7); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
255 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
256 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "' x'")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
257 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
258 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
259 | r[specimen] = cx_asprintf_a(alloc, "'%*c'", -5, 'x'); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
260 | CX_TEST_ASSERT(r[specimen].length == 7); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
261 | ASSERT_ZERO_TERMINATED(r[specimen]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
262 | CX_TEST_ASSERT(0 == strcmp(r[specimen].ptr, "'x '")); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
263 | specimen++; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
264 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
265 | CX_TEST_ASSERT(specimen == specimen_count); // self-test |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
266 | |
956
abd60ccd74f7
fix comparing size_t with int
Mike Becker <universe@uap-core.de>
parents:
951
diff
changeset
|
267 | for (size_t i = 0; i < specimen_count; i++) { |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
268 | cx_strfree_a(alloc, &r[i]); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
269 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
270 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
271 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
272 | cx_testing_allocator_destroy(&talloc); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
273 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
274 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
275 | CX_TEST(test_asprintf_large_string) { |
805
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
276 | unsigned len = cx_printf_sbo_size; |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
277 | char *aaa = malloc(len); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
278 | char *bbb = malloc(len); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
279 | char *expected = malloc(2*len+16); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
280 | memset(aaa, 'a', len-1); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
281 | aaa[len-1] = 0; |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
282 | memset(bbb, 'b', len-1); |
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
283 | bbb[len-1] = 0; |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
284 | sprintf(expected, "After %s comes %s.", aaa, bbb); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
285 | CX_TEST_DO { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
286 | cxmutstr r = cx_asprintf("After %s comes %s.", aaa, bbb); |
805
26500fc24058
add constant for reading out printf sbo size - relates to #343
Mike Becker <universe@uap-core.de>
parents:
780
diff
changeset
|
287 | CX_TEST_ASSERT(r.length == 2*len-2+14); |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
288 | ASSERT_ZERO_TERMINATED(r); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
289 | CX_TEST_ASSERT(0 == strcmp(r.ptr, expected)); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
290 | cx_strfree(&r); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
291 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
292 | free(aaa); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
293 | free(bbb); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
294 | free(expected); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
295 | } |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
296 | |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
297 | CX_TEST(test_sprintf_no_realloc) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
298 | char *buf = malloc(16); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
299 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
300 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
301 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
302 | CX_TEST_DO { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
303 | char *oldbuf = buf; |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
304 | size_t buflen = 16; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
305 | size_t len = cx_sprintf_a(alloc, &buf, &buflen, "Test %d %s", 47, "string"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
306 | CX_TEST_ASSERT(oldbuf == buf); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
307 | CX_TEST_ASSERT(len == 14); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
308 | CX_TEST_ASSERT(buflen == 16); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
309 | CX_TEST_ASSERT(0 == memcmp(buf, "Test 47 string", 15)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
310 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
311 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
312 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
313 | free(buf); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
314 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
315 | |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
316 | CX_TEST(test_sprintf_realloc) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
317 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
318 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
319 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
320 | char *buf = cxMalloc(alloc, 8); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
321 | CX_TEST_DO { |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
322 | size_t buflen = 8; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
323 | size_t len = cx_sprintf_a(alloc, &buf, &buflen, "Test %d %s", 47, "foobar"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
324 | CX_TEST_ASSERT(len == 14); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
325 | CX_TEST_ASSERT(buflen == 15); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
326 | CX_TEST_ASSERT(0 == memcmp(buf, "Test 47 foobar", 15)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
327 | cxFree(alloc, buf); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
328 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
329 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
330 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
331 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
332 | |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
333 | CX_TEST(test_sprintf_realloc_to_fit_terminator) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
334 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
335 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
336 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
337 | // make it so that only the zero-terminator does not fit |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
338 | char *buf = cxMalloc(alloc, 14); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
339 | CX_TEST_DO { |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
340 | size_t buflen = 14; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
341 | size_t len = cx_sprintf_a(alloc, &buf, &buflen, "Test %d %s", 13, "string"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
342 | CX_TEST_ASSERT(len == 14); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
343 | CX_TEST_ASSERT(buflen == 15); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
344 | CX_TEST_ASSERT(0 == memcmp(buf, "Test 13 string", 15)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
345 | cxFree(alloc, buf); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
346 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
347 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
348 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
349 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
350 | |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
351 | CX_TEST(test_sprintf_s_no_alloc) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
352 | char buf[16]; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
353 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
354 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
355 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
356 | CX_TEST_DO { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
357 | char *str; |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
358 | size_t buflen = 16; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
359 | size_t len = cx_sprintf_sa(alloc, buf, &buflen, &str, "Test %d %s", 47, "string"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
360 | CX_TEST_ASSERT(str == buf); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
361 | CX_TEST_ASSERT(buflen == 16); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
362 | CX_TEST_ASSERT(len == 14); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
363 | CX_TEST_ASSERT(0 == memcmp(buf, "Test 47 string", 15)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
364 | CX_TEST_ASSERT(0 == memcmp(str, "Test 47 string", 15)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
365 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
366 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
367 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
368 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
369 | |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
370 | CX_TEST(test_sprintf_s_alloc) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
371 | char buf[16]; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
372 | memcpy(buf, "0123456789abcdef", 16); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
373 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
374 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
375 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
376 | CX_TEST_DO { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
377 | char *str; |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
378 | size_t buflen = 16; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
379 | size_t len = cx_sprintf_sa(alloc, buf, &buflen, &str, "Hello %d %s", 4711, "larger string"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
380 | CX_TEST_ASSERT(str != buf); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
381 | CX_TEST_ASSERT(buflen == 25); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
382 | CX_TEST_ASSERT(len == 24); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
383 | CX_TEST_ASSERT(0 == memcmp(str, "Hello 4711 larger string", 25)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
384 | cxFree(alloc, str); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
385 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
386 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
387 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
388 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
389 | |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
390 | CX_TEST(test_sprintf_s_alloc_to_fit_terminator) { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
391 | char buf[16]; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
392 | memcpy(buf, "0123456789abcdef", 16); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
393 | CxTestingAllocator talloc; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
394 | cx_testing_allocator_init(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
395 | CxAllocator *alloc = &talloc.base; |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
396 | CX_TEST_DO { |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
397 | char *str; |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
398 | size_t buflen = 16; |
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
399 | size_t len = cx_sprintf_sa(alloc, buf,&buflen, &str, "Hello %d %s", 112, "string"); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
400 | CX_TEST_ASSERT(str != buf); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
401 | CX_TEST_ASSERT(len == 16); |
849
edb9f875b7f9
improves interface of cx_sprintf() variants
Mike Becker <universe@uap-core.de>
parents:
810
diff
changeset
|
402 | CX_TEST_ASSERT(buflen == 17); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
403 | CX_TEST_ASSERT(0 == memcmp(str, "Hello 112 string", 17)); // include terminator |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
404 | cxFree(alloc, str); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
405 | CX_TEST_ASSERT(cx_testing_allocator_verify(&talloc)); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
406 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
407 | cx_testing_allocator_destroy(&talloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
408 | } |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
409 | |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
410 | CxTestSuite *cx_test_suite_printf(void) { |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
411 | CxTestSuite *suite = cx_test_suite_new("printf"); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
412 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
413 | cx_test_register(suite, test_bprintf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
414 | cx_test_register(suite, test_bprintf_large_string); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
415 | cx_test_register(suite, test_bprintf_nocap); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
416 | cx_test_register(suite, test_fprintf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
417 | cx_test_register(suite, test_asprintf); |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
418 | cx_test_register(suite, test_asprintf_large_string); |
810
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
419 | cx_test_register(suite, test_sprintf_no_realloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
420 | cx_test_register(suite, test_sprintf_realloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
421 | cx_test_register(suite, test_sprintf_realloc_to_fit_terminator); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
422 | cx_test_register(suite, test_sprintf_s_no_alloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
423 | cx_test_register(suite, test_sprintf_s_alloc); |
85859399a0cc
add cx_sprintf() variants - fixes #353
Mike Becker <universe@uap-core.de>
parents:
805
diff
changeset
|
424 | cx_test_register(suite, test_sprintf_s_alloc_to_fit_terminator); |
780
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
425 | |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
426 | return suite; |
9965df621652
migrate printf tests - relates to #342
Mike Becker <universe@uap-core.de>
parents:
diff
changeset
|
427 | } |