HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //home/ubuntu/neovim/.deps/build/src/unibilium/t/wide-format.c
#include <unibilium.h>
#include <string.h>
#include "test-simple.c.inc"

static size_t smin(size_t a, size_t b) {
    return a < b ? a : b;
}

static void is_zu(size_t a, size_t b, const char *d, const char *file, unsigned line) {
    if (ok(a == b, "%s", d)) {
        return;
    }
    fputc('\n', stderr);
    diag("  Failed test '%s'", d);
    diag("  at %s line %u.", file, line);
    diag("         got: %zu", a);
    diag("    expected: %zu", b);
}
#define is_zu(A, B, D) is_zu(A, B, D, __FILE__, __LINE__)

static unibi_term *test_term(void) {
    static const char *aliases[] = { "test", NULL };
    unibi_term *const t = unibi_dummy();
    unibi_set_name(t, "not a real terminal");
    unibi_set_aliases(t, aliases);
    return t;
}

#define SIZE_ERR ((size_t)-1)

int main(void) {
    unibi_term *t;
    char buf[4096];
    size_t n;

    plan(8);

    t = test_term();

    ok(unibi_add_ext_num(t, "Ext1", -1) != SIZE_ERR, "add Ext1");
    ok(unibi_add_ext_num(t, "Ext2", 256) != SIZE_ERR, "add Ext2");

    unibi_set_num(t, unibi_columns, 123);
    unibi_set_num(t, unibi_lines, 4444);

    unibi_set_str(t, unibi_bell, "BONG!");
    unibi_set_str(t, unibi_cursor_up, "yo");

    ok(unibi_add_ext_str(t, "wow", "such string") != SIZE_ERR, "add ext string");

    n = unibi_dump(t, buf, sizeof buf);
    is_zu(n, 142, "simple dump length");
    ok(memcmp(buf, "\032\001\031\000\000\000\003\000\024\000\t\000test|not a real terminal\000\000{\000\377\377\\\021\377\377\000\000\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\006\000BONG!\000yo\000\000\000\000\002\000\001\000\004\000\032\000\377\377\000\001\000\000\000\000\005\000\n\000such string\000Ext1\000Ext2\000wow\000", smin(n, 142)) == 0, "simple dump contents");

    is_zu(unibi_add_ext_num(t, "Ext3", 0x10000), 2, "add Ext3");

    n = unibi_dump(t, buf, sizeof buf);
    is_zu(n, 163, "wide dump length");
    ok(memcmp(buf, "\036\002\031\000\000\000\003\000\024\000\t\000test|not a real terminal\000\000{\000\000\000\377\377\377\377\\\021\000\000\377\377\000\000\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\006\000BONG!\000yo\000\000\000\000\003\000\001\000\005\000\037\000\377\377\377\377\000\001\000\000\000\000\001\000\000\000\000\000\005\000\n\000\017\000such string\000Ext1\000Ext2\000Ext3\000wow\000", smin(n, 163)) == 0, "wide dump contents");

    unibi_destroy(t);

    return 0;
}