Skip to content
File

Blob: src/workerd/util/string-buffer-test.c++

1.4 KB
1// Copyright (c) 2023 Cloudflare, Inc.
2// Licensed under the Apache 2.0 license found in the LICENSE file or at:
3// https://opensource.org/licenses/Apache-2.0
4 
5#include "string-buffer.h"
6 
7#include <kj/test.h>
8 
9namespace workerd {
10namespace {
11 
12KJ_TEST("append StringPtr") {
13 StringBuffer<100> buffer(100);
14 buffer.append("abcdef"_kj);
15 KJ_EXPECT("abcdef"_kj == buffer.toString());
16}
17 
18KJ_TEST("append String") {
19 StringBuffer<100> buffer(100);
20 auto str = kj::heapString("abc"_kj);
21 buffer.append(str);
22 KJ_EXPECT("abc"_kj == buffer.toString());
23}
24 
25KJ_TEST("append char array") {
26 StringBuffer<100> buffer(100);
27 auto str = kj::heapString("abc");
28 buffer.append(str);
29 KJ_EXPECT("abc"_kj == buffer.toString());
30}
31 
32KJ_TEST("overflow") {
33 StringBuffer<10> buffer(11);
34 
35 for (auto i = 0; i < 100; i++) {
36 // 3 character will test all sorts of boundary conditions
37 // with 11-bytes heap chunks.
38 buffer.append("abc");
39 }
40 KJ_EXPECT(buffer.toString().size() == 300);
41 KJ_EXPECT(
42 "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
43 "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
44 "abcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabcabc"
45 "abcabcabcabcabcabcabc"_kj == buffer.toString());
46}
47 
48} // namespace
49} // namespace workerd