summaryrefslogtreecommitdiff
path: root/tests/model_row_test.c
blob: 7afca05d8e4caa41646938ff3a4327bebdfcdd51 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#include "model.h"

#include <assert.h>
#include <string.h>

int main(void)
{
    struct model *m = model_new((struct term_vector2i){ .x = 10, .y = 3 }, 10);
    model_feed(m, "A\r\nB\r\nC\r\nD", strlen("A\r\nB\r\nC\r\nD"), 0);
    assert(model_history(m) == 1);
    assert(model_row(m, -1) == NULL);
    assert(model_row(m, 4) == NULL);

    const struct model_cell *oldest = model_row(m, 0);
    const struct model_cell *next = model_row(m, 1);
    const struct model_cell *last = model_row(m, 3);
    assert(oldest[0].cp[0] == 'A');
    assert(next[0].cp[0] == 'B');
    assert(last[0].cp[0] == 'D');
    assert(oldest != next && next != last);

    model_feed(m, "E", 1, 0);
    assert(model_row(m, 3)[1].cp[0] == 'E');
    assert(model_resize(m, (struct term_vector2i){ .x = 12, .y = 3 }));
    assert(model_row(m, 3)[0].cp[0] == 'D');
    assert(model_row(m, 3)[1].cp[0] == 'E');
    model_free(m);
    return 0;
}