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(&out)[1] == '\n');
        StrDeinit(&out);
        DefaultAllocatorDeinit(&a);
        return ok;
        StrReadFmt(p, "{s}", out);
        bool ok = (StrLen(&out) == 50);
        StrDeinit(&out);
        DefaultAllocatorDeinit(&a);
        return ok;
        Str  t  = FloatToStr(&f);
        bool ok = (ZstrCompare(StrBegin(&t), expect) == 0);
        StrDeinit(&t);
        FloatDeinit(&f);
        DefaultAllocatorDeinit(&alloc);
        Zstr             out   = READ1(in, "{s}", TO_TYPE_SPECIFIC_IO(Str, &s));
        bool             ok    = (out != NULL) && (StrLen(&s) == 50);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        Str  t  = IntToStr(&v);
        bool ok = (ZstrCompare(StrBegin(&t), "12345") == 0);
        StrDeinit(&t);
        IntDeinit(&v);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        Str  t  = IntToStr(&v);
        bool ok = (ZstrCompare(StrBegin(&t), "99") == 0);
        StrDeinit(&t);
        IntDeinit(&v);
        DefaultAllocatorDeinit(&alloc);
        Str  t  = IntToStr(&v);
        bool ok = (ZstrCompare(StrBegin(&t), "255") == 0);
        StrDeinit(&t);
        IntDeinit(&v);
        DefaultAllocatorDeinit(&alloc);
        Str  t  = IntToStr(&v);
        bool ok = (out == NULL) && (ZstrCompare(StrBegin(&t), "777") == 0);
        StrDeinit(&t);
        IntDeinit(&v);
        DefaultAllocatorDeinit(&alloc);
        Str  t  = FloatToStr(&f);
        bool ok = (ZstrCompare(StrBegin(&t), "3.14159") == 0);
        StrDeinit(&t);
        FloatDeinit(&f);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
        Str  t   = FloatToStr(&f);
        bool ok  = (out == NULL) && (ZstrCompare(StrBegin(&t), "42") == 0);
        StrDeinit(&t);
        FloatDeinit(&f);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
            FileRemove(&path);
        }
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
            FileRemove(&path);
        }
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        result   = result && (cmp5 != 0);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        StrDeinit(&s3);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        StrDeinit(&s3);
        StrDeinit(&s4);
        StrDeinit(&s1);
        StrDeinit(&s2);
        StrDeinit(&s3);
        StrDeinit(&s4);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s2);
        StrDeinit(&s3);
        StrDeinit(&s4);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (found5 != NULL && ZstrCompareN(found5, "World", 3) == 0);
    
        StrDeinit(&haystack);
        StrDeinit(&needle1);
        StrDeinit(&needle2);
    
        StrDeinit(&haystack);
        StrDeinit(&needle1);
        StrDeinit(&needle2);
        StrDeinit(&needle3);
        StrDeinit(&haystack);
        StrDeinit(&needle1);
        StrDeinit(&needle2);
        StrDeinit(&needle3);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&needle1);
        StrDeinit(&needle2);
        StrDeinit(&needle3);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result      = result && (StrIndexOf(&haystack, "") == 0);
    
        StrDeinit(&haystack);
        StrDeinit(&needle);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&haystack);
        StrDeinit(&needle);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && !StrEndsWith(&s, "ello", 4);
    
        StrDeinit(&s);
        StrDeinit(&prefix);
        StrDeinit(&suffix);
    
        StrDeinit(&s);
        StrDeinit(&prefix);
        StrDeinit(&suffix);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s);
        StrDeinit(&prefix);
        StrDeinit(&suffix);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Test multiple replacements
        StrDeinit(&s1);
        s1 = StrInitFromZstr("Hello Hello Hello", &alloc);
        StrReplace(&s1, "Hello", "Hi", 2);
    
        // Test Cstr-form (fixed-length views) - use the full "World" string instead of just "Wo"
        StrDeinit(&s1);
        s1 = StrInitFromZstr("Hello World", &alloc);
        StrReplace(&s1, "World", 5, "Universe", 8, 1);
    
        // Test Str-form
        StrDeinit(&s1);
        s1          = StrInitFromZstr("Hello World", &alloc);
        Str find    = StrInitFromZstr("World", &alloc);
        result = result && (ZstrCompare(StrBegin(&s1), "Hello Universe") == 0);
    
        StrDeinit(&s1);
        StrDeinit(&find);
        StrDeinit(&replace);
    
        StrDeinit(&s1);
        StrDeinit(&find);
        StrDeinit(&replace);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s1);
        StrDeinit(&find);
        StrDeinit(&replace);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        VecDeinit(&iters);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        Str  stripped = StrLStrip(&s1, NULL);
        bool result   = (ZstrCompare(StrBegin(&stripped), "Hello  ") == 0);
        StrDeinit(&stripped);
    
        // Test StrRStrip
        stripped = StrRStrip(&s1, NULL);
        result   = result && (ZstrCompare(StrBegin(&stripped), "  Hello") == 0);
        StrDeinit(&stripped);
    
        // Test StrStrip
        stripped = StrStrip(&s1, NULL);
        result   = result && (ZstrCompare(StrBegin(&stripped), "Hello") == 0);
        StrDeinit(&stripped);
    
        // Test with custom strip characters
    
        // Test with custom strip characters
        StrDeinit(&s1);
        s1 = StrInitFromZstr("***Hello***", &alloc);
        stripped = StrLStrip(&s1, "*");
        result   = result && (ZstrCompare(StrBegin(&stripped), "Hello***") == 0);
        StrDeinit(&stripped);
    
        stripped = StrRStrip(&s1, "*");
        stripped = StrRStrip(&s1, "*");
        result   = result && (ZstrCompare(StrBegin(&stripped), "***Hello") == 0);
        StrDeinit(&stripped);
    
        stripped = StrStrip(&s1, "*");
        stripped = StrStrip(&s1, "*");
        result   = result && (ZstrCompare(StrBegin(&stripped), "Hello") == 0);
        StrDeinit(&stripped);
    
        StrDeinit(&s1);
        StrDeinit(&stripped);
    
        StrDeinit(&s1);
        DefaultAllocatorDeinit(&alloc);
        return result;
        ok              = ok && StrCmpIgnoreCase(&non_ascii_a, &non_ascii_b) == 0;
    
        StrDeinit(&hello_lc);
        StrDeinit(&hello_uc);
        StrDeinit(&hello_mc);
    
        StrDeinit(&hello_lc);
        StrDeinit(&hello_uc);
        StrDeinit(&hello_mc);
        StrDeinit(&world);
        StrDeinit(&hello_lc);
        StrDeinit(&hello_uc);
        StrDeinit(&hello_mc);
        StrDeinit(&world);
        StrDeinit(&hello_x);
        StrDeinit(&hello_uc);
        StrDeinit(&hello_mc);
        StrDeinit(&world);
        StrDeinit(&hello_x);
        StrDeinit(&non_ascii_a);
        StrDeinit(&hello_mc);
        StrDeinit(&world);
        StrDeinit(&hello_x);
        StrDeinit(&non_ascii_a);
        StrDeinit(&non_ascii_b);
        StrDeinit(&world);
        StrDeinit(&hello_x);
        StrDeinit(&non_ascii_a);
        StrDeinit(&non_ascii_b);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&hello_x);
        StrDeinit(&non_ascii_a);
        StrDeinit(&non_ascii_b);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        bool result = match && (no_match == false);
    
        StrDeinit(&s);
        StrDeinit(&suffix);
        StrDeinit(&nonsuffix);
    
        StrDeinit(&s);
        StrDeinit(&suffix);
        StrDeinit(&nonsuffix);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s);
        StrDeinit(&suffix);
        StrDeinit(&nonsuffix);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrLen(&stripped) == 0);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrLen(&stripped) == 0);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrLen(&stripped) == 1) && (ZstrCompare(StrBegin(&stripped), "x") == 0);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&stripped);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrContains(&haystack, &needle) == false);
    
        StrDeinit(&needle);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&needle);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrContains(&haystack, &present) == true) && (StrContains(&haystack, &absent) == false);
    
        StrDeinit(&absent);
        StrDeinit(&present);
        StrDeinit(&haystack);
    
        StrDeinit(&absent);
        StrDeinit(&present);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&absent);
        StrDeinit(&present);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result   = (StrContains(&haystack, "missing") == false);
    
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        VecDeinit(&iters);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        VecDeinit(&split);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        VecDeinit(&split);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&hello);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&a);
        StrDeinit(&b);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&a);
        StrDeinit(&b);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        StrDeinit(&prefix);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&prefix);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        Str stripped              = StrStrip(&s, NULL);
    
        StrDeinit(&stripped);
        GENERIC_VEC(&s)->__magic ^= 0x1;
        StrDeinit(&s);
        StrDeinit(&stripped);
        GENERIC_VEC(&s)->__magic ^= 0x1;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return false;
    
        GENERIC_VEC(&key)->__magic ^= 0x1;
        StrDeinit(&key);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        GENERIC_VEC(&key)->__magic ^= 0x1;
        StrDeinit(&key);
        StrDeinit(&haystack);
        DefaultAllocatorDeinit(&alloc);
        return false;
        VecDeinit(&iters);
        GENERIC_VEC(&s)->__magic ^= 0x1;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return false;
    
        GENERIC_VEC(&s)->__magic ^= 0x1;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return false;
        GENERIC_VEC(VecPtrAt(&strs, 0))->__magic ^= 0x1;
        VecDeinit(&strs);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return false;
        (void)str_compare(&a, &b); // expected to abort on real code via ValidateStr(a)
    
        StrDeinit(&b);
        DefaultAllocatorDeinit(&alloc);
        return false;
        (void)str_compare(&a, &b);
    
        StrDeinit(&a);
        DefaultAllocatorDeinit(&alloc);
        return false;
        (void)StrCmpIgnoreCase(&s, &other);
    
        StrDeinit(&other);
        DefaultAllocatorDeinit(&alloc);
        return false;
        (void)StrCmpIgnoreCase(&s, &other);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return false;
        (void)StrStartsWith(&s, &prefix);
    
        StrDeinit(&prefix);
        DefaultAllocatorDeinit(&alloc);
        return false;
        result = result && (StrCapacity(&s) < 100) && (StrCapacity(&s) >= StrLen(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrBegin(&s)[1] == 'l' && StrBegin(&s)[2] == 'e');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrLen(&s) == 8) && (ZstrCompareN(StrBegin(&s), "Hel", 3) == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrCapacity(&s) >= 100);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrBegin(&s) != NULL);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Test with an even-length string
        StrDeinit(&s);
        s = StrInitFromZstr("abcd", &alloc);
    
        // Test with a single-character string
        StrDeinit(&s);
        s = StrInitFromZstr("a", &alloc);
    
        // Test with an empty string
        StrDeinit(&s);
        s = StrInit(&alloc);
        result = result && (StrLen(&s) == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&s) == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&s) == len && ZstrCompareN(StrBegin(&s), test_str, len) == 0 && StrBegin(&s)[len] == '\0');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&s) == ZstrLen(test_str) && ZstrCompare(StrBegin(&s), test_str) == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&s) == ZstrLen(test_str) && ZstrCompare(StrBegin(&s), test_str) == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&dst) == StrLen(&src) && ZstrCompare(StrBegin(&dst), StrBegin(&src)) == 0);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&dst) == StrLen(&src) && ZstrCompare(StrBegin(&dst), StrBegin(&src)) == 0);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello, World!") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (success && StrLen(&dst) == StrLen(&src) && ZstrCompare(StrBegin(&dst), StrBegin(&src)) == 0);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&src);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
        return result;
                      ZstrCompare(StrBegin(&dst), StrBegin(&src)) == 0 && dup_allocator_matches && dst_allocator_matches;
    
        StrDeinit(&src);
        StrDeinit(&dup);
        StrDeinit(&dst);
    
        StrDeinit(&src);
        StrDeinit(&dup);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&src);
        StrDeinit(&dup);
        StrDeinit(&dst);
        DefaultAllocatorDeinit(&alloc);
        return result;
    // Test StrDeinit function
    bool test_str_deinit(void) {
        WriteFmt("Testing StrDeinit\n");
    
        DefaultAllocator alloc = DefaultAllocatorInit();
    
        // Deinit the string
        StrDeinit(&s);
    
        // Check that the string is deinited correctly
        bool pass = produced && after == before;
    
        StrDeinit(&s);
        DebugAllocatorDeinit(&dbg);
        return pass;
    // under the mutant (Str.Mutants7).
    static bool test_deinit_frees_buffer(void) {
        WriteFmt("Testing StrDeinit releases the backing allocation\n");
        DebugAllocator dbg  = DebugAllocatorInit();
        Allocator     *adbg = ALLOCATOR_OF(&dbg);
    
        Str s = StrInitFromZstr("hello world", adbg);
        StrDeinit(&s);
    
        bool result = (DebugAllocatorLiveCount(&dbg) == 0);
        bool result = (DebugAllocatorLiveCount(&dbg) == 0);
        if (!result) {
            WriteFmt("    FAIL: Expected 0 live allocations after StrDeinit\n");
        }
        result = result && (ZstrCompare(StrBegin(&s), "?He!llo.") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "He Worldllo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "He Worldllo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "He Worldllo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "He Worldllo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrLen(&s2) == 0 && StrBegin(&s2) == NULL);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrLen(&s2) == 6 && ZstrCompare(StrBegin(&s2), " World") == 0);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (StrLen(&s2) == 0 && StrBegin(&s2) == NULL);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s1);
        StrDeinit(&s2);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "Hello World 2023") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (StrLen(&s) == 5 && ZstrCompare(StrBegin(&s), "Hello") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Create a Strs object (vector of strings)
        Strs sv = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        // Add some strings
        }
    
        VecDeinit(&sv); // This should call StrDeinit on each element
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = true; // If we got here, the validation didn't crash
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Hel") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "llo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Hlo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Hell") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Hel") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Hlo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "Heo") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && (ZstrCompare(StrBegin(&s), "nan") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Test hexadecimal conversion with explicit base
        StrDeinit(&s);
        s                     = StrInitFromZstr("ABCD", &alloc); // No 0x prefix when base is explicitly 16
        StrParseConfig config = {.base = 16};
    
        // Test hexadecimal conversion (auto-detect base with 0)
        StrDeinit(&s);
        s       = StrInitFromZstr("0xABCD", &alloc);
        success = StrToU64(&s, &value, NULL);
    
        // Test binary conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("0b101010", &alloc);
        success = StrToU64(&s, &value, NULL);
    
        // Test octal conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("0o52", &alloc);
        success = StrToU64(&s, &value, NULL);
    
        // Test zero
        StrDeinit(&s);
        s       = StrInitFromZstr("0", &alloc);
        success = StrToU64(&s, &value, NULL);
    
        // Test invalid input
        StrDeinit(&s);
        s       = StrInitFromZstr("not a number", &alloc);
        success = StrToU64(&s, &value, NULL);
    
        // Test negative number (should fail for unsigned)
        StrDeinit(&s);
        s       = StrInitFromZstr("-123", &alloc);
        success = StrToU64(&s, &value, NULL);
        result  = result && (!success);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Test negative decimal conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("-12345", &alloc);
        success = StrToI64(&s, &value, NULL);
    
        // Test hexadecimal conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("0xABCD", &alloc);
        success = StrToI64(&s, &value, NULL);
    
        // Test binary conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("0b101010", &alloc);
        success = StrToI64(&s, &value, NULL);
    
        // Test zero
        StrDeinit(&s);
        s       = StrInitFromZstr("0", &alloc);
        success = StrToI64(&s, &value, NULL);
    
        // Test invalid input
        StrDeinit(&s);
        s       = StrInitFromZstr("not a number", &alloc);
        success = StrToI64(&s, &value, NULL);
        result  = result && (!success);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
    
        // Test fractional conversion
        StrDeinit(&s);
        s       = StrInitFromZstr("123.456", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test negative number
        StrDeinit(&s);
        s       = StrInitFromZstr("-123.456", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test scientific notation
        StrDeinit(&s);
        s       = StrInitFromZstr("1.23e2", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test zero
        StrDeinit(&s);
        s       = StrInitFromZstr("0", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test infinity
        StrDeinit(&s);
        s       = StrInitFromZstr("inf", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test negative infinity
        StrDeinit(&s);
        s       = StrInitFromZstr("-inf", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test NaN
        StrDeinit(&s);
        s       = StrInitFromZstr("nan", &alloc);
        success = StrToF64(&s, &value, NULL);
    
        // Test invalid input
        StrDeinit(&s);
        s       = StrInitFromZstr("not a number", &alloc);
        success = StrToF64(&s, &value, NULL);
        result  = result && (!success);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            result        = result && success && (recovered_u64 == u64_values[i]);
    
            StrDeinit(&s);
        }
            result             = result && success && (recovered_i64 == i64_values[i]);
    
            StrDeinit(&s);
        }
                result        = result && success && (F64Abs(recovered_f64 - f64_values[i]) < tolerance);
    
                StrDeinit(&s);
            }
        }
            result                      = result && success && (recovered == base);
    
            StrDeinit(&s);
        }
        result              = result && success && (recovered_large > 1e299);
    
        StrDeinit(&s);
    
        // Test prefix handling
            bool           success  = StrToU64(&test_str, &value, prefix_tests[i].base == 0 ? NULL : &config);
            result                  = result && success && (value == prefix_tests[i].expected);
            StrDeinit(&test_str);
        }
            }
    
            StrDeinit(&s);
        }
            result     = result && has_E;
    
            StrDeinit(&s);
        }
            result                   = result && success && (recovered == large_value);
    
            StrDeinit(&s);
        }
            result = result && success && (recovered == test_value);
    
            StrDeinit(&s);
        }
            result = result && success && (recovered == test_value);
    
            StrDeinit(&s);
        }
                result = result && success && (recovered == test_values[i]);
    
                StrDeinit(&s);
    
                if (!result)
            result         = result && success && (recovered == test_value);
    
            StrDeinit(&s);
    
            if (!result)
                result = result && success && (F64Abs(recovered - test_value) < tolerance);
    
                StrDeinit(&s);
    
                if (!result)
        result = result && (success || !success); // Either succeeds or fails gracefully
    
        StrDeinit(&long_str);
    
        DefaultAllocatorDeinit(&alloc);
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 1.5) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 1.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64IsNan(value);
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64IsInf(value) && value > 0;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - (-5.0)) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 5.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 42.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 0.5) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL); // non-strict default
        bool             pass  = ok && F64Abs(value - 5.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 0.01) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToF64(&s, &value, NULL);
        bool             pass  = ok && F64Abs(value - 100000.0) < 1e-6;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok     = StrToF64(&s, &value, &config);
        bool             pass   = ok && F64Abs(value - 5.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok     = StrToF64(&s, &value, &config);
        bool             pass   = ok && F64Abs(value - 5.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok     = StrToF64(&s, &value, &config);
        bool             pass   = ok && F64Abs(value - 5.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok     = StrToF64(&s, &value, &config);
        bool             pass   = ok && F64Abs(value - 42.0) < 1e-9;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool           result = (!ok);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool           result = (ok && value == 255);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ok && value == 5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (!ok);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (!ok);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool           result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool           result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool           result = (!ok);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool           result = (ok && value == 42);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected len 3 \"nan\", got len {} \"{}\"\n", StrLen(&s), StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected len 3 \"inf\", got len {} \"{}\"\n", StrLen(&s), StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"0.000100\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"1.00e+07\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"5e+00\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"5.00e+00\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected handle + \"1.23e+02\", got null={} \"{}\"\n", (r == NULL), StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected handle + \"123.00\", got null={} \"{}\"\n", (r == NULL), StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"123\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"123.456\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
            WriteFmt("    FAIL: expected \"0.124\", got \"{}\"\n", StrBegin(&s));
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 31;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 5;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 5;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 1;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 1;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 7;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 7;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 7;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 31;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 31;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool             ok    = StrToU64(&s, &out, &cfg);
        bool             pass  = ok && out == 31;
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return pass;
        bool result  = success && (value == -5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = success && (value == 5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = success && (value == -5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = success && (value == 5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = success && (value == 0) && (StrLen(&s) == 43);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result  = success && (value == INT64_MIN);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (success == false);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ZstrCompare(StrBegin(&s), "-9223372036854775808") == 0);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        }
    
        StrDeinit(&s);
        BudgetAllocatorDeinit(&bp);
        return result;
        }
    
        StrDeinit(&s);
        BudgetAllocatorDeinit(&bp);
        return result;
        }
    
        StrDeinit(&s);
        BudgetAllocatorDeinit(&bp);
        return result;
        bool result = ok && (value == 5);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (ok == false);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool success = (ZstrCompare(StrBegin(&result), "H0e1l2l3o4") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        WriteFmt("  (Index 0 was processed)\n");
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&s), "HELLO") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        WriteFmt("  (Index 0 was processed)\n");
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        bool success = (ZstrCompare(StrBegin(&result), "Hello") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&s), "HELLO") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (StrLen(&empty_result) == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&empty_result);
    
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&empty_result);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&empty_result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&end_result), "World") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&end_result);
    
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&end_result);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&s);
        StrDeinit(&result);
        StrDeinit(&end_result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&s), "Hello WORLD") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
        success = success && (ZstrCompare(StrBegin(&s), "HELLO World") == 0);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&s);
        StrDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        return success;
            if (idx > 4) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx >= 5) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx < 10) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx > 4) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx < 12) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx >= StrLen(&s)) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
            if (idx > 3) {
                LOG_ERROR("Should've terminated");
                StrDeinit(&s);
                DefaultAllocatorDeinit(&alloc);
                return false;
        }
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return true;
        result = result && StrEmpty(&s);
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (first == 'H');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (last == 'o');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (*begin == 'H');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (*end == '\0');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (c0 == 'H' && c1 == 'e' && c2 == 'l' && c3 == 'l' && c4 == 'o');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
        bool result = (*p0 == 'H' && *p1 == 'e' && *p2 == 'l' && *p3 == 'l' && *p4 == 'o');
    
        StrDeinit(&s);
        DefaultAllocatorDeinit(&alloc);
        return result;
                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(skip_si)) == StrIterIndex(&si)) {                                               \
                        LOG_ERROR("Failed to parse value. Invalid JSON.");                                                 \
                        StrDeinit(&key);                                                                                   \
                        UNPL(failed) = true;                                                                               \
                        si           = UNPL(saved_si);                                                                     \
                    si = UNPL(skip_si);                                                                                    \
                }                                                                                                          \
                StrDeinit(&key);                                                                                           \
                si                 = JSkipWhitespace(si);                                                                  \
                UNPL(expect_comma) = true;                                                                                 \
    #endif
    
        StrDeinit(&rendered);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        ok = ok && ZstrFindSubstring(StrBegin(&rendered), "bt_vec_capture_outer") != NULL;
    
        StrDeinit(&rendered);
        VecDeinit(&frames);
        DefaultAllocatorDeinit(&alloc);
        bool ok = StrLen(&out) > 0 && ZstrFindSubstring(StrBegin(&out), "bt_capture_with_helper") != NULL;
    
        StrDeinit(&out);
        SymbolResolverDeinit(&res);
        DefaultAllocatorDeinit(&alloc);
        ok      = ok && ZstrFindSubstring(StrBegin(&rendered), "cfi_capture_outer") != NULL;
    
        StrDeinit(&rendered);
        SymbolResolverDeinit(&res);
        DefaultAllocatorDeinit(&alloc);
        Str  s  = SocketAddrFormat(ad, a);
        bool ok = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), expect) == 0;
        StrDeinit(&s);
        return ok;
    }
        Str  s  = SocketAddrFormat(ad, a);
        bool ok = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), expect) == 0;
        StrDeinit(&s);
        return ok;
    }
    static void drop_temp(Str *path) {
        FileRemove(path);
        StrDeinit(path);
    }
        Str  s  = SocketAddrFormat(VecPtrAt(&r->nameservers, i), a);
        bool ok = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), expect) == 0;
        StrDeinit(&s);
        return ok;
    }
            Str s = SocketAddrFormat(VecPtrAt(&out, 0), a);
            ok    = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), "203.0.113.7:9999") == 0;
            StrDeinit(&s);
        }
            Str s = SocketAddrFormat(VecPtrAt(&out, 0), a);
            ok    = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), "[::1]:443") == 0;
            StrDeinit(&s);
        }
                    ok = false;
                }
                StrDeinit(&s);
            }
        }
            Str s = SocketAddrFormat(&one, a);
            ok    = (StrLen(&s) > 0) && ZstrCompare(StrBegin(&s), "127.0.0.1:80") == 0;
            StrDeinit(&s);
        }
    
        drop_temp(&path);
        StrDeinit(&body);
        DnsResolverDeinit(&r);
        DefaultAllocatorDeinit(&alloc);
        bool ok = added && VecLen(&r.hosts) == 1 && host_v4_is(find_host(&r.hosts, "lenhost"), 1, 2, 3, 4);
    
        StrDeinit(&smeared);
        drop_temp(&path);
        DnsResolverDeinit(&r);
        FileRemove(&p1);
        VecForeachPtr(&paths, p) {
            StrDeinit(p);
        }
        VecDeinit(&paths);
        FileRemove(&p1);
        VecForeachPtr(&paths, p) {
            StrDeinit(p);
        }
        VecDeinit(&paths);
        FileRemove(&p1);
        VecForeachPtr(&paths, p) {
            StrDeinit(p);
        }
        VecDeinit(&paths);
                  v4_is(VecPtrAt(&out, 1), a, "9.10.11.12:7000");
    
        StrDeinit(&name);
        VecDeinit(&out);
        DnsResolverDeinit(&r);
                  v4_is(VecPtrAt(&out, 1), a, "9.10.11.12:8080");
    
        StrDeinit(&spec);
        VecDeinit(&out);
        DnsResolverDeinit(&r);
        bool ok = got && v4_is(&one, a, "5.6.7.8:80");
    
        StrDeinit(&spec);
        DnsResolverDeinit(&r);
        DefaultAllocatorDeinit(&alloc);
        SocketAddr connect_addr;
        bool       parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
        StrDeinit(&local_str);
        if (!parsed) {
            ListenerClose(&listener);
            Str rendered = SocketAddrFormat(&addr, alloc_base);
            ok           = ok && StrLen(&rendered) > 0 && ZstrCompare(StrBegin(&rendered), "127.0.0.1:8080") == 0;
            StrDeinit(&rendered);
        }
            Str rendered = SocketAddrFormat(&addr, alloc_base);
            ok           = ok && StrLen(&rendered) > 0 && ZstrCompare(StrBegin(&rendered), "[::1]:8080") == 0;
            StrDeinit(&rendered);
        }
        SocketAddr connect_addr;
        bool       parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
        StrDeinit(&local_str);
        if (!parsed) {
            ListenerClose(&p.listener);
            Str r = SocketAddrFormat(&addr, a);
            ok    = StrLen(&r) > 0 && ZstrCompare(StrBegin(&r), expect) == 0;
            StrDeinit(&r);
        }
        Str s = SocketAddrFormat(&addr, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompare(StrBegin(&s), "1.2.3.4:80") == 0;
        StrDeinit(&s);
    
        DefaultAllocatorDeinit(&alloc);
        Str s = SocketAddrFormat(&addr, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompare(StrBegin(&s), "10.0.0.1:4660") == 0;
        StrDeinit(&s);
    
        DefaultAllocatorDeinit(&alloc);
        Str s = SocketAddrFormat(&addr, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompare(StrBegin(&s), "[2001:db8::1]:443") == 0;
        StrDeinit(&s);
    
        DefaultAllocatorDeinit(&alloc);
        Str s = SocketAddrFormat(&addr, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompare(StrBegin(&s), "[::1]:8080") == 0;
        StrDeinit(&s);
    
        DefaultAllocatorDeinit(&alloc);
        Str s = SocketAddrFormat(&local, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompare(StrBegin(&s), "127.0.0.1:4660") == 0;
        StrDeinit(&s);
    
        ListenerClose(&listener);
            ok = ok && ZstrCompare(rendered, "127.0.0.1:0") != 0;
        }
        StrDeinit(&s);
    
        ListenerClose(&listener);
        SocketAddr connect_addr;
        bool       parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
        StrDeinit(&local_str);
        if (!parsed) {
            ListenerClose(&listener);
        SocketAddr connect_addr;
        bool       parsed = SocketAddrParse(&connect_addr, (Zstr)StrBegin(&local_str), SOCKET_KIND_TCP);
        StrDeinit(&local_str);
        if (!parsed) {
            ListenerClose(listener);
            Zstr p    = StrBegin(&peer);
            ok        = ok && StrLen(&peer) > 0 && p[0] == '1' && p[1] == '2' && p[2] == '7' && p[3] == '.';
            StrDeinit(&peer);
        }
        Zstr r = StrBegin(&rendered);
        ok     = ok && r[0] == '1' && r[1] == '2' && r[2] == '7' && r[3] == '.';
        StrDeinit(&rendered);
    
        SocketClose(&server);
                Str r = SocketAddrFormat(&addr, a);
                ok    = ok && ZstrCompare(StrBegin(&r), "127.0.0.1:65535") == 0;
                StrDeinit(&r);
            }
        }
                Str r = SocketAddrFormat(&addr, a);
                ok    = ok && ZstrCompare(StrBegin(&r), "127.0.0.1:0") == 0;
                StrDeinit(&r);
            }
        }
                Str r = SocketAddrFormat(&addr, a);
                ok    = ok && ZstrCompare(StrBegin(&r), "1.2.3.4:4660") == 0;
                StrDeinit(&r);
            }
        }
            Str r = SocketAddrFormat(&addr, a);
            ok    = ok && ZstrCompare(StrBegin(&r), "1.2.3.4:4660") == 0;
            StrDeinit(&r);
        }
        StrDeinit(&spec);
            StrDeinit(&r);
        }
        StrDeinit(&spec);
    
        // NULL spec -> rejected, out zeroed.
            Str        r     = SocketAddrFormat(&empty, a);
            ok               = ok && StrLen(&r) == 0;
            StrDeinit(&r);
        }
                Str r = SocketAddrFormat(&addr, a);
                ok    = ok && ZstrCompare(StrBegin(&r), "[::1]:4660") == 0;
                StrDeinit(&r);
            }
        }
            Str r = SocketAddrFormat(&addr, a);
            ok    = StrLen(&r) > 0 && ZstrCompare(StrBegin(&r), expect) == 0;
            StrDeinit(&r);
        }
        Str s = SocketAddrFormat(&local, a);
        ok    = ok && StrLen(&s) > 0 && ZstrCompareN(StrBegin(&s), "127.0.0.1:", 10u) == 0;
        StrDeinit(&s);
    
        ListenerClose(&listener);
        ok   = ok && !MachoCacheResolve(&cache, &mod, 0, 0xdeadbeefull, &name, &off);
    
        StrDeinit(&mod);
        MachoCacheDeinit(&cache);
        FileRemove(bin_path);
        File f    = FileOpenTemp(&path, base);
        if (!FileIsOpen(&f)) {
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
        if (FileWriteAndClose((Zstr)StrBegin(&path), blob, sizeof(blob)) < 0) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        File f    = FileOpenTemp(&path, base);
        if (!FileIsOpen(&f)) {
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
        if (FileWriteAndClose((Zstr)StrBegin(&path), junk, sizeof(junk)) < 0) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return !opened;
    
        VecDeinit(&buf);
        StrDeinit(&name);
        DefaultAllocatorDeinit(&alloc);
        return match;
        if (!wrote_ok) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
        if (!FileIsOpen(&rf)) {
            FileRemove(&path);
            StrDeinit(&path);
            DefaultAllocatorDeinit(&alloc);
            return false;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
        StrAppendFmt(&body, "<h1>hi</h1>");
        HttpRespondWithHtml(&response, HTTP_RESPONSE_CODE_OK, &body);
        StrDeinit(&body);
    
        Str wire = HttpResponseSerialize(&response, alloc_base);
                  ZstrFindSubstring(StrBegin(&wire), "\r\n\r\n<h1>hi</h1>") != NULL;
    
        StrDeinit(&wire);
        HttpResponseDeinit(&response);
        DefaultAllocatorDeinit(&alloc);
    
        HttpRequestDeinit(&req);
        StrDeinit(&raw);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        HttpRequestDeinit(&req);
        StrDeinit(&raw);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(StrBegin(&path));
        StrDeinit(&path);
        HttpResponseDeinit(&response);
        DefaultAllocatorDeinit(&alloc);
    
        FileRemove(StrBegin(&path));
        StrDeinit(&path);
        HttpResponseDeinit(&response);
        DefaultAllocatorDeinit(&alloc);
        HttpRespondWithHtml(&response, HTTP_RESPONSE_CODE_OK, &second);
    
        StrDeinit(&first);
        StrDeinit(&second);
        HttpResponseDeinit(&response);
    
        StrDeinit(&first);
        StrDeinit(&second);
        HttpResponseDeinit(&response);
        bool ok = (DebugAllocatorLiveCount(&dbg) == 0);
        HttpResponse response = HttpResponseInit(adbg);
        HttpRespondWithHtml(&response, HTTP_RESPONSE_CODE_OK, &first);
        StrDeinit(&first);
    
        // Create a temp file with content.
    
        FileRemove(StrBegin(&path));
        StrDeinit(&path);
        HttpResponseDeinit(&response);
        ok = ok && (DebugAllocatorLiveCount(&dbg) == 0);
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    
        FileRemove(&path);
        StrDeinit(&path);
        DefaultAllocatorDeinit(&alloc);
        return ok;
    // Cleanup functions
    void PersonDeinit(Person *person) {
        StrDeinit(&person->name);
    }
    
    void ConfigDeinit(Config *config) {
        StrDeinit(&config->log_level);
    }
    
    void SimpleProductDeinit(SimpleProduct *product) {
        StrDeinit(&product->name);
        VecDeinit(&product->tags);
    }
        }
    
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
    
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        PersonDeinit(&person);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        ConfigDeinit(&config);
        DefaultAllocatorDeinit(&alloc);
        StrIter si      = StrIterFromStr(json);
    
        Vec(Str) languages = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        JR_OBJ(si, {
        }
    
        StrDeinit(&json);
        VecDeinit(&languages);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
    
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
        DefaultAllocatorDeinit(&alloc);
        return success;
        SimpleProduct product = {0};
        product.name          = StrInit(&alloc);
        product.tags          = VecInitWithDeepCopyT(product.tags, NULL, StrDeinit, &alloc);
    
        JR_OBJ(si, {
        }
    
        StrDeinit(&json);
        SimpleProductDeinit(&product);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
    }
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
    
        Vec(i32) empty_numbers = VecInit(&alloc);
        Vec(Str) empty_strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        JW_OBJ(json, {
        }
    
        StrDeinit(&json);
        VecDeinit(&empty_numbers);
        VecDeinit(&empty_strings);
        }
    
        StrDeinit(&json);
        StrDeinit(&empty_name);
        StrDeinit(&empty_desc);
    
        StrDeinit(&json);
        StrDeinit(&empty_name);
        StrDeinit(&empty_desc);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&empty_name);
        StrDeinit(&empty_desc);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        WriteFmtLn("[DEBUG] Large numbers JSON: {}", json);
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&path);
        StrDeinit(&message);
    
        StrDeinit(&json);
        StrDeinit(&path);
        StrDeinit(&message);
        StrDeinit(&data);
        StrDeinit(&json);
        StrDeinit(&path);
        StrDeinit(&message);
        StrDeinit(&data);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&path);
        StrDeinit(&message);
        StrDeinit(&data);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&quotes);
        StrDeinit(&backslash);
    
        StrDeinit(&json);
        StrDeinit(&quotes);
        StrDeinit(&backslash);
        StrDeinit(&newline);
        StrDeinit(&json);
        StrDeinit(&quotes);
        StrDeinit(&backslash);
        StrDeinit(&newline);
        StrDeinit(&tab);
        StrDeinit(&quotes);
        StrDeinit(&backslash);
        StrDeinit(&newline);
        StrDeinit(&tab);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&backslash);
        StrDeinit(&newline);
        StrDeinit(&tab);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        VecDeinit(&empty_list);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        VecDeinit(&empty_arr);
        VecDeinit(&filled_arr);
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
            success = false;
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        StrDeinit(&json3);
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        StrDeinit(&json3);
        StrDeinit(&json4);
        StrDeinit(&json1);
        StrDeinit(&json2);
        StrDeinit(&json3);
        StrDeinit(&json4);
        StrDeinit(&single_str);
        StrDeinit(&json2);
        StrDeinit(&json3);
        StrDeinit(&json4);
        StrDeinit(&single_str);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json3);
        StrDeinit(&json4);
        StrDeinit(&single_str);
        DefaultAllocatorDeinit(&alloc);
        return success;
    // Cleanup functions
    void AnnSymbolDeinit(AnnSymbol *sym) {
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
    void AnnSymbolDeinit(AnnSymbol *sym) {
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
    }
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
    }
    
    void FunctionInfoDeinit(FunctionInfo *info) {
        StrDeinit(&info->name);
    }
    
    void SearchResultDeinit(SearchResult *result) {
        StrDeinit(&result->binary_name);
        StrDeinit(&result->sha256);
        VecDeinit(&result->tags);
    void SearchResultDeinit(SearchResult *result) {
        StrDeinit(&result->binary_name);
        StrDeinit(&result->sha256);
        VecDeinit(&result->tags);
        StrDeinit(&result->created_at);
        StrDeinit(&result->sha256);
        VecDeinit(&result->tags);
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
        VecDeinit(&result->tags);
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
    }
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
    }
        }
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
    }
        }
    
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
    
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
    
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
                        });
    
                        StrDeinit(&target_key);
                    }
                });
                });
    
                StrDeinit(&source_key);
            });
        });
        }
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        VecDeinit(&functions);
        DefaultAllocatorDeinit(&alloc);
        result.analysis_id  = 999;
        result.sha256       = StrInitFromZstr("abc123", &alloc);
        result.tags         = VecInitWithDeepCopyT(result.tags, NULL, StrDeinit, &alloc);
    
        // Create strings and push them properly
        }
    
        StrDeinit(&json);
        SearchResultDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
                });
    
                StrDeinit(&target_key);
                    });
                    });
    
                    StrDeinit(&source_key);
                }
    });
    }
    
    StrDeinit(&json);
    VecDeinit(&symbols);
    return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&deep_message);
        StrDeinit(&test_name);
    
        StrDeinit(&json);
        StrDeinit(&deep_message);
        StrDeinit(&test_name);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&deep_message);
        StrDeinit(&test_name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        VecPushBack(&numbers, num3);
    
        Vec(Str) strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        // Create strings and push them properly
        }
    
        StrDeinit(&json);
        VecDeinit(&numbers);
        VecDeinit(&strings);
    
    void AnnSymbolDeinit(AnnSymbol *sym) {
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
    void AnnSymbolDeinit(AnnSymbol *sym) {
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
        StrDeinit(&sym->analysis_name);
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
    }
        StrDeinit(&sym->function_name);
        StrDeinit(&sym->sha256);
        StrDeinit(&sym->function_mangled_name);
    }
    
    void FunctionInfoDeinit(FunctionInfo *info) {
        StrDeinit(&info->name);
    }
    
    void ModelInfoDeinit(ModelInfo *info) {
        StrDeinit(&info->name);
    }
    
    void SearchResultDeinit(SearchResult *result) {
        StrDeinit(&result->binary_name);
        StrDeinit(&result->sha256);
        VecForeach(&result->tags, tag) {
    void SearchResultDeinit(SearchResult *result) {
        StrDeinit(&result->binary_name);
        StrDeinit(&result->sha256);
        VecForeach(&result->tags, tag) {
            StrDeinit(&tag);
        StrDeinit(&result->sha256);
        VecForeach(&result->tags, tag) {
            StrDeinit(&tag);
        }
        VecDeinit(&result->tags);
        }
        VecDeinit(&result->tags);
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
        VecDeinit(&result->tags);
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
    }
        StrDeinit(&result->created_at);
        StrDeinit(&result->model_name);
        StrDeinit(&result->owned_by);
    }
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&data.name);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&json);
        StrDeinit(&data.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
    
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.user.profile.name);
        StrDeinit(&data.status);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
    
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.company.departments.engineering.head);
        StrDeinit(&data.company.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        VecDeinit(&symbols);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&info.name);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&json);
        StrDeinit(&info.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&info.name);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&json);
        StrDeinit(&info.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        result.binary_name  = StrInit(&alloc);
        result.sha256       = StrInit(&alloc);
        result.tags         = VecInitWithDeepCopyT(result.tags, NULL, StrDeinit, &alloc);
        result.created_at   = StrInit(&alloc);
        result.model_name   = StrInit(&alloc);
        }
    
        StrDeinit(&json);
        SearchResultDeinit(&result);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
    
        StrDeinit(&json);
        StrDeinit(&response.message);
        VecDeinit(&response.data);
        DefaultAllocatorDeinit(&alloc);
    // Cleanup functions
    void PersonDeinit(Person *person) {
        StrDeinit(&person->name);
    }
    
    void ConfigDeinit(Config *config) {
        StrDeinit(&config->log_level);
    }
    
    void SimpleProductDeinit(SimpleProduct *product) {
        StrDeinit(&product->name);
        VecDeinit(&product->tags);
    }
        }
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
    
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
        StrDeinit(&expected_str);
        StrDeinit(&output_clean);
        StrDeinit(&expected_clean);
        return result;
    }
        }
    
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
    
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&name);
        StrDeinit(&city);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        PersonDeinit(&person);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        ConfigDeinit(&config);
        DefaultAllocatorDeinit(&alloc);
        Str  json    = StrInit(&alloc);
    
        Vec(Str) languages = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        // Create strings and push them properly
        }
    
        StrDeinit(&json);
        VecDeinit(&languages);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
    
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&data.user.name);
        StrDeinit(&data.user.email);
        DefaultAllocatorDeinit(&alloc);
        return success;
        product.name          = StrInitFromZstr("Laptop", &alloc);
        product.price         = 999.99;
        product.tags          = VecInitWithDeepCopyT(product.tags, NULL, StrDeinit, &alloc);
    
        // Create strings and push them properly
        }
    
        StrDeinit(&json);
        SimpleProductDeinit(&product);
        DefaultAllocatorDeinit(&alloc);
    
    void EdgeCaseDataDeinit(EdgeCaseData *data) {
        StrDeinit(&data->empty_string);
        VecDeinit(&data->empty_array);
        VecDeinit(&data->numbers);
        }
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        DefaultAllocatorDeinit(&alloc);
        return success;
        StrIter si2   = StrIterFromStr(json2);
    
        Vec(Str) data = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        JR_OBJ(si2, {
        }
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        VecDeinit(&items);
    
        StrDeinit(&json1);
        StrDeinit(&json2);
        VecDeinit(&items);
        VecDeinit(&data);
        }
    
        StrDeinit(&json);
        StrDeinit(&obj.name);
        StrDeinit(&obj.description);
    
        StrDeinit(&json);
        StrDeinit(&obj.name);
        StrDeinit(&obj.description);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&obj.name);
        StrDeinit(&obj.description);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&obj.path);
        StrDeinit(&obj.message);
    
        StrDeinit(&json);
        StrDeinit(&obj.path);
        StrDeinit(&obj.message);
        StrDeinit(&obj.data);
        StrDeinit(&json);
        StrDeinit(&obj.path);
        StrDeinit(&obj.message);
        StrDeinit(&obj.data);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&obj.path);
        StrDeinit(&obj.message);
        StrDeinit(&obj.data);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&obj.quote);
        StrDeinit(&obj.backslash);
    
        StrDeinit(&json);
        StrDeinit(&obj.quote);
        StrDeinit(&obj.backslash);
        StrDeinit(&obj.slash);
        StrDeinit(&json);
        StrDeinit(&obj.quote);
        StrDeinit(&obj.backslash);
        StrDeinit(&obj.slash);
        StrDeinit(&obj.backspace);
        StrDeinit(&obj.quote);
        StrDeinit(&obj.backslash);
        StrDeinit(&obj.slash);
        StrDeinit(&obj.backspace);
        StrDeinit(&obj.formfeed);
        StrDeinit(&obj.backslash);
        StrDeinit(&obj.slash);
        StrDeinit(&obj.backspace);
        StrDeinit(&obj.formfeed);
        StrDeinit(&obj.newline);
        StrDeinit(&obj.slash);
        StrDeinit(&obj.backspace);
        StrDeinit(&obj.formfeed);
        StrDeinit(&obj.newline);
        StrDeinit(&obj.carriage);
        StrDeinit(&obj.backspace);
        StrDeinit(&obj.formfeed);
        StrDeinit(&obj.newline);
        StrDeinit(&obj.carriage);
        StrDeinit(&obj.tab);
        StrDeinit(&obj.formfeed);
        StrDeinit(&obj.newline);
        StrDeinit(&obj.carriage);
        StrDeinit(&obj.tab);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&obj.newline);
        StrDeinit(&obj.carriage);
        StrDeinit(&obj.tab);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        StrDeinit(&obj.name);
        DefaultAllocatorDeinit(&alloc);
    
        StrDeinit(&json);
        StrDeinit(&obj.name);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        VecDeinit(&obj.filled_items);
        DefaultAllocatorDeinit(&alloc);
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
        // Input too short to spell a bool -- must fail (the >= length guard).
                success = false;
            }
            StrDeinit(&j);
        }
        // JReadNull on a 'n...' token that isn't "null".
                success = false;
            }
            StrDeinit(&j);
        }
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
                success = false;
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
                success = false;
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
                success = false;
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
            }
            StrDeinit(&out);
            StrDeinit(&j);
        }
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
            }
    
            StrDeinit(&json);
        }
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
        {
                success = false;
            }
            StrDeinit(&j);
        }
        }
    
        StrDeinit(&j);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&j);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&j);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&j);
        DefaultAllocatorDeinit(&alloc);
        return success;
    // Cleanup functions
    void TestPersonDeinit(TestPerson *person) {
        StrDeinit(&person->name);
    }
    
    void TestConfigDeinit(TestConfig *config) {
        StrDeinit(&config->log_level);
        VecDeinit(&config->features);
    }
        }
    
        StrDeinit(&json);
        StrDeinit(&original.message);
        StrDeinit(&parsed.message);
    
        StrDeinit(&json);
        StrDeinit(&original.message);
        StrDeinit(&parsed.message);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&json);
        StrDeinit(&original.message);
        StrDeinit(&parsed.message);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
    
        // Cleanup
        StrDeinit(&json);
        StrDeinit(&original.empty);
        StrDeinit(&original.simple);
        // Cleanup
        StrDeinit(&json);
        StrDeinit(&original.empty);
        StrDeinit(&original.simple);
        StrDeinit(&original.with_spaces);
        StrDeinit(&json);
        StrDeinit(&original.empty);
        StrDeinit(&original.simple);
        StrDeinit(&original.with_spaces);
        StrDeinit(&original.with_special);
        StrDeinit(&original.empty);
        StrDeinit(&original.simple);
        StrDeinit(&original.with_spaces);
        StrDeinit(&original.with_special);
        StrDeinit(&parsed.empty);
        StrDeinit(&original.simple);
        StrDeinit(&original.with_spaces);
        StrDeinit(&original.with_special);
        StrDeinit(&parsed.empty);
        StrDeinit(&parsed.simple);
        StrDeinit(&original.with_spaces);
        StrDeinit(&original.with_special);
        StrDeinit(&parsed.empty);
        StrDeinit(&parsed.simple);
        StrDeinit(&parsed.with_spaces);
        StrDeinit(&original.with_special);
        StrDeinit(&parsed.empty);
        StrDeinit(&parsed.simple);
        StrDeinit(&parsed.with_spaces);
        StrDeinit(&parsed.with_special);
        StrDeinit(&parsed.empty);
        StrDeinit(&parsed.simple);
        StrDeinit(&parsed.with_spaces);
        StrDeinit(&parsed.with_special);
        DefaultAllocatorDeinit(&alloc);
        StrDeinit(&parsed.simple);
        StrDeinit(&parsed.with_spaces);
        StrDeinit(&parsed.with_special);
        DefaultAllocatorDeinit(&alloc);
        return success;
        // Original data
        Vec(i32) original_numbers = VecInit(&alloc);
        Vec(Str) original_strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        // Populate arrays
        // Read back from JSON
        Vec(i32) parsed_numbers = VecInit(&alloc);
        Vec(Str) parsed_strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
    
        StrIter si = StrIterFromStr(json);
    
        // Cleanup
        StrDeinit(&json);
        VecDeinit(&original_numbers);
        VecDeinit(&original_strings);
    
        // Cleanup
        StrDeinit(&json);
        TestPersonDeinit(&original_person);
        TestPersonDeinit(&parsed_person);
        original.config.timeout    = 30;
        original.config.log_level  = StrInitFromZstr("INFO", &alloc);
        original.config.features   = VecInitWithDeepCopyT(original.config.features, NULL, StrDeinit, &alloc);
    
        // Create strings and push them properly
        parsed.config.timeout    = 0;
        parsed.config.log_level  = StrInit(&alloc);
        parsed.config.features   = VecInitWithDeepCopyT(parsed.config.features, NULL, StrDeinit, &alloc);
        parsed.numbers           = VecInitT(parsed.numbers, &alloc);
        parsed.flags             = VecInitT(parsed.flags, &alloc);
    
        // Cleanup
        StrDeinit(&json);
        ComplexDataDeinit(&original);
        ComplexDataDeinit(&parsed);
        // Original empty data
        Vec(i32) empty_numbers = VecInit(&alloc);
        Vec(Str) empty_strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
        Str empty_str          = StrInit(&alloc);
        // Read back from JSON
        Vec(i32) parsed_numbers = VecInit(&alloc);
        Vec(Str) parsed_strings = VecInitWithDeepCopy(NULL, StrDeinit, &alloc);
        Str  parsed_str         = StrInit(&alloc);
        bool found_empty_object = false;
    
        // Cleanup
        StrDeinit(&json);
        StrDeinit(&empty_str);
        StrDeinit(&parsed_str);
        // Cleanup
        StrDeinit(&json);
        StrDeinit(&empty_str);
        StrDeinit(&parsed_str);
        VecDeinit(&empty_numbers);
        StrDeinit(&json);
        StrDeinit(&empty_str);
        StrDeinit(&parsed_str);
        VecDeinit(&empty_numbers);
        VecDeinit(&empty_strings);
        }
    
        StrDeinit(&json);
        DefaultAllocatorDeinit(&alloc);
        return success;
        ok  = got && (StrCmp(got, expect) == 0);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && (v == true);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && StrIterPeek(&si, &c) && (c == 'Z');
    
        StrDeinit(&src);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && StrIterPeek(&si, &c) && (c == '\n');
    
        StrDeinit(&src);
        DefaultAllocatorDeinit(&alloc);
        return result;
        result = result && KvConfigGetI64(&cfg, "b", &b) && (b == 2);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && v && (StrLen(v) == 0);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && KvConfigGetI64(&cfg, "b", &b) && (b == 2);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && !KvConfigContains(&cfg, "k");
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && v && (StrCmp(v, "v") == 0);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && v && (StrCmp(v, "v") == 0);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && KvConfigContains(&cfg, "k");
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && KvConfigGetBool(&cfg, "debug", &debug) && debug;
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && empty && (StrLen(empty) == 0);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && (StrCmp(stored_host, "localhost") == 0);
    
        StrDeinit(&host_copy);
        StrDeinit(&src);
        MapDeinit(&cfg);
    
        StrDeinit(&host_copy);
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && !KvConfigGetF64(&cfg, "missing", &pi);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && !KvConfigContains(&cfg, "later");
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && !KvConfigGetBool(&cfg, "bad", &v);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        Str got = KvConfigGet(&cfg, &k_name);
        result  = result && (StrCmp(&got, "misra") == 0);
        StrDeinit(&got);
    
        // typed accessors via Str*
        result       = result && KvConfigGetBool(&cfg, &k_enabled, &en) && en;
    
        StrDeinit(&k_name);
        StrDeinit(&k_missing);
        StrDeinit(&k_workers);
    
        StrDeinit(&k_name);
        StrDeinit(&k_missing);
        StrDeinit(&k_workers);
        StrDeinit(&k_ratio);
        StrDeinit(&k_name);
        StrDeinit(&k_missing);
        StrDeinit(&k_workers);
        StrDeinit(&k_ratio);
        StrDeinit(&k_enabled);
        StrDeinit(&k_missing);
        StrDeinit(&k_workers);
        StrDeinit(&k_ratio);
        StrDeinit(&k_enabled);
        StrDeinit(&src);
        StrDeinit(&k_workers);
        StrDeinit(&k_ratio);
        StrDeinit(&k_enabled);
        StrDeinit(&src);
        MapDeinit(&cfg);
        StrDeinit(&k_ratio);
        StrDeinit(&k_enabled);
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && c && (StrCmp(c, "no-trailing-space") == 0);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        result = result && KvConfigGetI64(&cfg, "port", &port) && (port == 8080);
    
        StrDeinit(&src);
        MapDeinit(&cfg);
        DefaultAllocatorDeinit(&alloc);
        (void)KvConfigParse(input, &cfg);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        bool ok  = got && (StrCmp(got, "spaced-out-value-here") == 0);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        bool ok  = got && (StrCmp(got, "v") == 0);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        bool ok  = got && (StrCmp(got, "a-reasonably-long-config-value") == 0);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
        ok = ok && (KvConfigGetPtr(&cfg, "absent-config-key-0003") == NULL);
    
        StrDeinit(&text);
        MapDeinit(&cfg);
Last updated on