Skip to content

StrDeinit

Description

Release the backing storage of str through its inline allocator and zero the handle so a later double-Deinit is a no-op.

Success

Returns to the caller. *str is zeroed.

Failure

Function cannot fail. NULL str is a no-op.

Usage example (Cross-references)

Usage examples (Cross-references)
            StrAppendFmt(&UNPL(m), __VA_ARGS__);                                                                           \
            LogWrite(LOG_MESSAGE_TYPE_FATAL, __func__, __LINE__, StrBegin(&UNPL(m)));                                      \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
            Abort();                                                                                                       \
            StrAppendFmt(&UNPL(m), __VA_ARGS__);                                                                           \
            LogWrite(LOG_MESSAGE_TYPE_ERROR, __func__, __LINE__, StrBegin(&UNPL(m)));                                      \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
        } while (0)
            StrAppendFmt(&UNPL(m), __VA_ARGS__);                                                                           \
            LogWrite(LOG_MESSAGE_TYPE_INFO, __func__, __LINE__, StrBegin(&UNPL(m)));                                       \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
        } while (0)
            }                                                                                                              \
            LogWrite(LOG_MESSAGE_TYPE_FATAL, __func__, __LINE__, StrBegin(&UNPL(m)));                                      \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
            Abort();                                                                                                       \
            }                                                                                                              \
            LogWrite(LOG_MESSAGE_TYPE_ERROR, __func__, __LINE__, StrBegin(&UNPL(m)));                                      \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
        } while (0)
            }                                                                                                              \
            LogWrite(LOG_MESSAGE_TYPE_INFO, __func__, __LINE__, StrBegin(&UNPL(m)));                                       \
            StrDeinit(&UNPL(m));                                                                                           \
            HeapAllocatorDeinit(&UNPL(log_alloc));                                                                         \
        } while (0)
    
    typedef struct PdbCacheEntry {
        Str  module_path; // owned; cleaned via StrDeinit
        Pe   pe;
        Pdb  pdb;
            Zstr UNPL(in) = StrBegin(&UNPL(buf));                                                                          \
            StrReadFmt(UNPL(in), __VA_ARGS__);                                                                             \
            StrDeinit(&UNPL(buf));                                                                                         \
        } while (0)
            Zstr UNPL(in) = StrBegin(&UNPL(buf));                                                                          \
            StrReadFmt(UNPL(in), __VA_ARGS__);                                                                             \
            StrDeinit(&UNPL(buf));                                                                                         \
        } while (0)
            StrAppendFmt(&UNPL(buf), __VA_ARGS__);                                                                         \
            ProcWriteToStdin((p), &UNPL(buf));                                                                             \
            StrDeinit(&UNPL(buf));                                                                                         \
        } while (0)
            StrPushBackR(&UNPL(buf), '\n');                                                                                 \
            ProcWriteToStdin((p), &UNPL(buf));                                                                             \
            StrDeinit(&UNPL(buf));                                                                                         \
        } while (0)
                if (StrIterIndex(&UNPL(read_si)) == StrIterIndex(&si)) {                                                   \
                    LOG_ERROR("Failed to read string key in object. Invalid JSON");                                        \
                    StrDeinit(&key);                                                                                       \
                    UNPL(failed) = true;                                                                                   \
                    si           = UNPL(saved_si);                                                                         \
                if (!StrIterPeek(&si, &UNPL(jr_c)) || UNPL(jr_c) != ':') {                                                 \
                    LOG_ERROR("Expected ':' after key string. Failed to read JSON");                                       \
                    StrDeinit(&key);                                                                                       \
                    UNPL(failed) = true;                                                                                   \
                    si           = UNPL(saved_si);                                                                         \
                    if (StrIterIndex(&UNPL(read_si)) == StrIterIndex(&si)) {                                               \
                        LOG_ERROR("Failed to parse value. Invalid JSON.");                                                 \
                        StrDeinit(&key);                                                                                   \
                        UNPL(failed) = true;                                                                               \
                        si           = UNPL(saved_si);                                                                     \
                    si = UNPL(read_si);                                                                                    \
                }                                                                                                          \
                StrDeinit(&key);                                                                                           \
                si = JSkipWhitespace(si);                                                                                  \
                                                                                                                           \
                        Str str = generate_str_from_input(data, offset, data_size, 16, alloc);
                        VecPushBack(&temp, str);
                        StrDeinit(&str);
                    }
            FormatStackTrace(&trace, frames, n, ALLOCATOR_OF(&h));
            (void)FileWrite(&out, StrBegin(&trace), StrLen(&trace));
            StrDeinit(&trace);
        }
    #else
    #endif
    
        StrDeinit(&full);
        HeapAllocatorDeinit(&h);
    }
    
        FWriteFmtLn(&err, "{}", usage);
        StrDeinit(&usage);
        FWriteFmtLn(&err, "");
    
        for (u64 i = 0; i < n_specs; ++i) {
            StrDeinit(&left_col[i]);
        }
    }
            }
        }
        StrDeinit(&tmp);
        DefaultAllocatorDeinit(&scratch);
        return ok;
        }
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&scratch);
        return ok;
            }
        }
        StrDeinit(&tmp);
        DefaultAllocatorDeinit(&scratch);
        return ok;
            if (end_pos < 0) {
                LOG_ERROR("FileSeek(END) failed during f_read_fmt");
                StrDeinit(&buffer);
                DefaultAllocatorDeinit(&scratch);
                return;
                if (got < 0) {
                    LOG_ERROR("FileRead failed during f_read_fmt");
                    StrDeinit(&buffer);
                    DefaultAllocatorDeinit(&scratch);
                    return;
        }
    
        StrDeinit(&buffer);
        DefaultAllocatorDeinit(&scratch);
    }
                }
    
                StrDeinit(&canonical);
                *out = result;
                return true;
            }
    
            StrDeinit(&canonical);
            *out = result;
            return true;
    
    fail:
        StrDeinit(&canonical);
        StrDeinit(&result);
        return false;
    fail:
        StrDeinit(&canonical);
        StrDeinit(&result);
        return false;
    }
                goto fail;
            }
            StrDeinit(&digits);
            *out = result;
            return true;
            goto fail;
        }
        StrDeinit(&digits);
        *out = result;
        return true;
    
    fail:
        StrDeinit(&digits);
        StrDeinit(&result);
        return false;
    fail:
        StrDeinit(&digits);
        StrDeinit(&result);
        return false;
    }
    
        if (!StrMerge(o, &temp)) {
            StrDeinit(&temp);
            return false;
        }
            return false;
        }
        StrDeinit(&temp);
    
        if (fmt_info->width > 0) {
                    char c    = ZstrProcessEscape(&curr);
                    if (c == 0) {
                        StrDeinit(s);
                        return NULL;
                    }
                    char c    = ZstrProcessEscape(&curr);
                    if (c == 0) {
                        StrDeinit(s);
                        return NULL;
                    }
        if (quote) {
            LOG_ERROR("Unterminated quoted string");
            StrDeinit(s);
            return NULL;
        }
            // the digit-by-digit scan below.
            if (StrToF64(&temp, v, NULL)) {
                StrDeinit(&temp);
                DefaultAllocatorDeinit(&scratch);
                return StrIterDataAt(&si, StrIterIndex(&si));
                return StrIterDataAt(&si, StrIterIndex(&si));
            }
            StrDeinit(&temp);
    
            si = saved;
        if (!is_valid_numeric_string(&temp, true)) {
            LOG_ERROR("Invalid floating point format");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        if (!StrToF64(&temp, v, NULL)) {
            LOG_ERROR("Failed to parse f64");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        }
    
        StrDeinit(&temp);
        DefaultAllocatorDeinit(&scratch);
        return start + pos;
             StrBegin(&temp)[1] == 'B' || StrBegin(&temp)[1] == 'o' || StrBegin(&temp)[1] == 'O')) {
            LOG_ERROR("Incomplete number format");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        if (!is_valid_numeric_string(&temp, false)) {
            LOG_ERROR("Invalid numeric format");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        if (!StrToU64(&temp, &val, NULL)) {
            LOG_ERROR("Failed to parse u8");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        if (val > UINT8_MAX) {
            LOG_ERROR("Value {} exceeds u8 maximum ({})", val, UINT8_MAX);
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
    
        *v = (u8)val;
        StrDeinit(&temp);
        DefaultAllocatorDeinit(&scratch);
        return start + pos;
                 StrBegin(&temp)[1] == 'B' || StrBegin(&temp)[1] == 'o' || StrBegin(&temp)[1] == 'O')) {                   \
                LOG_ERROR("Incomplete number format");                                                                     \
                StrDeinit(&temp);                                                                                          \
                DefaultAllocatorDeinit(&scratch);                                                                          \
                return start;                                                                                              \
            if (!is_valid_numeric_string(&temp, false)) {                                                                  \
                LOG_ERROR("Invalid numeric format");                                                                       \
                StrDeinit(&temp);                                                                                          \
                DefaultAllocatorDeinit(&scratch);                                                                          \
                return start;                                                                                              \
            if (!PARSER(&temp, &val, NULL)) {                                                                              \
                LOG_ERROR("Failed to parse " #NAME);                                                                       \
                StrDeinit(&temp);                                                                                          \
                DefaultAllocatorDeinit(&scratch);                                                                          \
                return start;                                                                                              \
                                                                                                                           \
            *v = (T)val;                                                                                                   \
            StrDeinit(&temp);                                                                                              \
            DefaultAllocatorDeinit(&scratch);                                                                              \
            return start + pos;                                                                                            \
        if (val > UMAX) {                                                                                                  \
            LOG_ERROR("Value {} exceeds " #NAME " maximum ({})", val, UMAX);                                               \
            StrDeinit(&temp);                                                                                              \
            DefaultAllocatorDeinit(&scratch);                                                                              \
            return start;                                                                                                  \
        if (val > IMAX || val < IMIN) {                                                                                    \
            LOG_ERROR("Value {} outside " #NAME " range ({} to {})", val, IMIN, IMAX);                                     \
            StrDeinit(&temp);                                                                                              \
            DefaultAllocatorDeinit(&scratch);                                                                              \
            return start;                                                                                                  \
        next = _read_Str(i, &default_fmt, &temp);
        if (next == i) {
            StrDeinit(&temp);
            return i;
        }
        if (!result) {
            LOG_ERROR("Failed to allocate memory for string");
            StrDeinit(&temp);
            return i;
        }
    
        *out = result;
        StrDeinit(&temp);
        return next;
    }
                }
                if (!StrMerge(o, &bit_str)) {
                    StrDeinit(&bit_str);
                    return false;
                }
                    return false;
                }
                StrDeinit(&bit_str);
            }
        }
    
        if (!StrMerge(o, &temp)) {
            StrDeinit(&temp);
            return false;
        }
            return false;
        }
        StrDeinit(&temp);
    
        if (fmt_info->width > 0) {
            if (!StrToU64(&hex_str, &value, &config)) {
                LOG_ERROR("Failed to parse hex value");
                StrDeinit(&hex_str);
                return start;
            }
    
            *bv = BitVecFromInteger(value, bit_len, BitVecAllocator(bv));
            StrDeinit(&hex_str);
            return StrIterDataAt(&si, StrIterIndex(&si));
        }
            if (!StrToU64(&oct_str, &value, &config)) {
                LOG_ERROR("Failed to parse octal value");
                StrDeinit(&oct_str);
                return start;
            }
    
            *bv = BitVecFromInteger(value, bit_len, BitVecAllocator(bv));
            StrDeinit(&oct_str);
            return StrIterDataAt(&si, StrIterIndex(&si));
        }
        *bv = BitVecFromStr(StrBegin(&bin_str), BitVecAllocator(bv));
    
        StrDeinit(&bin_str);
        return StrIterDataAt(&si, StrIterIndex(&si));
    }
    
        if (!ok) {
            StrDeinit(&temp);
            return start;
        }
        *value = parsed;
    
        StrDeinit(&temp);
        return StrIterDataAt(&si, StrIterIndex(&si));
    }
        if (float_fmt_uses_unsupported_flags(fmt_info)) {
            LOG_ERROR("Float only supports decimal and scientific reading");
            StrDeinit(&temp);
            FloatDeinit(&parsed);
            return i;
        if (!StrIterRemainingLength(&si)) {
            LOG_ERROR("Failed to parse Float: empty input");
            StrDeinit(&temp);
            FloatDeinit(&parsed);
            return StrIterDataAt(&si, StrIterIndex(&si));
        if (token_len == 0) {
            LOG_ERROR("Failed to parse Float");
            StrDeinit(&temp);
            FloatDeinit(&parsed);
            return start;
        }
    
        StrDeinit(&temp);
        temp = StrInitFromCstr(start, token_len, FloatAllocator(value));
        if (!FloatTryFromStr(&parsed, StrBegin(&temp))) {
        temp = StrInitFromCstr(start, token_len, FloatAllocator(value));
        if (!FloatTryFromStr(&parsed, StrBegin(&temp))) {
            StrDeinit(&temp);
            FloatDeinit(&parsed);
            return start;
        *value = parsed;
    
        StrDeinit(&temp);
        return start + token_len;
    }
            if (StrToF64(&temp, &val, NULL)) {
                *v = (f32)val;
                StrDeinit(&temp);
                DefaultAllocatorDeinit(&scratch);
                return StrIterDataAt(&si, StrIterIndex(&si));
                return StrIterDataAt(&si, StrIterIndex(&si));
            }
            StrDeinit(&temp);
    
            si = saved;
        if (!is_valid_numeric_string(&temp, true)) {
            LOG_ERROR("Invalid floating point format");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
        if (!StrToF64(&temp, &val, NULL)) {
            LOG_ERROR("Failed to parse f32");
            StrDeinit(&temp);
            DefaultAllocatorDeinit(&scratch);
            return start;
    
        *v = (f32)val;
        StrDeinit(&temp);
        DefaultAllocatorDeinit(&scratch);
        return start + pos;
    }
    
    void StrDeinit(Str *copy) {
        ValidateStr(copy);
        deinit_vec(GENERIC_VEC(copy), sizeof(char));
    void str_deinit(void *copy, const Allocator *alloc) {
        (void)alloc;
        StrDeinit((Str *)copy);
    }
            IntDeinit(&remainder);
            IntDeinit(&current);
            StrDeinit(&result);
            return false;
        }
                IntDeinit(&remainder);
                IntDeinit(&current);
                StrDeinit(&result);
                return false;
            }
                    IntDeinit(&remainder);
                    IntDeinit(&current);
                    StrDeinit(&result);
                    return false;
                }
        result.exponent = explicit_exp - fractional;
    
        StrDeinit(&digits);
        float_normalize(&result);
        FloatDeinit(out);
    
    fail:
        StrDeinit(&digits);
        FloatDeinit(&result);
        return false;
        }
    
        StrDeinit(&digits);
        *out = result;
        return true;
    
    fail:
        StrDeinit(&digits);
        StrDeinit(&result);
        return false;
    fail:
        StrDeinit(&digits);
        StrDeinit(&result);
        return false;
    }
            char bit_char = BitVecGet(bv, i) ? '1' : '0';
            if (!StrPushBackR(out, bit_char)) {
                StrDeinit(out);
                *out = StrInit(alloc);
                return false;
        }
    
        StrDeinit(&bv_str);
        return result;
    }
        }
    
        StrDeinit(&bv_str);
        return result;
    }
    #endif
        LOG_ERROR("    {} trace:\n{}", label, rendered);
        StrDeinit(&rendered);
    }
        }
    
        StrDeinit(&copy->name);
        copy->type = 0;
            if (sys_path_exists(StrBegin(&path)) && ElfOpen(out, &path, alloc)) {
                if (sidecar_matches(main, out, /*by_build_id*/ true)) {
                    StrDeinit(&path);
                    return true;
                }
            if (sys_path_exists(StrBegin(&path)) && ElfOpen(out, &path, alloc)) {
                if (sidecar_matches(main, out, /*by_build_id*/ false)) {
                    StrDeinit(&path);
                    return true;
                }
            if (sys_path_exists(StrBegin(&path)) && ElfOpen(out, &path, alloc)) {
                if (sidecar_matches(main, out, /*by_build_id*/ false)) {
                    StrDeinit(&path);
                    return true;
                }
            if (sys_path_exists(StrBegin(&path)) && ElfOpen(out, &path, alloc)) {
                if (sidecar_matches(main, out, /*by_build_id*/ false)) {
                    StrDeinit(&path);
                    return true;
                }
        }
    
        StrDeinit(&path);
        return false;
    }
        Str pdb_path = StrInit(alloc);
        if (!find_pdb(&entry->pe, StrBegin(&entry->module_path), &pdb_path)) {
            StrDeinit(&pdb_path);
            return false;
        }
        }
        bool ok = PdbOpen(&entry->pdb, &pdb_path, alloc);
        StrDeinit(&pdb_path);
        if (!ok)
            return false;
    
        if (!VecPushBackR(&self->entries, entry)) {
            StrDeinit(&entry.module_path);
            return NULL;
        }
            if (e->pe_open)
                PeDeinit(&e->pe);
            StrDeinit(&e->module_path);
        }
        VecDeinit(&self->entries);
        Str buf = StrInit(alloc);
        if (!slurp_file(path, &buf)) {
            StrDeinit(&buf);
            return;
        }
                    // failure ownership of `e.name` stays with us. Release
                    // it to avoid leaking the cstr allocation.
                    StrDeinit(&e.name);
                    break;
                }
        }
    
        StrDeinit(&buf);
    }
        Str buf = StrInit(alloc);
        if (!slurp_file(path, &buf)) {
            StrDeinit(&buf);
            return;
        }
        }
    
        StrDeinit(&buf);
    }
        StrPushBackMany(&buf, path, len);
        bool ok = dns_add_path(self, StrBegin(&buf), do_hosts, do_resolv);
        StrDeinit(&buf);
        return ok;
    }
        if (VecBegin(&self->hosts)) {
            VecForeachPtr(&self->hosts, e) {
                StrDeinit(&e->name);
            }
            VecDeinit(&self->hosts);
    
        if (!VecPushBackR(&self->entries, entry)) {
            StrDeinit(&entry.module_path);
            return NULL;
        }
        Str path = StrInit(alloc);
        if (!compose_dsym_path(StrBegin(&e->module_path), &path)) {
            StrDeinit(&path);
            return false;
        }
        }
        if (!sys_path_exists(StrBegin(&path)) || !MachoOpen(&e->dsym, &path, alloc)) {
            StrDeinit(&path);
            return false;
        }
            return false;
        }
        StrDeinit(&path);
    
        if (!MachoHasUuid(&e->dsym) || MemCompare(MachoUuid(&e->dsym), MachoUuid(&e->main), 16) != 0) {
            if (e->main_open)
                MachoDeinit(&e->main);
            StrDeinit(&e->module_path);
        }
        VecDeinit(&self->entries);
        if (!CreateProcessA(NULL, StrBegin(&cmdline), NULL, NULL, TRUE, 0, NULL, NULL, &si, &pi)) {
            LOG_ERROR("CreateProcessA() failed (GetLastError={})", (i32)GetLastError());
            StrDeinit(&cmdline);
            CloseHandle(hStdinRead);
            CloseHandle(hStdinWrite);
            return proc;
        }
        StrDeinit(&cmdline);
    
        CloseHandle(hStdinRead);
            VecDeinit(&self->entries);
        if (StrAllocator(&self->string_pool))
            StrDeinit(&self->string_pool);
        MemSet(self, 0, sizeof(*self));
    }
            Str dummy = StrInit(alloc);
            if (!decode_name(&it, &dummy)) {
                StrDeinit(&dummy);
                return false;
            }
                return false;
            }
            StrDeinit(&dummy);
            u16 qtype, qclass;
            if (!BufReadFmt(&it, "{>2r}{>2r}", qtype, qclass)) {
            return;
        }
        StrDeinit(&self->name);
        StrDeinit(&self->target);
        VecDeinit(&self->rdata);
        }
        StrDeinit(&self->name);
        StrDeinit(&self->target);
        VecDeinit(&self->rdata);
    }
        if (StrLen(value) > 0) {
            Str stripped = StrStrip(value, NULL);
            StrDeinit(value);
            *value = stripped;
        }
    
            if (!StrIterPeek(&si, &c)) {
                StrDeinit(&key);
                StrDeinit(&value);
                break;
            if (!StrIterPeek(&si, &c)) {
                StrDeinit(&key);
                StrDeinit(&value);
                break;
            }
            if (kvconfig_is_comment_start(c)) {
                si = KvConfigSkipLine(si);
                StrDeinit(&key);
                StrDeinit(&value);
                continue;
                si = KvConfigSkipLine(si);
                StrDeinit(&key);
                StrDeinit(&value);
                continue;
            }
            read_si = KvConfigReadPair(si, &key, &value);
            if (StrIterIndex(&read_si) == StrIterIndex(&si)) {
                StrDeinit(&key);
                StrDeinit(&value);
                return saved_si;
            if (StrIterIndex(&read_si) == StrIterIndex(&si)) {
                StrDeinit(&key);
                StrDeinit(&value);
                return saved_si;
            }
    
            MapSetOnlyL(cfg, key, value);
            StrDeinit(&key);
            StrDeinit(&value);
            si = read_si;
            MapSetOnlyL(cfg, key, value);
            StrDeinit(&key);
            StrDeinit(&value);
            si = read_si;
        }
        lookup = StrInitFromCstr(key, ZstrLen(key), MapAllocator(cfg));
        value  = kvconfig_get_ptr_str(cfg, &lookup);
        StrDeinit(&lookup);
        return value;
    }
                AllocatorFree(alloc, self->stream_block_counts);
        }
        StrDeinit(&self->name_pool);
        VecDeinit(&self->functions);
        BufDeinit(&self->data);
        if (!self)
            return;
        StrDeinit(&self->raw);
        VecDeinit(&self->entries);
        MemSet(self, 0, sizeof(*self));
            LOG_FATAL("invalid arguments");
        }
        StrDeinit(&header->key);
        StrDeinit(&header->value);
        MemSet(header, 0, sizeof(*header));
        }
        StrDeinit(&header->key);
        StrDeinit(&header->value);
        MemSet(header, 0, sizeof(*header));
    }
        (void)alloc; // each Str carries its own allocator handle
        HttpHeader *header = (HttpHeader *)header_ptr;
        StrDeinit(&header->key);
        StrDeinit(&header->value);
        MemSet(header, 0, sizeof(*header));
        HttpHeader *header = (HttpHeader *)header_ptr;
        StrDeinit(&header->key);
        StrDeinit(&header->value);
        MemSet(header, 0, sizeof(*header));
    }
    
        if (!StrInitCopy(&dst->key, &src->key)) {
            StrDeinit(&dst->key);
            return false;
        }
        }
        if (!StrInitCopy(&dst->value, &src->value)) {
            StrDeinit(&dst->key);
            StrDeinit(&dst->value);
            return false;
        if (!StrInitCopy(&dst->value, &src->value)) {
            StrDeinit(&dst->key);
            StrDeinit(&dst->value);
            return false;
        }
        if (cursor == in) {
            LOG_ERROR("http request parse failed: invalid request line");
            StrDeinit(&method);
            StrDeinit(&version);
            return in;
            LOG_ERROR("http request parse failed: invalid request line");
            StrDeinit(&method);
            StrDeinit(&version);
            return in;
        }
        if (0 != ZstrCompareN(StrBegin(&version), "HTTP/1.1", 8)) {
            LOG_ERROR("invalid/unsupported HTTP version");
            StrDeinit(&method);
            StrDeinit(&version);
            return in;
            LOG_ERROR("invalid/unsupported HTTP version");
            StrDeinit(&method);
            StrDeinit(&version);
            return in;
        }
            return in;
        }
        StrDeinit(&version);
    
        req->method = http_request_method_from_str(&method);
    
        req->method = http_request_method_from_str(&method);
        StrDeinit(&method);
        if (req->method == HTTP_REQUEST_METHOD_UNKNOWN) {
            LOG_ERROR("invalid http request method");
            LOG_FATAL("invalid arguments");
        }
        StrDeinit(&req->url);
        VecDeinit(&req->headers);
        MemSet(req, 0, sizeof(*req));
        response->status_code  = status;
        response->content_type = HTTP_CONTENT_TYPE_TEXT_HTML;
        StrDeinit(&response->body);
        response->body = StrDup(html, response->allocator);
        return response;
        response->status_code  = status;
        response->content_type = content_type;
        StrDeinit(&response->body);
        response->body = StrInit(response->allocator);
        if (FileReadAndClose(filepath, &response->body) < 0) {
            if (!StrPushBackMany(&out, StrBegin(&response->body), StrLen(&response->body))) {
                LOG_ERROR("HttpResponseSerialize: failed to append body");
                StrDeinit(&out);
                return StrInit(alloc);
            }
            LOG_FATAL("invalid arguments");
        }
        StrDeinit(&response->body);
        VecDeinit(&response->headers);
        MemSet(response, 0, sizeof(*response));
            if (StrIterIndex(&read_si) == StrIterIndex(&si)) {
                LOG_ERROR("Failed to read string key in object. Invalid JSON");
                StrDeinit(&key);
                DefaultAllocatorDeinit(&scratch);
                return saved_si;
            if (!StrIterPeek(&si, &c) || c != ':') {
                LOG_ERROR("Expected ':' after key string. Failed to read JSON");
                StrDeinit(&key);
                DefaultAllocatorDeinit(&scratch);
                return saved_si;
            if (StrIterIndex(&read_si) == StrIterIndex(&si)) {
                LOG_ERROR("Failed to parse value. Invalid JSON.");
                StrDeinit(&key);
                DefaultAllocatorDeinit(&scratch);
                return saved_si;
            LOG_INFO("User skipped reading of '{}' field in JSON object.", key);
    
            StrDeinit(&key);
            si = read_si;
            si = JSkipWhitespace(si);
                    if (has_exp) {
                        LOG_ERROR("Invalid number. Multiple exponent indicators.");
                        StrDeinit(&ns);
                        DefaultAllocatorDeinit(&scratch);
                        return saved_si;
                    if (is_flt) {
                        LOG_ERROR("Invalid number. Multiple decimal indicators.");
                        StrDeinit(&ns);
                        DefaultAllocatorDeinit(&scratch);
                        return saved_si;
                            "must appear after exponent 'E' or 'e' indicator."
                        );
                        StrDeinit(&ns);
                        DefaultAllocatorDeinit(&scratch);
                        return saved_si;
                            "Expected only once after 'e' or 'E'."
                        );
                        StrDeinit(&ns);
                        DefaultAllocatorDeinit(&scratch);
                        return saved_si;
        if (!StrLen(&ns)) {
            LOG_ERROR("Failed to parse number. '{.8}'", LVAL(StrIterDataAt(&saved_si, StrIterIndex(&saved_si))));
            StrDeinit(&ns);
            DefaultAllocatorDeinit(&scratch);
            return saved_si;
        if (end == StrBegin(&ns)) {
            LOG_ERROR("Failed to convert string to number.");
            StrDeinit(&ns);
            DefaultAllocatorDeinit(&scratch);
            return saved_si;
        num->is_float = is_flt;
    
        StrDeinit(&ns);
        DefaultAllocatorDeinit(&scratch);
        return si;
            Str              s       = StrInit(&scratch);
            si                       = JReadString(si, &s);
            StrDeinit(&s);
            DefaultAllocatorDeinit(&scratch);
            return;
        VecDeinit(&self->entries);
        StrDeinit(&self->string_pool);
        MemSet(self, 0, sizeof(*self));
    }
                }
                WriteFmtLn("{}", s);
                StrDeinit(&s);
            }
            }
            HttpRequestDeinit(&req);
            StrDeinit(&raw);
        }
    }
            LOG_ERROR("failed to dial upstream for client [{}]", peer_str);
            SocketClose(client);
            StrDeinit(&peer_str);
            return;
        }
            SocketClose(&upstream);
            SocketClose(client);
            StrDeinit(&peer_str);
            return;
        }
        SocketClose(&upstream);
        SocketClose(client);
        StrDeinit(&peer_str);
    }
        if (!ok) {
            FileRemove(out_path);
            StrDeinit(out_path);
        }
        return ok;
        if (!FileIsOpen(&f)) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
                      ZstrCompare(StrBegin(&body), "hello from file") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return result;
        if (!FileIsOpen(&f)) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
                      ZstrCompare(StrBegin(&body), expected) == 0 && StrCapacity(&body) >= StrLen(&body) + 1;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        FileClose(&f);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        FileClose(&f);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (got == 3) && (StrLen(&body) == 3) && ZstrCompare(StrBegin(&body), "new") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (got == 8) && ZstrCompare(StrBegin(&body), "headtail") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == (i64)n) && (StrLen(&body) == (size)n) && ZstrCompare(StrBegin(&body), payload) == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok   = (got == -1);
    
        StrDeinit(&body);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&body);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (got == 10) && ZstrCompare(StrBegin(&body), "AAA3456789") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == 10) && ZstrCompare(StrBegin(&body), "helloworld") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (got == 6) && (StrLen(&body) == 6) && ZstrCompare(StrBegin(&body), "ABCDEF") == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
             ZstrCompare(StrBegin(&body), payload) == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        BufDeinit(&dst);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == (i64)n) && (StrLen(&body) == (size)n) && ZstrCompare(StrBegin(&body), payload) == 0;
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == 0) && (StrLen(&body) == 0);
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == 5) && ZstrCompare(StrBegin(&body), "12345") == 0;
    
        StrDeinit(&body);
        BufDeinit(&in);
        FileRemove(&path);
        BufDeinit(&in);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok       = ok && (got == (i64)StrLen(&in)) && ZstrCompare(StrBegin(&body), "string-content") == 0;
    
        StrDeinit(&body);
        StrDeinit(&in);
        FileRemove(&path);
    
        StrDeinit(&body);
        StrDeinit(&in);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&in);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok     = ok && (FileReadAndClose(&p2, &b2) == 6) && ZstrCompare(StrBegin(&b2), "twotwo") == 0;
    
        StrDeinit(&b1);
        StrDeinit(&b2);
        FileRemove(&p1);
    
        StrDeinit(&b1);
        StrDeinit(&b2);
        FileRemove(&p1);
        FileRemove(&p2);
        FileRemove(&p1);
        FileRemove(&p2);
        StrDeinit(&p1);
        StrDeinit(&p2);
        DefaultAllocatorDeinit(&alloc);
        FileRemove(&p2);
        StrDeinit(&p1);
        StrDeinit(&p2);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        // Unreachable on real code.
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return true;
        ok       = ok && (got == 0) && (StrLen(&body) == 0);
    
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        StrDeinit(&body);
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
                FileClose(&a);
                FileRemove(&pa);
                StrDeinit(&pa);
            }
            if (FileIsOpen(&b)) {
                FileClose(&b);
                FileRemove(&pb);
                StrDeinit(&pb);
            }
            DefaultAllocatorDeinit(&alloc);
        FileRemove(&pb);
        FileRemove(&pc);
        StrDeinit(&pa);
        StrDeinit(&pb);
        StrDeinit(&pc);
        FileRemove(&pc);
        StrDeinit(&pa);
        StrDeinit(&pb);
        StrDeinit(&pc);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&pa);
        StrDeinit(&pb);
        StrDeinit(&pc);
        DefaultAllocatorDeinit(&alloc);
        return ok && reuse;
        ok      = ok && (ZstrFindSubstring(StrBegin(&out), "40 bytes") != NULL);
    
        StrDeinit(&out);
        HeapAllocatorDeinit(&scratch);
        if (p1)
        ok = ok && (ZstrFindSubstring(StrBegin(&out), "#0") != NULL);
    
        StrDeinit(&out);
        HeapAllocatorDeinit(&scratch);
        if (p)
        ok = ok && (ZstrFindSubstring(StrBegin(&out), "#1 ") != NULL);
    
        StrDeinit(&out);
        HeapAllocatorDeinit(&scratch);
        if (p)
        ok = ok && (ZstrFindSubstring(StrBegin(&out), StrBegin(&ns)) == NULL);
    
        StrDeinit(&ns);
        StrDeinit(&out);
        HeapAllocatorDeinit(&scratch);
    
        StrDeinit(&ns);
        StrDeinit(&out);
        HeapAllocatorDeinit(&scratch);
        if (p)
        bool ok = (rc == ARG_RUN_OK) && StrLen(&name) == 5 && StrBegin(&name)[0] == 'a' && StrBegin(&name)[4] == 'e';
        ArgParseDeinit(&p);
        StrDeinit(&name);
        DefaultAllocatorDeinit(&a);
        return ok;
        Str  tmp_path = StrInit(p->alloc);
        File tmp      = FileOpenTemp(&tmp_path, p->alloc);
        StrDeinit(&tmp_path);
        if (!FileIsOpen(&tmp))
            LOG_FATAL("capture_help: FileOpenTemp failed");
            WriteFmt("---- actual   ({} bytes) ----\n{}\n", StrLen(&out), StrBegin(&out));
        }
        StrDeinit(&out);
        DefaultAllocatorDeinit(&a);
        return ok;
            WriteFmt("[a1] render cap: window wrong\n{}\n", StrBegin(&out));
        }
        StrDeinit(&out);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a2);
        Str  tmp_path = StrInit(p->alloc);
        File tmp      = FileOpenTemp(&tmp_path, p->alloc);
        StrDeinit(&tmp_path);
        if (!FileIsOpen(&tmp))
            return false;
        bool ok = (rc == ARG_RUN_OK) && (StrLen(&name) == 3) && (StrBegin(&name)[0] == 'b') && (StrBegin(&name)[2] == 'b');
        ArgParseDeinit(&p);
        StrDeinit(&name);
        DefaultAllocatorDeinit(&a);
        return ok;
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<LISTEN>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<READ_ONLY>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        // The metavar is "<PORT>", never "<__PORT>".
        bool ok = got && str_contains(&help, "<PORT>") && !str_contains(&help, "__PORT");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<VALUE>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<IP6>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        // "gzip" -> "GZIP": the trailing 'z' in the middle must be upper.
        bool ok = got && str_contains(&help, "<GZIP>") && !str_contains(&help, "GzIP");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<ABC>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "<source>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool got  = capture_help_file(&p, &help);
        bool ok   = got && str_contains(&help, "-l, --listen");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        // long, " <LISTEN>".
        bool ok = got && str_contains(&help, "  -l, --listen <LISTEN>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        // No short form: rendered as four spaces then the long name.
        bool ok = got && str_contains(&help, "    --timeout <TIMEOUT>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        // The verbose flag must appear but with no "<VERBOSE>" metavar.
        bool ok = got && str_contains(&help, "-v, --verbose") && !str_contains(&help, "<VERBOSE>");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool ok = got && str_contains(&help, "--a-very-long-option-name") && str_contains(&help, "AAA") &&
                  str_contains(&help, "          AAA");
        StrDeinit(&help);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        Str  tmp_path = StrInit(p->alloc);
        File tmp      = FileOpenTemp(&tmp_path, p->alloc);
        StrDeinit(&tmp_path);
        if (!FileIsOpen(&tmp))
            LOG_FATAL("capture_run: FileOpenTemp failed");
        bool ok =
            (rc == ARG_RUN_ERROR) && str_has(&out, "unexpected positional argument") && !str_has(&out, "internal error");
        StrDeinit(&out);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        bool ok = (rc == ARG_RUN_ERROR) && str_has(&out, "missing required option") &&
                  !str_has(&out, "missing required positional");
        StrDeinit(&out);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
    
        bool ok = (rc == ARG_RUN_ERROR) && str_has(&out, "flag name too long");
        StrDeinit(&out);
        ArgParseDeinit(&p);
        DefaultAllocatorDeinit(&a);
        StrAppendFmt(&s, "{}", d);
        bool ok = ZstrCompare(StrBegin(&s), "2021-01-01T00:00:00Z") == 0;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&s, "{}", d);
        bool ok = ZstrCompare(StrBegin(&s), "2021-01-01T05:30:00+05:30") == 0;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&s, "{}", d);
        bool ok = ZstrCompare(StrBegin(&s), "2021-01-01T00:00:00.123456789Z") == 0;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = DateTimeCompare(a, b) == 0 && b.utc_offset_seconds == MST && b.nanosecond == 123456789u &&
                  b.year == a.year && b.month == a.month && b.day == a.day && b.hour == a.hour;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
                      ZstrCompare(StrBegin(stored_name), "alpha") == 0 && StrBegin(stored_name) != StrBegin(&name);
    
        StrDeinit(&name);
        GraphDeinit(&graph);
        DefaultAllocatorDeinit(&alloc);
        result      = result && !city_reachable(&graph, &index, &s_unknown, &s_alpha);
    
        StrDeinit(&s_alpha);
        StrDeinit(&s_beta);
        StrDeinit(&s_gamma);
    
        StrDeinit(&s_alpha);
        StrDeinit(&s_beta);
        StrDeinit(&s_gamma);
        StrDeinit(&s_delta);
        StrDeinit(&s_alpha);
        StrDeinit(&s_beta);
        StrDeinit(&s_gamma);
        StrDeinit(&s_delta);
        StrDeinit(&s_echo);
        StrDeinit(&s_beta);
        StrDeinit(&s_gamma);
        StrDeinit(&s_delta);
        StrDeinit(&s_echo);
        StrDeinit(&s_unknown);
        StrDeinit(&s_gamma);
        StrDeinit(&s_delta);
        StrDeinit(&s_echo);
        StrDeinit(&s_unknown);
        StrDeinit(&s_delta);
        StrDeinit(&s_echo);
        StrDeinit(&s_unknown);
    
        city_reset_visits(&graph);
        result      = result && !FloatEQ(&clone, &original);
    
        StrDeinit(&text);
        FloatDeinit(&original);
        FloatDeinit(&clone);
        bool right = ok && (ZstrCompare(StrBegin(&text), "5") == 0);
    
        StrDeinit(&text);
        IntDeinit(&result);
        IntDeinit(&value.significand);
        bool right = ok && (ZstrCompare(StrBegin(&text), "120") == 0);
    
        StrDeinit(&text);
        IntDeinit(&result);
        FloatDeinit(&value);
        bool result = ok && (ZstrCompare(StrBegin(&text), "100") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&f);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "1152921504606846976") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool ok = ZstrCompare(StrBegin(&t), "100.1") == 0;
    
        StrDeinit(&t);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool ok = ZstrCompare(StrBegin(&t), "12.5") == 0;
    
        StrDeinit(&t);
        FloatDeinit(&a);
        FloatDeinit(&z);
        bool result = ZstrCompare(StrBegin(&text), "-12.5") == 0;
    
        StrDeinit(&text);
        FloatAbs(&value);
        text   = FloatToStr(&value);
        result = result && (ZstrCompare(StrBegin(&text), "12.5") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), "1.23") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), FLOAT_TEST_VERY_LARGE_THREES) == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "2") == 0;
    
        StrDeinit(&text);
        FloatAdd(&result_value, &a, &whole);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3.25") == 0);
    
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3.25") == 0);
    
        StrDeinit(&text);
        FloatAdd(&result_value, &a, -1);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "0.25") == 0);
    
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 0.75f);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "2") == 0);
    
        StrDeinit(&text);
        FloatAdd(&result_value, &a, 0.75);
        text   = FloatToStr(&result_value);
        IntDeinit(&whole);
        FloatDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "-0.5") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), FLOAT_TEST_VERY_LARGE_TWOS) == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "5") == 0;
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, &whole);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "7.5") == 0);
    
        StrDeinit(&text);
        FloatSub(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        IntDeinit(&whole);
        FloatDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "-2.5") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), FLOAT_TEST_VERY_LARGE_TWOS) == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "3") == 0;
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, &whole);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, 2u);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, -2);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "-3") == 0);
    
        StrDeinit(&text);
        FloatMul(&result_value, &a, 0.5f);
        text   = FloatToStr(&result_value);
        IntDeinit(&whole);
        FloatDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "0.125") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), FLOAT_TEST_VERY_LARGE_ONES) == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "3") == 0;
    
        StrDeinit(&text);
        FloatDiv(&result_value, &a, &whole, 1);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "2.5") == 0);
    
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 3u, 1);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "2.5") == 0);
    
        StrDeinit(&text);
        FloatDiv(&result_value, &a, -3, 1);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "-2.5") == 0);
    
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 0.5f, 1);
        text   = FloatToStr(&result_value);
        result = result && (ZstrCompare(StrBegin(&text), "15") == 0);
    
        StrDeinit(&text);
        FloatDiv(&result_value, &a, 0.5, 1);
        text   = FloatToStr(&result_value);
        IntDeinit(&whole);
        FloatDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "3") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "-3") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ZstrCompare(StrBegin(&text), "0.75") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        bool result = ok && (ZstrCompare(StrBegin(&text), "5") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&f);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (ZstrCompare(StrBegin(&text), "19") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&f);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (ZstrCompare(StrBegin(&text), "2") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&b);
        ok      = ok && (ZstrCompare(StrBegin(&text), "2.5") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&a);
        FloatDeinit(&r);
        result      = result && !FloatIsNegative(&value);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && FloatIsNegative(&value);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
    
        IntDeinit(&integer);
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        FloatDeinit(&value);
        IntDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "-123.45") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
                      (StrAllocator(&text)->retry_limit == alloc.base.retry_limit);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), FLOAT_TEST_VERY_LARGE_ONES) == 0;
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), "1230") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (FloatCompare(&value, &whole) == 0);
    
        StrDeinit(&text);
        IntDeinit(&whole);
        FloatDeinit(&value);
        result = result && (FloatExponent(&value) == 3);
    
        StrDeinit(&text);
        IntDeinit(&whole);
        FloatDeinit(&value);
        bool  ok    = ZstrCompare(StrBegin(&text), "100") == 0;
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
    
        FloatDeinit(&value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok          = ok && (ZstrCompare(StrBegin(&printed), "3.14") == 0);
    
        StrDeinit(&printed);
        FloatDeinit(&value);
        StrDeinit(&text);
        StrDeinit(&printed);
        FloatDeinit(&value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool result = (ZstrCompare(StrBegin(&text), "3.14") == 0) && (StrLen(&text) == 4);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = (ZstrCompare(StrBegin(&text), "0.001") == 0) && (StrLen(&text) == 5);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = (ZstrCompare(StrBegin(&text), "100") == 0) && (StrLen(&text) == 3);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        ok       = ok && (ZstrCompare(StrBegin(&text), "1") == 0);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = (ZstrCompare(StrBegin(&text), "4503599627370496") == 0) && (StrLen(&text) == 16);
    
        StrDeinit(&text);
        FloatDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
    
        FloatDeinit(&v);
        StrDeinit(&out);
        ok = ok && LEAK_CLEAN(dbg);
        DebugAllocatorDeinit(&dbg);
    
        FloatDeinit(&v);
        StrDeinit(&out);
        ok = ok && LEAK_CLEAN(dbg);
        DebugAllocatorDeinit(&dbg);
        bool result = (StrLen(&s) == 0) && (ZstrCompare(StrBegin(&s), "") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&local);
        return result;
        bool result = (StrLen(&s) == 0) && (ZstrCompare(StrBegin(&s), "") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&local);
        return result;
        result      = result && BitVecRegexMatch(&source, &pat_yes);
    
        StrDeinit(&pat_no);
        StrDeinit(&pat_yes);
        BitVecDeinit(&source);
    
        StrDeinit(&pat_no);
        StrDeinit(&pat_yes);
        BitVecDeinit(&source);
        DefaultAllocatorDeinit(&alloc);
        bool ok      = (matched == true);
    
        StrDeinit(&pattern);
        BitVecDeinit(&bv);
    
        // Clean up
        StrDeinit(&str);
        BitVecDeinit(&bv);
                 (ZstrCompare(StrBegin(&str), "101001") == 0);
    
        StrDeinit(&str);
        BitVecDeinit(&bv);
        DefaultAllocatorDeinit(&alloc);
        Str str_obj = BitVecToStr(&bv);
        result      = result && (StrLen(&str_obj) == 0);
        StrDeinit(&str_obj);
    
        // Test converting single bit
        result  = result && (StrLen(&str_obj) == 1);
        result  = result && (StrCmp(&str_obj, "1", 1) == 0);
        StrDeinit(&str_obj);
    
        // Test large conversions
        str_obj = BitVecToStr(&bv);
        result  = result && (StrLen(&str_obj) == 1000);
        StrDeinit(&str_obj);
    
        BitVecDeinit(&bv);
            result = result && (ZstrCompare(StrBegin(&str), patterns[i]) == 0);
    
            StrDeinit(&str);
            BitVecDeinit(&bv);
        }
        Str empty_str = BitVecToStr(&empty);
        result        = result && (StrLen(&empty_str) == 0);
        StrDeinit(&empty_str);
    
        u64 empty_value = BitVecToInteger(&empty);
            Str str = BitVecToStr(&bv);
            result  = result && (ZstrCompare(StrBegin(&str), test_cases[i].pattern) == 0);
            StrDeinit(&str);
    
            // Integer conversion is deterministic LSB-first (bit[i] -> 1<<i),
        result = result && (ZstrCompare(StrBegin(&str2), StrBegin(&str3)) == 0);
    
        StrDeinit(&str1);
        StrDeinit(&str2);
        StrDeinit(&str3);
    
        StrDeinit(&str1);
        StrDeinit(&str2);
        StrDeinit(&str3);
        BitVecDeinit(&bv1);
        StrDeinit(&str1);
        StrDeinit(&str2);
        StrDeinit(&str3);
        BitVecDeinit(&bv1);
        BitVecDeinit(&bv2);
        result = result && pattern_correct;
    
        StrDeinit(&large_str);
    
        // Test byte conversion
    
        BitVecDeinit(&bv);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (ZstrCompare(StrBegin(&text), "100000000") == 0);
    
        StrDeinit(&text);
        IntDeinit(&a);
        IntDeinit(&b);
        IntDeinit(&result_value);
        IntDeinit(&huge);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        IntDeinit(&preserved);
        IntDeinit(&huge);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        IntDeinit(&value);
        IntDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = ZstrCompare(StrBegin(&text), "79792266297612001") == 0;
    
        StrDeinit(&text);
        IntPow(&result_value, &base, &exponent);
        text   = IntToStr(&result_value);
        IntDeinit(&exponent);
        IntDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (IntToU64(&remainder) == 3);
    
        StrDeinit(&qtext);
        IntDeinit(&dividend);
        IntDeinit(&quotient);
        IntDeinit(&dividend);
        IntDeinit(&result_value);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        IntDeinit(&quotient);
        IntDeinit(&remainder);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        IntDeinit(&value);
        IntDeinit(&next);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (ZstrCompare(StrBegin(&bits), "10000000") == 0);
    
        StrDeinit(&bits);
        IntDeinit(&ones);
        IntDeinit(&one);
        result      = result && (IntToU64(&remainder) == 3u);
    
        StrDeinit(&qtext);
        IntDeinit(&dividend);
        IntDeinit(&quotient);
        result      = result && (IntToU64(&remainder) == 1u);
    
        StrDeinit(&qtext);
        IntDeinit(&dividend);
        IntDeinit(&quotient);
        result      = result && (ZstrCompare(StrBegin(&rtext), "833333448067901235") == 0);
    
        StrDeinit(&qtext);
        StrDeinit(&rtext);
        IntDeinit(&dividend);
    
        StrDeinit(&qtext);
        StrDeinit(&rtext);
        IntDeinit(&dividend);
        IntDeinit(&divisor);
        result      = result && (ZstrCompare(StrBegin(&text), "1101") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "cdef1234") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "12345678") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "1011") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), digits) == 0;
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "zz") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), "BEEF") == 0;
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
                      (StrAllocator(&text)->retry_limit == alloc.base.retry_limit);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "0") == 0);
    
        StrDeinit(&text);
        IntDeinit(&zero);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&text), "755") == 0);
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ZstrCompare(StrBegin(&text), hex) == 0;
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = StrLen(&text) == 0;
    
        StrDeinit(&text);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 5u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 5u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 13u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 15u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 15u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        bool result = ok && (IntToU64(&out) == 15u);
    
        StrDeinit(&text);
        IntDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        result      = result && (ZstrCompare(StrBegin(&dec_big), "123456789012345678901234567890") == 0);
    
        StrDeinit(&dec_small);
        StrDeinit(&hex_mid);
        StrDeinit(&hex_mid_u);
    
        StrDeinit(&dec_small);
        StrDeinit(&hex_mid);
        StrDeinit(&hex_mid_u);
        StrDeinit(&dec_big);
        StrDeinit(&dec_small);
        StrDeinit(&hex_mid);
        StrDeinit(&hex_mid_u);
        StrDeinit(&dec_big);
        IntDeinit(&small);
        StrDeinit(&hex_mid);
        StrDeinit(&hex_mid_u);
        StrDeinit(&dec_big);
        IntDeinit(&small);
        IntDeinit(&mid);
        result      = result && (ZstrCompare(StrBegin(&back_hex), "deadbeef") == 0);
    
        StrDeinit(&back_dec);
        StrDeinit(&back_hex);
        IntDeinit(&parsed_dec);
    
        StrDeinit(&back_dec);
        StrDeinit(&back_hex);
        IntDeinit(&parsed_dec);
        IntDeinit(&parsed_hex);
    
        IntDeinit(&out);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        IntDeinit(&out);
        StrDeinit(&text);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        IntDeinit(&value);
        StrDeinit(&digits);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        IntDeinit(&value);
        StrDeinit(&digits);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        IntDeinit(&value);
        StrDeinit(&digits);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        IntDeinit(&value);
        StrDeinit(&digits);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (IntToU64(&value) == 255u);
    
        StrDeinit(&hex);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        result      = result && IntIsZero(&value);
    
        StrDeinit(&hex);
        IntDeinit(&value);
        DefaultAllocatorDeinit(&alloc);
        ok = ok && int_mod_u64(&v, 100u) == 67u;
    
        StrDeinit(&s);
        IntDeinit(&v);
        ok = ok && LEAK_CLEAN(dbg);
        bool ok = IntCompare(&value, &parsed) == 0;
    
        StrDeinit(&hex);
        IntDeinit(&value);
        IntDeinit(&parsed);
        ok         = ok && (ZstrCompare(StrBegin(&out), "(3, 4)") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok            = ok && (ZstrCompare(StrBegin(&out), "got 7 hits at (-1, 2)") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (dst.x == src.x) && (dst.y == src.y);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "[(0, 0)..(10, 20)]") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (dst.max.x == src.max.x) && (dst.max.y == src.max.y);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "42:[(0, 0)..(100, 50)]@(50, 25)") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (dst.centroid.x == src.centroid.x) && (dst.centroid.y == src.centroid.y);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "score=1.5 region=7:[(1, 2)..(3, 4)]@(2, 3) origin=(0, 0)") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        success = success && (ZstrCompare(StrBegin(&output), "{​{") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        StrAppendFmt(&output, "{}", s);
        success = success && (ZstrCompare(StrBegin(&output), "World") == 0);
        StrDeinit(&s);
    
        StrDeinit(&output);
        StrDeinit(&s);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "0") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "0xDEADBEEF") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "0b10100101") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "0o777") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "2.718280") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "3.1415926536") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "nan") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), " abc ") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&output), "3.140000 Hello 42") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
                              StrBegin(&output)[5] == 'Z' && StrBegin(&output)[6] == '1' && StrBegin(&output)[7] == '2');
    
        StrDeinit(&output);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&output);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return success;
        BitVecDeinit(&bv3);
        BitVecDeinit(&bv_zero);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        IntDeinit(&bin_val);
        IntDeinit(&oct_val);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        FloatDeinit(&sci);
        FloatDeinit(&short_v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        StrWriteFmt(&s, "fresh {}", LVAL(42));
        bool ok = (StrLen(&s) == 8) && (StrBegin(&s)[0] == 'f') && (StrBegin(&s)[StrLen(&s) - 1] == '2');
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && StrBegin(&s)[6] == 'A' && StrBegin(&s)[7] == 'A';
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        BufDeinit(&b);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xab") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && ZstrCompare(StrBegin(&s), "2021-01-01T00:00:00.123456789Z") == 0;
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        FileClose(f);
        FileRemove(path);
        StrDeinit(path);
    }
        bool ok   = (ZstrCompare(StrBegin(&text), expected) == 0);
    
        StrDeinit(&text);
        FloatDeinit(&f);
        DefaultAllocatorDeinit(&alloc);
            FileRead(&f, &back);
            ok = (ZstrCompare(StrBegin(&back), expect) == 0);
            StrDeinit(&back);
            FileClose(&f);
        }
        bool ok = (out != NULL) && (StrLen(&s) == 50);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "   ABxyz") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "hi   ") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "0x0F") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "0x0f") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "0x01 0x02") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "0x05") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "hel") == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&output) == 0);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0x41 0x42") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0x5a") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0xab") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0xAB") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0x05") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "0xfe") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "Hel") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "Hi") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (StrLen(&output) == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "H") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "        abcHi") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "xyHi        ") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "     ") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        Str text = FloatToStr(&val);
        success  = success && (ZstrCompare(StrBegin(&text), "3.5") == 0);
        StrDeinit(&text);
    
        FloatDeinit(&val);
        Str text = FloatToStr(&val);
        success  = success && (ZstrCompare(StrBegin(&text), "12.25") == 0);
        StrDeinit(&text);
    
        FloatDeinit(&val);
        Str text = FloatToStr(&val);
        success  = success && (ZstrCompare(StrBegin(&text), "150") == 0);
        StrDeinit(&text);
    
        FloatDeinit(&val);
        Str text = FloatToStr(&val);
        success  = success && (ZstrCompare(StrBegin(&text), "-0.25") == 0);
        StrDeinit(&text);
    
        FloatDeinit(&val);
        ok = ok && (StrLen(&out) == 5);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&out) == 5);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&out) == 6);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "00042") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&out) == 8);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&out) == 16);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        success = success && float_try_to_decimal_str(&out, &val, 3, true, alloc_base);
        success = success && (ZstrCompare(StrBegin(&out), "12.000") == 0);
        StrDeinit(&out);
    
        FloatDeinit(&val);
        success = success && float_try_to_decimal_str(&out, &val, 0, true, alloc_base);
        success = success && (ZstrCompare(StrBegin(&out), "12") == 0);
        StrDeinit(&out);
    
        FloatDeinit(&val);
        success = success && float_try_to_decimal_str(&out, &val, 3, true, alloc_base);
        success = success && (ZstrCompare(StrBegin(&out), "1.500") == 0);
        StrDeinit(&out);
    
        FloatDeinit(&val);
        success = success && float_try_to_decimal_str(&out, &val, 0, true, alloc_base);
        success = success && (ZstrCompare(StrBegin(&out), "1") == 0);
        StrDeinit(&out);
    
        FloatDeinit(&val);
        success = success && float_try_to_decimal_str(&out, &val, 1, true, alloc_base);
        success = success && (ZstrCompare(StrBegin(&out), "1.2") == 0);
        StrDeinit(&out);
    
        FloatDeinit(&val);
        ok = ok && (ZstrCompare(StrBegin(&output), "1.500000") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "1.500000e+00") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "1.500000E+00") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&output) == 12);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&output), "    XYZ1.500000") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&output) == 12);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "0xff") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "0xFF") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "0b101") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "0o10") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "-42") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "   X42") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "X00042") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        IntDeinit(&a);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
    
        IntDeinit(&a);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
    
        IntDeinit(&seven);
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return success;
        bool ok = !StrAppendFmt(&out, "{", v); // unclosed -> must return false
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "200") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "258") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "65538") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "4294967298") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "4294967298") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (StrLen(&out) > 0); // returns false under the mutant
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "     X:255") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "7    ") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "p00042") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        BitVecDeinit(&bv);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (r == false) && (ZstrCompare(StrBegin(&o), "-----") == 0);
    
        StrDeinit(&o);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (r == true) && (ZstrCompare(StrBegin(&o), "hello") == 0);
    
        StrDeinit(&o);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (r == true) && (ZstrCompare(StrBegin(&o), "12345") == 0);
    
        StrDeinit(&o);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (ZstrCompare(StrBegin(&oct_text), "7") == 0);
    
        StrDeinit(&oct_text);
        IntDeinit(&oct);
        DefaultAllocatorDeinit(&alloc);
        bool ok = (ZstrCompare(StrBegin(&output), "hello") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (StrLen(&output) == 1) && (StrBegin(&output)[0] == 'Q');
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (StrLen(&output) == 4) && (ZstrCompare(StrBegin(&output), "BCDE") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xa1") == 0);
    
        StrDeinit(&src);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&src);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        FloatDeinit(&f);
        FloatDeinit(&g);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "0255") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), " abc") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok          = ok && StrBegin(&s)[2] == '1' && StrBegin(&s)[5] == '4';
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "hello") == 0);
    
        StrDeinit(&s);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "3.14") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "00007") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "0000003") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "000000003") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (StrLen(&out) == 9);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok      = ok && (ZstrCompare(StrBegin(&out), "Hello") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
    #define LEAK_WRITE_EPILOGUE()                                                                                          \
        StrDeinit(&out);                                                                                                   \
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);                           \
        DebugAllocatorDeinit(&dbg);                                                                                        \
    // Tear down `out`, then assert no scratch leaked, then deinit the allocator.
    static bool dbg_no_leak(DebugAllocator *dbg, Str *out) {
        StrDeinit(out);
        bool ok = (DebugAllocatorLiveCount(dbg) == 0);
        DebugAllocatorDeinit(dbg);
        StrAppendFmt(&out, "{05}", v);
        bool ok = (ZstrCompare(StrBegin(&out), "00007") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{12}", s);
        ok = ok && (ZstrCompare(StrBegin(&out), "          ab") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{.4}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "3.1416") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        // Real: false; output keeps only the prior "literal" (append stopped).
        bool ok = (rc == false) && (ZstrCompare(StrBegin(&out), "literal") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{05}", v);
        bool ok = (ZstrCompare(StrBegin(&out), "-0007") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{05}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "00123") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{5}", s);
        ok = ok && (ZstrCompare(StrBegin(&out), "  abc") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "a{​{b");
        bool ok = (ZstrCompare(StrBegin(&out), "a{b") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "a}}b");
        bool ok = (ZstrCompare(StrBegin(&out), "a}b") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{x}", v);
        bool ok = (ZstrCompare(StrBegin(&out), "0xab") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool             rc    = StrAppendFmt(&out, "{<2r}", v);
        bool             ok    = rc && (ZstrCompare(StrBegin(&out), "4660") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool             rc    = StrAppendFmt(&out, "{>8r}", v);
        bool             ok    = rc && (ZstrCompare(StrBegin(&out), "72623859790382856") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
                FileRead(&r, &back);
                ok = ok && (ZstrCompare(StrBegin(&back), "n=42\n") == 0);
                StrDeinit(&back);
                FileClose(&r);
            } else {
            FileRemove(&path);
        }
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
                FileRead(&r, &back);
                ok = ok && (ZstrCompare(StrBegin(&back), "X") == 0);
                StrDeinit(&back);
                FileClose(&r);
            } else {
            FileRemove(&path);
        }
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{x}", s);
        bool ok = (ZstrCompare(StrBegin(&out), "0x01 0x4f") == 0);
        StrDeinit(&s);
        return ok && dbg_no_leak(&dbg, &out);
    }
        StrAppendFmt(&out, "{x}", s);
        bool ok = (ZstrCompare(StrBegin(&out), "0x05") == 0);
        StrDeinit(&s);
        return ok && dbg_no_leak(&dbg, &out);
    }
        StrAppendFmt(&out, "{5}", s);
        ok = ok && (ZstrCompare(StrBegin(&out), "   hi") == 0);
        StrDeinit(&s);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        ok = ok && (ZstrCompare(StrBegin(&out), "   hi") == 0);
        StrDeinit(&s);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{5}", s);
        ok = ok && (ZstrCompare(StrBegin(&out), "   hi") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{6}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "    42") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{6}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "   -42") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{c}", v);
        bool ok = (ZstrCompare(StrBegin(&out), "ABCDEFGH") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{}", pinf);
        ok = ok && (ZstrCompare(StrBegin(&out), "inf") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{.2}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "1.50") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&out, "{6.1}", v);
        ok = ok && (ZstrCompare(StrBegin(&out), "   1.5") == 0);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        FloatDeinit(&v);
        FloatDeinit(&w);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "1e+00") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "2e+00") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "3.14159000") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "5.000") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "   1.5") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&out), "   AB1.5") == 0);
        FloatDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "   101") == 0);
        BitVecDeinit(&bv);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "    42") == 0);
        IntDeinit(&v);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        Str            out = StrInit(ALLOCATOR_OF(&dbg));
        bool           ok  = StrAppendFmt(&out, "{x}", s) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        StrDeinit(&s);
        HeapAllocatorDeinit(&sa);
        return ok;
        LEAK_WRITE_PRELUDE();
        ok = ok && StrAppendFmt(&out, "{}", f) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        ok       = ok && (StrLen(&out) > 0);
    
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        ok = ok && (DebugAllocatorLiveBytes(&dbg) == 0);
        LEAK_WRITE_PRELUDE();
        ok = ok && StrAppendFmt(&out, "{}", s) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        StrDeinit(&s);
        HeapAllocatorDeinit(&va);
        return ok;
        LEAK_WRITE_PRELUDE();
        ok = ok && StrAppendFmt(&out, "{}", v) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        LEAK_WRITE_PRELUDE();
        ok = ok && StrAppendFmt(&out, "{}", v) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        LEAK_WRITE_PRELUDE();
        ok = ok && StrAppendFmt(&out, "{}", v) && (StrLen(&out) > 0);
        StrDeinit(&out);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0) && (DebugAllocatorLiveBytes(&dbg) == 0);
        DebugAllocatorDeinit(&dbg);
        FileClose(f);
        FileRemove(path);
        StrDeinit(path);
    }
        Str expected = StrInitFromZstr("Hello", &alloc);
        success      = success && (StrCmp(&s, &expected) == 0);
        StrDeinit(&expected);
        StrClear(&s);
        expected = StrInitFromZstr("Hello, World!", &alloc);
        success  = success && (StrCmp(&s, &expected) == 0);
        StrDeinit(&expected);
    
        {
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        Str expected = StrInitFromZstr("Alice", &alloc);
        success      = success && (StrCmp(&name, &expected) == 0);
        StrDeinit(&expected);
        StrClear(&name);
        expected = StrInitFromZstr("Bob", &alloc);
        success  = success && (StrCmp(&name, &expected) == 0);
        StrDeinit(&expected);
    
        StrDeinit(&name);
        StrDeinit(&expected);
    
        StrDeinit(&name);
        DefaultAllocatorDeinit(&alloc);
        WriteFmt("str_val test: comparing with 'Hello', pass = {}\n", str_pass ? "true" : "false");
        success = success && str_pass;
        StrDeinit(&expected);
        StrDeinit(&str_val);
        success = success && str_pass;
        StrDeinit(&expected);
        StrDeinit(&str_val);
    
        str_val = StrInit(&alloc);
        WriteFmt("quoted str_val test: comparing with 'World', pass = {}\n", quoted_str_pass ? "true" : "false");
        success = success && quoted_str_pass;
        StrDeinit(&expected);
        StrDeinit(&str_val);
        success = success && quoted_str_pass;
        StrDeinit(&expected);
        StrDeinit(&str_val);
    
        WriteFmt("Overall success: {}\n", success ? "true" : "false");
            success = success && test1_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            success = success && test1_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            success = success && test2_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            success = success && test2_pass;
    
            StrDeinit(&result1);
            StrDeinit(&result2);
        }
    
            StrDeinit(&result1);
            StrDeinit(&result2);
        }
            success = success && test2_pass;
    
            StrDeinit(&result1);
            StrDeinit(&result2);
        }
    
            StrDeinit(&result1);
            StrDeinit(&result2);
        }
            success = success && test3_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            success = success && test4_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            success = success && test5_pass;
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
    
            StrDeinit(&expected);
            StrDeinit(&result);
        }
            (ZstrCompare(StrBegin(&result1), "10110") == 0) ? "true" : "false"
        );
        StrDeinit(&result1);
        BitVecDeinit(&bv1);
            (ZstrCompare(StrBegin(&result4), "1101") == 0) ? "true" : "false"
        );
        StrDeinit(&result4);
        BitVecDeinit(&bv4);
            (ZstrCompare(StrBegin(&result5), "0") == 0) ? "true" : "false"
        );
        StrDeinit(&result5);
        BitVecDeinit(&bv5);
        success  = success && (ZstrCompare(StrBegin(&oct_text), "755") == 0);
    
        StrDeinit(&dec_text);
        StrDeinit(&hex_text);
        StrDeinit(&bin_text);
    
        StrDeinit(&dec_text);
        StrDeinit(&hex_text);
        StrDeinit(&bin_text);
        StrDeinit(&oct_text);
        StrDeinit(&dec_text);
        StrDeinit(&hex_text);
        StrDeinit(&bin_text);
        StrDeinit(&oct_text);
        IntDeinit(&dec);
        StrDeinit(&hex_text);
        StrDeinit(&bin_text);
        StrDeinit(&oct_text);
        IntDeinit(&dec);
        IntDeinit(&hex);
        success  = success && (ZstrCompare(StrBegin(&neg_text), "-0.00125") == 0);
    
        StrDeinit(&dec_text);
        StrDeinit(&sci_text);
        StrDeinit(&neg_text);
    
        StrDeinit(&dec_text);
        StrDeinit(&sci_text);
        StrDeinit(&neg_text);
        FloatDeinit(&dec);
        StrDeinit(&dec_text);
        StrDeinit(&sci_text);
        StrDeinit(&neg_text);
        FloatDeinit(&dec);
        FloatDeinit(&sci);
        ok      = ok && (ZstrCompare(StrBegin(&out), "}") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok = (ZstrCompare(StrBegin(&output), "\\x1a\\xe0") == 0);
    
        StrDeinit(&output);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 3) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 1) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 1) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 3) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 1) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool ok       = (StrLen(&s) == 1) && (StrCmp(&s, &expected) == 0);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&expected);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\x12") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\x90") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xab") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xcd") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xAB") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xCD") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && (ZstrCompare(StrBegin(&out), "\\xb1") == 0);
    
        StrDeinit(&out);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrReadFmt(p, "{}#", out);
        bool ok = (StrLen(&out) == 2) && (StrBegin(&out)[0] == '\n') && (StrBegin(&<