// Test suite for util.c // // This is rather thin just now, but if we encounter any bugs in // util.c, then that would be an excellent opportunity to expand // coverage here. // // // This file is part of Beastie // SPDX-FileCopyrightText: 2024 Norman Gray // SPDX-License-Identifier: BSD-2-Clause #include #include "util.h" #include "c-unit.h" s7_scheme* S7; static void test_stringbuilder(void) { StringBuilder sb = make_stringbuilder_with_size(8); stringbuilder_append_c(sb, 'a'); stringbuilder_append_s(sb, "bcdefghijk"); // requires an extend stringbuilder_append_sn(sb, "lmnopqrs", 4); // appends only lmno stringbuilder_terminate(sb); assert_equal_sn(sb->buf, sb->len, "abcdefghijklmno"); assert_equal_s(sb->buf, "abcdefghijklmno"); assert_equal_uint(sb->len, 15); stringbuilder_reset(sb); StringBuilder sb2 = make_stringbuilder(); stringbuilder_append_s(sb2, "abcd"); stringbuilder_append_sb(sb, sb2); stringbuilder_printf(sb, "+%d+%s", 99, "efgh"); stringbuilder_terminate(sb); assert_equal_sn(sb->buf, sb->len, "abcd+99+efgh"); stringbuilder_free(sb); stringbuilder_free(sb2); sb = make_stringbuilder_with_size(8); // new allocation // the following requires more than one doubling stringbuilder_printf(sb, "s=%s", "12345678901234567890123456789012"); assert_equal_uint(sb->len, 34); assert_equal_sn(sb->buf, sb->len, "s=12345678901234567890123456789012"); stringbuilder_free(sb); } int main(int argc, char** argv) { int rval; run_test_suite("stringbuilder basics", test_stringbuilder); exit(report_status()); }