1 #include "tickit.h"
2 #include "taplib.h"
3 #include "taplib-mockterm.h"
4 
main(int argc,char * argv[])5 int main(int argc, char *argv[])
6 {
7   TickitTerm *tt = make_term(25, 80);
8   TickitRenderBuffer *rb;
9   char buffer[256];
10 
11   rb = tickit_renderbuffer_new(10, 20);
12 
13   // Absolute characters
14   {
15     TickitPen *fg_pen = tickit_pen_new_attrs(TICKIT_PEN_FG, 4, 0);
16     tickit_renderbuffer_setpen(rb, fg_pen);
17 
18     tickit_renderbuffer_char_at(rb, 5, 5, 0x41);
19     tickit_renderbuffer_char_at(rb, 5, 6, 0x42);
20     tickit_renderbuffer_char_at(rb, 5, 7, 0x43);
21 
22     is_int(tickit_renderbuffer_get_cell_text(rb, 5, 5, buffer, sizeof buffer), 1, "get_cell_text CHAR at 5,5");
23     is_str(buffer, "A", "buffer text at 5,5");
24 
25     tickit_renderbuffer_flush_to_term(rb, tt);
26     is_termlog("RenderBuffer renders char_at to terminal",
27         GOTO(5,5), SETPEN(.fg=4), PRINT("A"),
28                    SETPEN(.fg=4), PRINT("B"),
29                    SETPEN(.fg=4), PRINT("C"),
30         NULL);
31 
32     tickit_pen_unref(fg_pen);
33   }
34 
35   // VC characters
36   {
37     tickit_renderbuffer_goto(rb, 0, 4);
38     TickitPen *fg_pen = tickit_pen_new_attrs(TICKIT_PEN_FG, 5, 0);
39     tickit_renderbuffer_setpen(rb, fg_pen);
40 
41     tickit_renderbuffer_char(rb, 0x47);
42 
43     tickit_renderbuffer_flush_to_term(rb, tt);
44     is_termlog("RenderBuffer renders chars at VC",
45         GOTO(0,4), SETPEN(.fg=5), PRINT("G"),
46         NULL);
47 
48     tickit_pen_unref(fg_pen);
49   }
50 
51   // Characters with translation
52   {
53     tickit_renderbuffer_translate(rb, 3, 5);
54 
55     tickit_renderbuffer_char_at(rb, 1, 1, 0x31);
56     tickit_renderbuffer_char_at(rb, 1, 2, 0x32);
57 
58     tickit_renderbuffer_flush_to_term(rb, tt);
59     is_termlog("RenderBuffer renders char_at with translation",
60         GOTO(4,6), SETPEN(), PRINT("1"),
61                    SETPEN(), PRINT("2"),
62         NULL);
63   }
64 
65   tickit_renderbuffer_unref(rb);
66   tickit_term_unref(tt);
67 
68   return exit_status();
69 }
70