1 /*
2 * Tests for the libxlsxwriter 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 #include "../../../include/xlsxwriter/shared_strings.h"
13
14 // Test assembling a complete Worksheet file.
CTEST(worksheet,worksheet_condtional_format22)15 CTEST(worksheet, worksheet_condtional_format22) {
16
17 char* got;
18 char exp[] =
19 "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"
20 "<worksheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\" xmlns:r=\"http://schemas.openxmlformats.org/officeDocument/2006/relationships\">"
21 "<dimension ref=\"A1:A9\"/>"
22 "<sheetViews>"
23 "<sheetView tabSelected=\"1\" workbookViewId=\"0\"/>"
24 "</sheetViews>"
25 "<sheetFormatPr defaultRowHeight=\"15\"/>"
26 "<sheetData>"
27 "<row r=\"1\" spans=\"1:1\">"
28 "<c r=\"A1\">"
29 "<v>1</v>"
30 "</c>"
31 "</row>"
32 "<row r=\"2\" spans=\"1:1\">"
33 "<c r=\"A2\">"
34 "<v>2</v>"
35 "</c>"
36 "</row>"
37 "<row r=\"3\" spans=\"1:1\">"
38 "<c r=\"A3\">"
39 "<v>3</v>"
40 "</c>"
41 "</row>"
42 "<row r=\"4\" spans=\"1:1\">"
43 "<c r=\"A4\">"
44 "<v>4</v>"
45 "</c>"
46 "</row>"
47 "<row r=\"5\" spans=\"1:1\">"
48 "<c r=\"A5\">"
49 "<v>5</v>"
50 "</c>"
51 "</row>"
52 "<row r=\"6\" spans=\"1:1\">"
53 "<c r=\"A6\">"
54 "<v>6</v>"
55 "</c>"
56 "</row>"
57 "<row r=\"7\" spans=\"1:1\">"
58 "<c r=\"A7\">"
59 "<v>7</v>"
60 "</c>"
61 "</row>"
62 "<row r=\"8\" spans=\"1:1\">"
63 "<c r=\"A8\">"
64 "<v>8</v>"
65 "</c>"
66 "</row>"
67 "<row r=\"9\" spans=\"1:1\">"
68 "<c r=\"A9\">"
69 "<v>9</v>"
70 "</c>"
71 "</row>"
72 "</sheetData>"
73 "<conditionalFormatting sqref=\"A1\">"
74 "<cfRule type=\"iconSet\" priority=\"1\">"
75 "<iconSet iconSet=\"3Arrows\">"
76 "<cfvo type=\"percent\" val=\"0\"/>"
77 "<cfvo type=\"percent\" val=\"33\"/>"
78 "<cfvo type=\"percent\" val=\"67\"/>"
79 "</iconSet>"
80 "</cfRule>"
81 "</conditionalFormatting>"
82 "<conditionalFormatting sqref=\"A2\">"
83 "<cfRule type=\"iconSet\" priority=\"2\">"
84 "<iconSet iconSet=\"3Flags\">"
85 "<cfvo type=\"percent\" val=\"0\"/>"
86 "<cfvo type=\"percent\" val=\"33\"/>"
87 "<cfvo type=\"percent\" val=\"67\"/>"
88 "</iconSet>"
89 "</cfRule>"
90 "</conditionalFormatting>"
91 "<conditionalFormatting sqref=\"A3\">"
92 "<cfRule type=\"iconSet\" priority=\"3\">"
93 "<iconSet iconSet=\"3TrafficLights2\">"
94 "<cfvo type=\"percent\" val=\"0\"/>"
95 "<cfvo type=\"percent\" val=\"33\"/>"
96 "<cfvo type=\"percent\" val=\"67\"/>"
97 "</iconSet>"
98 "</cfRule>"
99 "</conditionalFormatting>"
100 "<conditionalFormatting sqref=\"A4\">"
101 "<cfRule type=\"iconSet\" priority=\"4\">"
102 "<iconSet iconSet=\"3Symbols\">"
103 "<cfvo type=\"percent\" val=\"0\"/>"
104 "<cfvo type=\"percent\" val=\"33\"/>"
105 "<cfvo type=\"percent\" val=\"67\"/>"
106 "</iconSet>"
107 "</cfRule>"
108 "</conditionalFormatting>"
109 "<conditionalFormatting sqref=\"A5\">"
110 "<cfRule type=\"iconSet\" priority=\"5\">"
111 "<iconSet iconSet=\"4Arrows\">"
112 "<cfvo type=\"percent\" val=\"0\"/>"
113 "<cfvo type=\"percent\" val=\"25\"/>"
114 "<cfvo type=\"percent\" val=\"50\"/>"
115 "<cfvo type=\"percent\" val=\"75\"/>"
116 "</iconSet>"
117 "</cfRule>"
118 "</conditionalFormatting>"
119 "<conditionalFormatting sqref=\"A6\">"
120 "<cfRule type=\"iconSet\" priority=\"6\">"
121 "<iconSet iconSet=\"4RedToBlack\">"
122 "<cfvo type=\"percent\" val=\"0\"/>"
123 "<cfvo type=\"percent\" val=\"25\"/>"
124 "<cfvo type=\"percent\" val=\"50\"/>"
125 "<cfvo type=\"percent\" val=\"75\"/>"
126 "</iconSet>"
127 "</cfRule>"
128 "</conditionalFormatting>"
129 "<conditionalFormatting sqref=\"A7\">"
130 "<cfRule type=\"iconSet\" priority=\"7\">"
131 "<iconSet iconSet=\"4TrafficLights\">"
132 "<cfvo type=\"percent\" val=\"0\"/>"
133 "<cfvo type=\"percent\" val=\"25\"/>"
134 "<cfvo type=\"percent\" val=\"50\"/>"
135 "<cfvo type=\"percent\" val=\"75\"/>"
136 "</iconSet>"
137 "</cfRule>"
138 "</conditionalFormatting>"
139 "<conditionalFormatting sqref=\"A8\">"
140 "<cfRule type=\"iconSet\" priority=\"8\">"
141 "<iconSet iconSet=\"5ArrowsGray\">"
142 "<cfvo type=\"percent\" val=\"0\"/>"
143 "<cfvo type=\"percent\" val=\"20\"/>"
144 "<cfvo type=\"percent\" val=\"40\"/>"
145 "<cfvo type=\"percent\" val=\"60\"/>"
146 "<cfvo type=\"percent\" val=\"80\"/>"
147 "</iconSet>"
148 "</cfRule>"
149 "</conditionalFormatting>"
150 "<conditionalFormatting sqref=\"A9\">"
151 "<cfRule type=\"iconSet\" priority=\"9\">"
152 "<iconSet iconSet=\"5Quarters\">"
153 "<cfvo type=\"percent\" val=\"0\"/>"
154 "<cfvo type=\"percent\" val=\"20\"/>"
155 "<cfvo type=\"percent\" val=\"40\"/>"
156 "<cfvo type=\"percent\" val=\"60\"/>"
157 "<cfvo type=\"percent\" val=\"80\"/>"
158 "</iconSet>"
159 "</cfRule>"
160 "</conditionalFormatting>"
161 "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>"
162 "</worksheet>";
163
164 FILE* testfile = lxw_tmpfile(NULL);
165
166 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
167 worksheet->file = testfile;
168 worksheet_select(worksheet);
169
170 worksheet_write_number(worksheet, CELL("A1"), 1, NULL);
171 worksheet_write_number(worksheet, CELL("A2"), 2, NULL);
172 worksheet_write_number(worksheet, CELL("A3"), 3, NULL);
173 worksheet_write_number(worksheet, CELL("A4"), 4, NULL);
174 worksheet_write_number(worksheet, CELL("A5"), 5, NULL);
175 worksheet_write_number(worksheet, CELL("A6"), 6, NULL);
176 worksheet_write_number(worksheet, CELL("A7"), 7, NULL);
177 worksheet_write_number(worksheet, CELL("A8"), 8, NULL);
178 worksheet_write_number(worksheet, CELL("A9"), 9, NULL);
179
180 lxw_conditional_format *conditional_format = calloc(1, sizeof(lxw_conditional_format));
181
182 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
183 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_3_ARROWS_COLORED;
184 worksheet_conditional_format_cell(worksheet, CELL("A1"), conditional_format);
185
186 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
187 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_3_FLAGS;
188 worksheet_conditional_format_cell(worksheet, CELL("A2"), conditional_format);
189
190 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
191 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_3_TRAFFIC_LIGHTS_RIMMED;
192 worksheet_conditional_format_cell(worksheet, CELL("A3"), conditional_format);
193
194 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
195 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_3_SYMBOLS_CIRCLED;
196 worksheet_conditional_format_cell(worksheet, CELL("A4"), conditional_format);
197
198 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
199 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_4_ARROWS_COLORED;
200 worksheet_conditional_format_cell(worksheet, CELL("A5"), conditional_format);
201
202 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
203 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_4_RED_TO_BLACK;
204 worksheet_conditional_format_cell(worksheet, CELL("A6"), conditional_format);
205
206 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
207 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_4_TRAFFIC_LIGHTS;
208 worksheet_conditional_format_cell(worksheet, CELL("A7"), conditional_format);
209
210 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
211 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_5_ARROWS_GRAY;
212 worksheet_conditional_format_cell(worksheet, CELL("A8"), conditional_format);
213
214 conditional_format->type = LXW_CONDITIONAL_TYPE_ICON_SETS;
215 conditional_format->icon_style = LXW_CONDITIONAL_ICONS_5_QUARTERS;
216 worksheet_conditional_format_cell(worksheet, CELL("A9"), conditional_format);
217
218 free(conditional_format);
219
220 lxw_worksheet_assemble_xml_file(worksheet);
221
222 RUN_XLSX_STREQ_SHORT(exp, got);
223
224 lxw_worksheet_free(worksheet);
225 }
226
227
228