// File: /workspace/github_c_makefile_star2_O0/yangtau[P]hedgehog/src/test/string_test.c
// Function: test_strbuf
void test_strbuf() {
    hg_strtable_init();

    struct hg_strbuf buf;

    {
        //  empty string
        hg_strbuf_init(&buf);

        test_assert(buf.len == 0);
        test_assert(!buf._moved);

        const char* t = hg_strbuf_to_str(&buf);
        test_assert(strcmp("", t) == 0);
        test_assert(buf._moved);

        hg_strbuf_free(&buf);
    }

    {
        hg_strbuf_init(&buf);
#define spaces "        "
        hg_strbuf_append(&buf, spaces);
        hg_strbuf_append(&buf, spaces);
        hg_strbuf_append(&buf, spaces);
        hg_strbuf_append(&buf, spaces);

        test_assert(buf.len == 4 * strlen(spaces));
        const char* t = hg_strbuf_to_str(&buf);
        test_assert(strcmp(spaces spaces spaces spaces, t) == 0);

#undef spaces
        hg_strbuf_free(&buf);
    }

    {
        hg_strbuf_init(&buf);
        test_assert(buf.len == 0);

        test_assert(hg_strbuf_append(&buf, "hello, %s", "world"));
        test_assert(buf.len == strlen("hello, world"));

        test_assert(hg_strbuf_append(&buf, "hello, %s", "world"));
        test_assert(buf.len == strlen("hello, worldhello, world"));

        test_assert(hg_strbuf_append(&buf, "hello, %s", "world"));
        test_assert(buf.len == strlen("hello, worldhello, worldhello, world"));

        test_assert(hg_strbuf_append(&buf, " a=%d+%d,b=%c", 10, 20, 'c'));
        test_assert(buf.len == strlen("hello, worldhello, worldhello, world a=10+20,b=c"));

        test_assert(hg_strbuf_append(&buf, ""));
        test_assert(buf.len == strlen("hello, worldhello, worldhello, world a=10+20,b=c"));

        test_assert(hg_strbuf_append(&buf, "  "));
        test_assert(buf.len == strlen("hello, worldhello, worldhello, world a=10+20,b=c  "));

        const char* t = hg_strbuf_to_str(&buf);
        test_assert(strcmp("hello, worldhello, worldhello, world a=10+20,b=c  ", t) == 0);
        test_assert(buf._moved);

        hg_strbuf_free(&buf);
    }

    hg_strtable_free();
}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x40, %rsp
movb $0x0, %al
callq 0x11c0
leaq -0x20(%rbp), %rdi
callq 0x13a0
cmpq $0x0, -0x20(%rbp)
jne 0x1741
jmp 0x1773
movq 0x28b0(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x990(%rip), %rsi       # 0x20e2
leaq 0x9b5(%rip), %rdx       # 0x210e
movl $0xf, %ecx
leaq 0x9b7(%rip), %r8        # 0x211c
leaq 0x9bc(%rip), %r9        # 0x2128
movb $0x0, %al
callq 0x1090
jmp 0x1775
testb $0x1, -0x8(%rbp)
jne 0x177d
jmp 0x17af
movq 0x2874(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x954(%rip), %rsi       # 0x20e2
leaq 0x979(%rip), %rdx       # 0x210e
movl $0x10, %ecx
leaq 0x97b(%rip), %r8        # 0x211c
leaq 0x98d(%rip), %r9        # 0x2135
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x16a0
movq %rax, -0x28(%rbp)
movq -0x28(%rbp), %rsi
leaq 0x946(%rip), %rdi       # 0x210d
callq 0x1080
cmpl $0x0, %eax
jne 0x17d3
jmp 0x1805
movq 0x281e(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x8fe(%rip), %rsi       # 0x20e2
leaq 0x923(%rip), %rdx       # 0x210e
movl $0x13, %ecx
leaq 0x925(%rip), %r8        # 0x211c
leaq 0x943(%rip), %r9        # 0x2141
movb $0x0, %al
callq 0x1090
jmp 0x1807
testb $0x1, -0x8(%rbp)
je 0x180f
jmp 0x1841
movq 0x27e2(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x8c2(%rip), %rsi       # 0x20e2
leaq 0x8e7(%rip), %rdx       # 0x210e
movl $0x14, %ecx
leaq 0x8e9(%rip), %r8        # 0x211c
leaq 0x8fc(%rip), %r9        # 0x2136
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x1400
leaq -0x20(%rbp), %rdi
callq 0x13a0
leaq -0x20(%rbp), %rdi
leaq 0x92c(%rip), %rsi       # 0x218a
movb $0x0, %al
callq 0x1460
leaq -0x20(%rbp), %rdi
leaq 0x91a(%rip), %rsi       # 0x218a
movb $0x0, %al
callq 0x1460
leaq -0x20(%rbp), %rdi
leaq 0x908(%rip), %rsi       # 0x218a
movb $0x0, %al
callq 0x1460
leaq -0x20(%rbp), %rdi
leaq 0x8f6(%rip), %rsi       # 0x218a
movb $0x0, %al
callq 0x1460
cmpq $0x20, -0x20(%rbp)
jne 0x18a4
jmp 0x18d6
movq 0x274d(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x82d(%rip), %rsi       # 0x20e2
leaq 0x852(%rip), %rdx       # 0x210e
movl $0x21, %ecx
leaq 0x854(%rip), %r8        # 0x211c
leaq 0x885(%rip), %r9        # 0x2154
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x16a0
movq %rax, -0x30(%rbp)
movq -0x30(%rbp), %rsi
leaq 0x884(%rip), %rdi       # 0x2172
callq 0x1080
cmpl $0x0, %eax
jne 0x18fa
jmp 0x192c
movq 0x26f7(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x7d7(%rip), %rsi       # 0x20e2
leaq 0x7fc(%rip), %rdx       # 0x210e
movl $0x23, %ecx
leaq 0x7fe(%rip), %r8        # 0x211c
leaq 0x86e(%rip), %r9        # 0x2193
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x1400
leaq -0x20(%rbp), %rdi
callq 0x13a0
cmpq $0x0, -0x20(%rbp)
jne 0x1947
jmp 0x1979
movq 0x26aa(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x78a(%rip), %rsi       # 0x20e2
leaq 0x7af(%rip), %rdx       # 0x210e
movl $0x2b, %ecx
leaq 0x7b1(%rip), %r8        # 0x211c
leaq 0x7b6(%rip), %r9        # 0x2128
movb $0x0, %al
callq 0x1090
jmp 0x197b
leaq -0x20(%rbp), %rdi
leaq 0x839(%rip), %rsi       # 0x21bf
leaq 0x83c(%rip), %rdx       # 0x21c9
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x199a
jmp 0x199c
jmp 0x19ce
movq 0x2655(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x735(%rip), %rsi       # 0x20e2
leaq 0x75a(%rip), %rdx       # 0x210e
movl $0x2d, %ecx
leaq 0x75c(%rip), %r8        # 0x211c
leaq 0x808(%rip), %r9        # 0x21cf
movb $0x0, %al
callq 0x1090
jmp 0x19d0
cmpq $0xc, -0x20(%rbp)
jne 0x19d9
jmp 0x1a0b
movq 0x2618(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x6f8(%rip), %rsi       # 0x20e2
leaq 0x71d(%rip), %rdx       # 0x210e
movl $0x2e, %ecx
leaq 0x71f(%rip), %r8        # 0x211c
leaq 0x7f8(%rip), %r9        # 0x21fc
movb $0x0, %al
callq 0x1090
jmp 0x1a0d
leaq -0x20(%rbp), %rdi
leaq 0x7a7(%rip), %rsi       # 0x21bf
leaq 0x7aa(%rip), %rdx       # 0x21c9
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x1a2c
jmp 0x1a2e
jmp 0x1a60
movq 0x25c3(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x6a3(%rip), %rsi       # 0x20e2
leaq 0x6c8(%rip), %rdx       # 0x210e
movl $0x30, %ecx
leaq 0x6ca(%rip), %r8        # 0x211c
leaq 0x776(%rip), %r9        # 0x21cf
movb $0x0, %al
callq 0x1090
jmp 0x1a62
cmpq $0x18, -0x20(%rbp)
jne 0x1a6b
jmp 0x1a9d
movq 0x2586(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x666(%rip), %rsi       # 0x20e2
leaq 0x68b(%rip), %rdx       # 0x210e
movl $0x31, %ecx
leaq 0x68d(%rip), %r8        # 0x211c
leaq 0x788(%rip), %r9        # 0x221e
movb $0x0, %al
callq 0x1090
jmp 0x1a9f
leaq -0x20(%rbp), %rdi
leaq 0x715(%rip), %rsi       # 0x21bf
leaq 0x718(%rip), %rdx       # 0x21c9
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x1abe
jmp 0x1ac0
jmp 0x1af2
movq 0x2531(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x611(%rip), %rsi       # 0x20e2
leaq 0x636(%rip), %rdx       # 0x210e
movl $0x33, %ecx
leaq 0x638(%rip), %r8        # 0x211c
leaq 0x6e4(%rip), %r9        # 0x21cf
movb $0x0, %al
callq 0x1090
jmp 0x1af4
cmpq $0x24, -0x20(%rbp)
jne 0x1afd
jmp 0x1b2f
movq 0x24f4(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x5d4(%rip), %rsi       # 0x20e2
leaq 0x5f9(%rip), %rdx       # 0x210e
movl $0x34, %ecx
leaq 0x5fb(%rip), %r8        # 0x211c
leaq 0x724(%rip), %r9        # 0x224c
movb $0x0, %al
callq 0x1090
jmp 0x1b31
leaq -0x20(%rbp), %rdi
leaq 0x74a(%rip), %rsi       # 0x2286
movl $0xa, %edx
movl $0x14, %ecx
movl $0x63, %r8d
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x1b59
jmp 0x1b5b
jmp 0x1b8d
movq 0x2496(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x576(%rip), %rsi       # 0x20e2
leaq 0x59b(%rip), %rdx       # 0x210e
movl $0x36, %ecx
leaq 0x59d(%rip), %r8        # 0x211c
leaq 0x70e(%rip), %r9        # 0x2294
movb $0x0, %al
callq 0x1090
jmp 0x1b8f
cmpq $0x30, -0x20(%rbp)
jne 0x1b98
jmp 0x1bca
movq 0x2459(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x539(%rip), %rsi       # 0x20e2
leaq 0x55e(%rip), %rdx       # 0x210e
movl $0x37, %ecx
leaq 0x560(%rip), %r8        # 0x211c
leaq 0x706(%rip), %r9        # 0x22c9
movb $0x0, %al
callq 0x1090
jmp 0x1bcc
leaq -0x20(%rbp), %rdi
leaq 0x536(%rip), %rsi       # 0x210d
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x1be4
jmp 0x1be6
jmp 0x1c18
movq 0x240b(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x4eb(%rip), %rsi       # 0x20e2
leaq 0x510(%rip), %rdx       # 0x210e
movl $0x39, %ecx
leaq 0x512(%rip), %r8        # 0x211c
leaq 0x6fe(%rip), %r9        # 0x230f
movb $0x0, %al
callq 0x1090
jmp 0x1c1a
cmpq $0x30, -0x20(%rbp)
jne 0x1c23
jmp 0x1c55
movq 0x23ce(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x4ae(%rip), %rsi       # 0x20e2
leaq 0x4d3(%rip), %rdx       # 0x210e
movl $0x3a, %ecx
leaq 0x4d5(%rip), %r8        # 0x211c
leaq 0x67b(%rip), %r9        # 0x22c9
movb $0x0, %al
callq 0x1090
jmp 0x1c57
leaq -0x20(%rbp), %rdi
leaq 0x52e(%rip), %rsi       # 0x2190
movb $0x0, %al
callq 0x1460
testb $0x1, %al
jne 0x1c6f
jmp 0x1c71
jmp 0x1ca3
movq 0x2380(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x460(%rip), %rsi       # 0x20e2
leaq 0x485(%rip), %rdx       # 0x210e
movl $0x3c, %ecx
leaq 0x487(%rip), %r8        # 0x211c
leaq 0x68e(%rip), %r9        # 0x232a
movb $0x0, %al
callq 0x1090
jmp 0x1ca5
cmpq $0x32, -0x20(%rbp)
jne 0x1cae
jmp 0x1ce0
movq 0x2343(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x423(%rip), %rsi       # 0x20e2
leaq 0x448(%rip), %rdx       # 0x210e
movl $0x3d, %ecx
leaq 0x44a(%rip), %r8        # 0x211c
leaq 0x66e(%rip), %r9        # 0x2347
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x16a0
movq %rax, -0x38(%rbp)
movq -0x38(%rbp), %rsi
leaq 0x697(%rip), %rdi       # 0x238f
callq 0x1080
cmpl $0x0, %eax
jne 0x1d04
jmp 0x1d36
movq 0x22ed(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x3cd(%rip), %rsi       # 0x20e2
leaq 0x3f2(%rip), %rdx       # 0x210e
movl $0x40, %ecx
leaq 0x3f4(%rip), %r8        # 0x211c
leaq 0x693(%rip), %r9        # 0x23c2
movb $0x0, %al
callq 0x1090
jmp 0x1d38
testb $0x1, -0x8(%rbp)
je 0x1d40
jmp 0x1d72
movq 0x22b1(%rip), %rax      # 0x3ff8
movq (%rax), %rdi
leaq 0x391(%rip), %rsi       # 0x20e2
leaq 0x3b6(%rip), %rdx       # 0x210e
movl $0x41, %ecx
leaq 0x3b8(%rip), %r8        # 0x211c
leaq 0x3cb(%rip), %r9        # 0x2136
movb $0x0, %al
callq 0x1090
leaq -0x20(%rbp), %rdi
callq 0x1400
movb $0x0, %al
callq 0x1200
addq $0x40, %rsp
popq %rbp
retq
nopl (%rax,%rax)