skip to content
==> tests/term.c <==
1/* Without a terminal (as under the test runner): enter refuses and changes nothing, leave is
2 * harmless, reads from a pipe time out and then deliver. */
3#include "mesh/check.h"
4#include "tui/term.h"
5
6#include <unistd.h>
7
8int main(void) {
9    int fds[2];
10    CHECK(pipe(fds) == 0);
11    int saved = dup(STDIN_FILENO);
12    dup2(fds[0], STDIN_FILENO);
13    CHECK(!tui_term_enter());
14    tui_term_leave();
15    char buf[16];
16    CHECK_I(tui_term_read(buf, sizeof buf, 10), 0);
17    CHECK(write(fds[1], "ab", 2) == 2);
18    CHECK_I(tui_term_read(buf, sizeof buf, 100), 2);
19    CHECK(buf[0] == 'a' && buf[1] == 'b');
20    CHECK(!tui_term_resized());
21    dup2(saved, STDIN_FILENO);
22    close(fds[0]);
23    close(fds[1]);
24    close(saved);
25    return mesh_check_done();
26}