66#include "../src/vector.h"
77
88#define NUM_CASES 4
9+ #define MAX_COLS 11
910
1011#define GREEN "\x1B[92m"
1112#define CYAN "\x1B[1;36m"
1213#define YELLOW "\x1B[33;1m"
1314#define RED "\x1B[31;1m"
1415#define COL_RESET "\x1B[0m"
1516
16- char * arrayA [4 ][4 ] = {
17+ const char * arrayA [4 ][4 ] = {
1718 { "alpha" , YELLOW "beta" COL_RESET , "gamma" , " delta " },
1819 { " 1 " , YELLOW " -1110.1 " COL_RESET , "a....... " , " 777" },
1920 { " 2 " , " 10 " , "b " , " 222" },
@@ -24,93 +25,94 @@ bool table_test(__attribute__((unused)) Vector *error_builder)
2425{
2526 // Case 1
2627 Table * t1 = get_empty_table ();
27- set_default_alignments (& t1 , 5 , (TextAlignment []){ ALIGN_LEFT , ALIGN_NUMBERS , ALIGN_RIGHT , ALIGN_CENTER , ALIGN_CENTER });
28- add_cells_from_array (& t1 , 4 , 4 , (char * * )arrayA );
29- set_position (& t1 , 0 , 0 );
30- override_alignment_of_row (& t1 , ALIGN_CENTER );
31- set_position (& t1 , 4 , 0 );
32- set_vline (& t1 , 4 , BORDER_SINGLE );
33- add_cell (& t1 , " test " );
34- set_position (& t1 , 2 , 1 );
35- set_vline (& t1 , 2 , BORDER_SINGLE );
36- set_hline (& t1 , BORDER_DOUBLE );
37- set_position (& t1 , 3 , 4 );
38- set_vline (& t1 , 3 , BORDER_SINGLE );
39- add_cell (& t1 , "!" );
40- set_position (& t1 , 3 , 5 );
41- set_span (& t1 , 2 , 2 );
42- override_alignment (& t1 , ALIGN_RIGHT );
43- override_above_border (& t1 , BORDER_NONE );
44- add_cell (& t1 , " ^ no border \n and span x \n and also y " );
45- set_position (& t1 , 0 , 4 );
46- set_hline (& t1 , BORDER_SINGLE );
47- set_span (& t1 , 2 , 1 );
48- add_cell (& t1 , " span x" );
49- override_alignment (& t1 , ALIGN_LEFT );
50- set_vline (& t1 , 4 , BORDER_SINGLE );
51- set_span (& t1 , 1 , 3 );
52- add_cell (& t1 , " span y \n span y \n span y \n span y \n < span y " );
53- next_row (& t1 );
54- set_hline (& t1 , BORDER_SINGLE );
55- set_span (& t1 , 2 , 1 );
56- add_cell (& t1 , GREEN " span x" COL_RESET );
57- next_row (& t1 );
58- set_hline (& t1 , BORDER_DOUBLE );
59- set_span (& t1 , 2 , 1 );
60- add_cell (& t1 , CYAN " span x" COL_RESET );
61- next_row (& t1 );
62- set_position (& t1 , 1 , 6 );
63- set_vline (& t1 , 1 , BORDER_SINGLE );
64- set_position (& t1 , 2 , 6 );
65- override_left_border (& t1 , BORDER_NONE );
66- make_boxed (& t1 , BORDER_SINGLE );
67- print_table (& t1 );
68- free_table (& t1 );
28+ set_default_alignments (t1 , 5 , (TableHAlign []){ H_ALIGN_RIGHT , H_ALIGN_LEFT },
29+ (TableVAlign []){ V_ALIGN_TOP , V_ALIGN_BOTTOM });
30+ add_cells_from_array (t1 , 4 , 4 , (const char * * )arrayA );
31+ set_position (t1 , 0 , 0 );
32+ override_horizontal_alignment (t1 , H_ALIGN_CENTER );
33+ set_position (t1 , 4 , 0 );
34+ set_vline (t1 , 4 , BORDER_SINGLE );
35+ add_cell (t1 , " test " );
36+ set_position (t1 , 2 , 1 );
37+ set_vline (t1 , 2 , BORDER_SINGLE );
38+ set_hline (t1 , BORDER_DOUBLE );
39+ set_position (t1 , 3 , 4 );
40+ set_vline (t1 , 3 , BORDER_SINGLE );
41+ add_cell (t1 , "!" );
42+ set_position (t1 , 3 , 5 );
43+ set_span (t1 , 2 , 2 );
44+ override_horizontal_alignment (t1 , H_ALIGN_RIGHT );
45+ override_above_border (t1 , BORDER_NONE );
46+ add_cell (t1 , " ^ no border \n and span x \n and also y " );
47+ set_position (t1 , 0 , 4 );
48+ set_hline (t1 , BORDER_SINGLE );
49+ set_span (t1 , 2 , 1 );
50+ add_cell (t1 , " span x" );
51+ override_horizontal_alignment (t1 , H_ALIGN_LEFT );
52+ set_vline (t1 , 4 , BORDER_SINGLE );
53+ set_span (t1 , 1 , 3 );
54+ add_cell (t1 , " span y \n span y \n span y \n span y \n < span y " );
55+ next_row (t1 );
56+ set_hline (t1 , BORDER_SINGLE );
57+ set_span (t1 , 2 , 1 );
58+ add_cell (t1 , GREEN " span x" COL_RESET );
59+ next_row (t1 );
60+ set_hline (t1 , BORDER_DOUBLE );
61+ set_span (t1 , 2 , 1 );
62+ add_cell (t1 , CYAN " span x" COL_RESET );
63+ next_row (t1 );
64+ set_position (t1 , 1 , 6 );
65+ set_vline (t1 , 1 , BORDER_SINGLE );
66+ set_position (t1 , 2 , 6 );
67+ override_left_border (t1 , BORDER_NONE );
68+ make_boxed (t1 , BORDER_SINGLE );
69+ print_table (t1 );
70+ free_table (t1 );
6971
7072 // Case 2
71- Table t2 = get_empty_table ();
73+ Table * t2 = get_empty_table ();
7274 for (size_t i = 0 ; i < MAX_COLS - 1 ; i ++ )
7375 {
7476 for (size_t j = 0 ; j < MAX_COLS - 1 ; j ++ )
7577 {
76- override_alignment ( & t2 , ALIGN_RIGHT );
77- add_cell_fmt (& t2 , " %d " , i * (MAX_COLS - 1 ) + j + 1 );
78+ override_horizontal_alignment ( t2 , H_ALIGN_RIGHT );
79+ add_cell_fmt (t2 , " %d " , i * (MAX_COLS - 1 ) + j + 1 );
7880 }
79- next_row (& t2 );
81+ next_row (t2 );
8082 }
81- make_boxed (& t2 , BORDER_DOUBLE );
82- print_table (& t2 );
83- free_table (& t2 );
83+ make_boxed (t2 , BORDER_DOUBLE );
84+ print_table (t2 );
85+ free_table (t2 );
8486
8587 // Case 3
86- Table t3 = get_empty_table ();
87- next_row (& t3 );
88- print_table (& t3 );
89- free_table (& t3 );
88+ Table * t3 = get_empty_table ();
89+ next_row (t3 );
90+ print_table (t3 );
91+ free_table (t3 );
9092
9193 // Case 4
92- Table t4 = get_empty_table ();
94+ Table * t4 = get_empty_table ();
9395 for (size_t i = 1 ; i < MAX_COLS - 1 ; i ++ )
9496 {
95- set_span (& t4 , i , 1 );
96- add_cell_fmt (& t4 , " x " );
97- set_span (& t4 , MAX_COLS - i - 1 , 1 );
98- add_cell_fmt (& t4 , " x " );
99- next_row (& t4 );
100- set_hline (& t4 , BORDER_SINGLE );
97+ set_span (t4 , i , 1 );
98+ add_cell_fmt (t4 , " x " );
99+ set_span (t4 , MAX_COLS - i - 1 , 1 );
100+ add_cell_fmt (t4 , " x " );
101+ next_row (t4 );
102+ set_hline (t4 , BORDER_SINGLE );
101103 }
102104
103105 for (size_t i = 0 ; i < MAX_COLS / 2 ; i ++ )
104106 {
105- set_span (& t4 , 2 , 1 );
106- add_cell_fmt (& t4 , " x " );
107+ set_span (t4 , 2 , 1 );
108+ add_cell_fmt (t4 , " x " );
107109 }
108110
109- next_row (& t4 );
110- set_all_vlines (& t4 , BORDER_SINGLE );
111- make_boxed (& t4 , BORDER_SINGLE );
112- print_table (& t4 );
113- free_table (& t4 );
111+ next_row (t4 );
112+ set_all_vlines (t4 , BORDER_SINGLE );
113+ make_boxed (t4 , BORDER_SINGLE );
114+ print_table (t4 );
115+ free_table (t4 );
114116
115117 return true;
116118}
0 commit comments