1 /*
2  * Tests for the lib_xlsx_writer library.
3  *
4  * Copyright 2014-2021, John McNamara, jmcnamara@cpan.org
5  *
6  */
7 
8 #include "../ctest.h"
9 #include "../helper.h"
10 
11 #include "../../../include/xlsxwriter/worksheet.h"
12 
13 /* 1. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt01)14 CTEST(worksheet, write_split_panes_opt01) {
15     char* got;
16     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane ySplit=\"600\" topLeftCell=\"A2\"/><selection pane=\"bottomLeft\" activeCell=\"A2\" sqref=\"A2\"/></sheetView></sheetViews>";
17     FILE* testfile = lxw_tmpfile(NULL);
18 
19     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
20     worksheet->file = testfile;
21 
22     worksheet_select(worksheet);
23     worksheet_split_panes_opt(worksheet, 15, 0, 1, 0);
24     _worksheet_write_sheet_views(worksheet);
25 
26     RUN_XLSX_STREQ(exp, got);
27 
28     lxw_worksheet_free(worksheet);
29 }
30 
31 
32 /* 2. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt02)33 CTEST(worksheet, write_split_panes_opt02) {
34     char* got;
35     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane ySplit=\"900\" topLeftCell=\"A3\"/><selection pane=\"bottomLeft\" activeCell=\"A3\" sqref=\"A3\"/></sheetView></sheetViews>";
36     FILE* testfile = lxw_tmpfile(NULL);
37 
38     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
39     worksheet->file = testfile;
40 
41     worksheet_select(worksheet);
42     worksheet_split_panes_opt(worksheet, 30, 0, 2, 0);
43     _worksheet_write_sheet_views(worksheet);
44 
45     RUN_XLSX_STREQ(exp, got);
46 
47     lxw_worksheet_free(worksheet);
48 }
49 
50 
51 /* 3. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt03)52 CTEST(worksheet, write_split_panes_opt03) {
53     char* got;
54     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane ySplit=\"2400\" topLeftCell=\"A8\"/><selection pane=\"bottomLeft\" activeCell=\"A8\" sqref=\"A8\"/></sheetView></sheetViews>";
55     FILE* testfile = lxw_tmpfile(NULL);
56 
57     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
58     worksheet->file = testfile;
59 
60     worksheet_select(worksheet);
61     worksheet_split_panes_opt(worksheet, 105, 0, 7, 0);
62     _worksheet_write_sheet_views(worksheet);
63 
64     RUN_XLSX_STREQ(exp, got);
65 
66     lxw_worksheet_free(worksheet);
67 }
68 
69 
70 /* 4. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt04)71 CTEST(worksheet, write_split_panes_opt04) {
72     char* got;
73     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"1350\" topLeftCell=\"B1\"/><selection pane=\"topRight\" activeCell=\"B1\" sqref=\"B1\"/></sheetView></sheetViews>";
74     FILE* testfile = lxw_tmpfile(NULL);
75 
76     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
77     worksheet->file = testfile;
78 
79     worksheet_select(worksheet);
80     worksheet_split_panes_opt(worksheet, 0, 8.43, 0, 1);
81     _worksheet_write_sheet_views(worksheet);
82 
83     RUN_XLSX_STREQ(exp, got);
84 
85     lxw_worksheet_free(worksheet);
86 }
87 
88 
89 /* 5. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt05)90 CTEST(worksheet, write_split_panes_opt05) {
91     char* got;
92     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"2310\" topLeftCell=\"C1\"/><selection pane=\"topRight\" activeCell=\"C1\" sqref=\"C1\"/></sheetView></sheetViews>";
93     FILE* testfile = lxw_tmpfile(NULL);
94 
95     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
96     worksheet->file = testfile;
97 
98     worksheet_select(worksheet);
99     worksheet_split_panes_opt(worksheet, 0, 17.57, 0, 2);
100     _worksheet_write_sheet_views(worksheet);
101 
102     RUN_XLSX_STREQ(exp, got);
103 
104     lxw_worksheet_free(worksheet);
105 }
106 
107 
108 /* 6. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt06)109 CTEST(worksheet, write_split_panes_opt06) {
110     char* got;
111     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"5190\" topLeftCell=\"F1\"/><selection pane=\"topRight\" activeCell=\"F1\" sqref=\"F1\"/></sheetView></sheetViews>";
112     FILE* testfile = lxw_tmpfile(NULL);
113 
114     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
115     worksheet->file = testfile;
116 
117     worksheet_select(worksheet);
118     worksheet_split_panes_opt(worksheet, 0, 45, 0, 5);
119     _worksheet_write_sheet_views(worksheet);
120 
121     RUN_XLSX_STREQ(exp, got);
122 
123     lxw_worksheet_free(worksheet);
124 }
125 
126 
127 /* 7. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt07)128 CTEST(worksheet, write_split_panes_opt07) {
129     char* got;
130     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"1350\" ySplit=\"600\" topLeftCell=\"B2\"/><selection pane=\"topRight\" activeCell=\"B1\" sqref=\"B1\"/><selection pane=\"bottomLeft\" activeCell=\"A2\" sqref=\"A2\"/><selection pane=\"bottomRight\" activeCell=\"B2\" sqref=\"B2\"/></sheetView></sheetViews>";
131     FILE* testfile = lxw_tmpfile(NULL);
132 
133     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
134     worksheet->file = testfile;
135 
136     worksheet_select(worksheet);
137     worksheet_split_panes_opt(worksheet, 15, 8.43, 1, 1);
138     _worksheet_write_sheet_views(worksheet);
139 
140     RUN_XLSX_STREQ(exp, got);
141 
142     lxw_worksheet_free(worksheet);
143 }
144 
145 
146 /* 8. Test the _write_sheet_views() method with split panes. */
CTEST(worksheet,write_split_panes_opt08)147 CTEST(worksheet, write_split_panes_opt08) {
148     char* got;
149     char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"6150\" ySplit=\"1200\" topLeftCell=\"G4\"/><selection pane=\"topRight\" activeCell=\"G1\" sqref=\"G1\"/><selection pane=\"bottomLeft\" activeCell=\"A4\" sqref=\"A4\"/><selection pane=\"bottomRight\" activeCell=\"G4\" sqref=\"G4\"/></sheetView></sheetViews>";
150     FILE* testfile = lxw_tmpfile(NULL);
151 
152     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
153     worksheet->file = testfile;
154 
155     worksheet_select(worksheet);
156     worksheet_split_panes_opt(worksheet, 45, 54.14, 3, 6);
157     _worksheet_write_sheet_views(worksheet);
158 
159     RUN_XLSX_STREQ(exp, got);
160 
161     lxw_worksheet_free(worksheet);
162 }
163