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
14 /* Test: Integer between 1 and 10. */
CTEST(worksheet,test_write_data_validations_201)15 CTEST(worksheet, test_write_data_validations_201) {
16 char* got;
17 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
18 FILE* testfile = lxw_tmpfile(NULL);
19
20 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
21 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
22 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
23 data_validation->minimum_number = 1;
24 data_validation->maximum_number = 10;
25
26 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
27 worksheet->file = testfile;
28
29 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
30 _worksheet_write_data_validations(worksheet);
31
32 RUN_XLSX_STREQ(exp, got);
33
34 lxw_worksheet_free(worksheet);
35 free(data_validation);
36 }
37
38 /* Test: Integer not between 1 and 10. */
CTEST(worksheet,test_write_data_validations_202)39 CTEST(worksheet, test_write_data_validations_202) {
40 char* got;
41 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"notBetween\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
42 FILE* testfile = lxw_tmpfile(NULL);
43
44 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
45 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
46 data_validation->criteria = LXW_VALIDATION_CRITERIA_NOT_BETWEEN;
47 data_validation->minimum_number = 1;
48 data_validation->maximum_number = 10;
49
50 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
51 worksheet->file = testfile;
52
53 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
54 _worksheet_write_data_validations(worksheet);
55
56 RUN_XLSX_STREQ(exp, got);
57
58 lxw_worksheet_free(worksheet);
59 free(data_validation);
60 }
61
62
63 /* Test: Integer == 1. */
CTEST(worksheet,test_write_data_validations_203)64 CTEST(worksheet, test_write_data_validations_203) {
65 char* got;
66 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
67 FILE* testfile = lxw_tmpfile(NULL);
68
69 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
70 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
71 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
72 data_validation->value_number = 1;
73
74 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
75 worksheet->file = testfile;
76
77 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
78 _worksheet_write_data_validations(worksheet);
79
80 RUN_XLSX_STREQ(exp, got);
81
82 lxw_worksheet_free(worksheet);
83 free(data_validation);
84 }
85
86 /* Test: Integer != 1. */
CTEST(worksheet,test_write_data_validations_204)87 CTEST(worksheet, test_write_data_validations_204) {
88 char* got;
89 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"notEqual\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
90 FILE* testfile = lxw_tmpfile(NULL);
91
92 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
93 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
94 data_validation->criteria = LXW_VALIDATION_CRITERIA_NOT_EQUAL_TO;
95 data_validation->value_number = 1;
96
97 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
98 worksheet->file = testfile;
99
100 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
101 _worksheet_write_data_validations(worksheet);
102
103 RUN_XLSX_STREQ(exp, got);
104
105 lxw_worksheet_free(worksheet);
106 free(data_validation);
107 }
108
109 /* Test: Integer > 1. */
CTEST(worksheet,test_write_data_validations_205)110 CTEST(worksheet, test_write_data_validations_205) {
111 char* got;
112 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"greaterThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
113 FILE* testfile = lxw_tmpfile(NULL);
114
115 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
116 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
117 data_validation->criteria = LXW_VALIDATION_CRITERIA_GREATER_THAN;
118 data_validation->value_number = 1;
119
120 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
121 worksheet->file = testfile;
122
123 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
124 _worksheet_write_data_validations(worksheet);
125
126 RUN_XLSX_STREQ(exp, got);
127
128 lxw_worksheet_free(worksheet);
129 free(data_validation);
130 }
131
132 /* Test: Integer < 1. */
CTEST(worksheet,test_write_data_validations_206)133 CTEST(worksheet, test_write_data_validations_206) {
134 char* got;
135 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"lessThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
136 FILE* testfile = lxw_tmpfile(NULL);
137
138 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
139 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
140 data_validation->criteria = LXW_VALIDATION_CRITERIA_LESS_THAN;
141 data_validation->value_number = 1;
142
143 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
144 worksheet->file = testfile;
145
146 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
147 _worksheet_write_data_validations(worksheet);
148
149 RUN_XLSX_STREQ(exp, got);
150
151 lxw_worksheet_free(worksheet);
152 free(data_validation);
153 }
154
155 /* Test: 1Integer >= 1. */
CTEST(worksheet,test_write_data_validations_207)156 CTEST(worksheet, test_write_data_validations_207) {
157 char* got;
158 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"greaterThanOrEqual\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
159 FILE* testfile = lxw_tmpfile(NULL);
160
161 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
162 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
163 data_validation->criteria = LXW_VALIDATION_CRITERIA_GREATER_THAN_OR_EQUAL_TO;
164 data_validation->value_number = 1;
165
166 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
167 worksheet->file = testfile;
168
169 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
170 _worksheet_write_data_validations(worksheet);
171
172 RUN_XLSX_STREQ(exp, got);
173
174 lxw_worksheet_free(worksheet);
175 free(data_validation);
176 }
177
178 /* Test: Integer <= 1. */
CTEST(worksheet,test_write_data_validations_208)179 CTEST(worksheet, test_write_data_validations_208) {
180 char* got;
181 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" operator=\"lessThanOrEqual\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1></dataValidation></dataValidations>";
182 FILE* testfile = lxw_tmpfile(NULL);
183
184 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
185 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
186 data_validation->criteria = LXW_VALIDATION_CRITERIA_LESS_THAN_OR_EQUAL_TO;
187 data_validation->value_number = 1;
188
189 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
190 worksheet->file = testfile;
191
192 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
193 _worksheet_write_data_validations(worksheet);
194
195 RUN_XLSX_STREQ(exp, got);
196
197 lxw_worksheet_free(worksheet);
198 free(data_validation);
199 }
200
201 /* Test: Ignore blank off. */
CTEST(worksheet,test_write_data_validations_209)202 CTEST(worksheet, test_write_data_validations_209) {
203 char* got;
204 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
205 FILE* testfile = lxw_tmpfile(NULL);
206
207 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
208 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
209 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
210 data_validation->minimum_number = 1;
211 data_validation->maximum_number = 10;
212 data_validation->ignore_blank = LXW_VALIDATION_OFF;
213
214 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
215 worksheet->file = testfile;
216
217 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
218 _worksheet_write_data_validations(worksheet);
219
220 RUN_XLSX_STREQ(exp, got);
221
222 lxw_worksheet_free(worksheet);
223 free(data_validation);
224 }
225
226 /* Test: Error style == warning. */
CTEST(worksheet,test_write_data_validations_210)227 CTEST(worksheet, test_write_data_validations_210) {
228 char* got;
229 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" errorStyle=\"warning\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
230 FILE* testfile = lxw_tmpfile(NULL);
231
232 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
233 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
234 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
235 data_validation->minimum_number = 1;
236 data_validation->maximum_number = 10;
237 data_validation->error_type = LXW_VALIDATION_ERROR_TYPE_WARNING;
238
239 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
240 worksheet->file = testfile;
241
242 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
243 _worksheet_write_data_validations(worksheet);
244
245 RUN_XLSX_STREQ(exp, got);
246
247 lxw_worksheet_free(worksheet);
248 free(data_validation);
249 }
250
251 /* Test: Error style == information */
CTEST(worksheet,test_write_data_validations_211)252 CTEST(worksheet, test_write_data_validations_211) {
253 char* got;
254 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" errorStyle=\"information\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
255 FILE* testfile = lxw_tmpfile(NULL);
256
257 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
258 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
259 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
260 data_validation->minimum_number = 1;
261 data_validation->maximum_number = 10;
262 data_validation->error_type = LXW_VALIDATION_ERROR_TYPE_INFORMATION;
263
264 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
265 worksheet->file = testfile;
266
267 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
268 _worksheet_write_data_validations(worksheet);
269
270 RUN_XLSX_STREQ(exp, got);
271
272 lxw_worksheet_free(worksheet);
273 free(data_validation);
274 }
275
276 /* Test: Input title. */
CTEST(worksheet,test_write_data_validations_212)277 CTEST(worksheet, test_write_data_validations_212) {
278 char* got;
279 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" promptTitle=\"Input title January\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
280 FILE* testfile = lxw_tmpfile(NULL);
281
282 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
283 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
284 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
285 data_validation->minimum_number = 1;
286 data_validation->maximum_number = 10;
287 data_validation->input_title = "Input title January";
288
289 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
290 worksheet->file = testfile;
291
292 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
293 _worksheet_write_data_validations(worksheet);
294
295 RUN_XLSX_STREQ(exp, got);
296
297 lxw_worksheet_free(worksheet);
298 free(data_validation);
299 }
300
301 /* Test: Input title + input message. */
CTEST(worksheet,test_write_data_validations_213)302 CTEST(worksheet, test_write_data_validations_213) {
303 char* got;
304 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
305 FILE* testfile = lxw_tmpfile(NULL);
306
307 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
308 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
309 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
310 data_validation->minimum_number = 1;
311 data_validation->maximum_number = 10;
312 data_validation->input_title = "Input title January";
313 data_validation->input_message = "Input message February";
314
315 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
316 worksheet->file = testfile;
317
318 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
319 _worksheet_write_data_validations(worksheet);
320
321 RUN_XLSX_STREQ(exp, got);
322
323 lxw_worksheet_free(worksheet);
324 free(data_validation);
325 }
326
327 /* Test: Input title + input message + error title. */
CTEST(worksheet,test_write_data_validations_214)328 CTEST(worksheet, test_write_data_validations_214) {
329 char* got;
330 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" errorTitle=\"Error title March\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
331 FILE* testfile = lxw_tmpfile(NULL);
332
333 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
334 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
335 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
336 data_validation->minimum_number = 1;
337 data_validation->maximum_number = 10;
338 data_validation->input_title = "Input title January";
339 data_validation->input_message = "Input message February";
340 data_validation->error_title = "Error title March";
341
342 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
343 worksheet->file = testfile;
344
345 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
346 _worksheet_write_data_validations(worksheet);
347
348 RUN_XLSX_STREQ(exp, got);
349
350 lxw_worksheet_free(worksheet);
351 free(data_validation);
352 }
353
354 /* Test: Input title + input message + error title + error message. */
CTEST(worksheet,test_write_data_validations_215)355 CTEST(worksheet, test_write_data_validations_215) {
356 char* got;
357 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" errorTitle=\"Error title March\" error=\"Error message April\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
358 FILE* testfile = lxw_tmpfile(NULL);
359
360 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
361 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
362 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
363 data_validation->minimum_number = 1;
364 data_validation->maximum_number = 10;
365 data_validation->input_title = "Input title January";
366 data_validation->input_message = "Input message February";
367 data_validation->error_title = "Error title March";
368 data_validation->error_message = "Error message April";
369
370 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
371 worksheet->file = testfile;
372
373 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
374 _worksheet_write_data_validations(worksheet);
375
376 RUN_XLSX_STREQ(exp, got);
377
378 lxw_worksheet_free(worksheet);
379 free(data_validation);
380 }
381 /* Test: Input title. + input message + error title + error message - input message box. */
CTEST(worksheet,test_write_data_validations_216)382 CTEST(worksheet, test_write_data_validations_216) {
383 char* got;
384 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showErrorMessage=\"1\" errorTitle=\"Error title March\" error=\"Error message April\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
385 FILE* testfile = lxw_tmpfile(NULL);
386
387 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
388 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
389 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
390 data_validation->minimum_number = 1;
391 data_validation->maximum_number = 10;
392 data_validation->input_title = "Input title January";
393 data_validation->input_message = "Input message February";
394 data_validation->error_title = "Error title March";
395 data_validation->error_message = "Error message April";
396 data_validation->show_input = LXW_VALIDATION_OFF;
397
398 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
399 worksheet->file = testfile;
400
401 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
402 _worksheet_write_data_validations(worksheet);
403
404 RUN_XLSX_STREQ(exp, got);
405
406 lxw_worksheet_free(worksheet);
407 free(data_validation);
408 }
409
410 /* Test: Input title + input message + error title + error message - input message box - error message box. */
CTEST(worksheet,test_write_data_validations_217)411 CTEST(worksheet, test_write_data_validations_217) {
412 char* got;
413 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" errorTitle=\"Error title March\" error=\"Error message April\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
414 FILE* testfile = lxw_tmpfile(NULL);
415
416 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
417 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
418 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
419 data_validation->minimum_number = 1;
420 data_validation->maximum_number = 10;
421 data_validation->input_title = "Input title January";
422 data_validation->input_message = "Input message February";
423 data_validation->error_title = "Error title March";
424 data_validation->error_message = "Error message April";
425 data_validation->show_input = LXW_VALIDATION_OFF;
426 data_validation->show_error = LXW_VALIDATION_OFF;
427
428 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
429 worksheet->file = testfile;
430
431 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
432 _worksheet_write_data_validations(worksheet);
433
434 RUN_XLSX_STREQ(exp, got);
435
436 lxw_worksheet_free(worksheet);
437 free(data_validation);
438 }
439
440 /* Test: 'any' value on its own shouldn't produce a DV record. */
CTEST(worksheet,test_write_data_validations_218)441 CTEST(worksheet, test_write_data_validations_218) {
442 char* got;
443 char exp[] = "";
444 FILE* testfile = lxw_tmpfile(NULL);
445
446 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
447 data_validation->validate = LXW_VALIDATION_TYPE_ANY;
448
449 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
450 worksheet->file = testfile;
451
452 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
453 _worksheet_write_data_validations(worksheet);
454
455 RUN_XLSX_STREQ(exp, got);
456
457 lxw_worksheet_free(worksheet);
458 free(data_validation);
459 }
460
461 /* Test: Decimal = 1.2345 */
CTEST(worksheet,test_write_data_validations_219)462 CTEST(worksheet, test_write_data_validations_219) {
463 char* got;
464 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"decimal\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>1.2345</formula1></dataValidation></dataValidations>";
465 FILE* testfile = lxw_tmpfile(NULL);
466
467 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
468 data_validation->validate = LXW_VALIDATION_TYPE_DECIMAL;
469 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
470 data_validation->value_number = 1.2345;
471
472 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
473 worksheet->file = testfile;
474
475 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
476 _worksheet_write_data_validations(worksheet);
477
478 RUN_XLSX_STREQ(exp, got);
479
480 lxw_worksheet_free(worksheet);
481 free(data_validation);
482 }
483
484 /* Test: 28 List = a,bb,ccc */
CTEST(worksheet,test_write_data_validations_220)485 CTEST(worksheet, test_write_data_validations_220) {
486 char* got;
487 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"list\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>\"a,bb,ccc\"</formula1></dataValidation></dataValidations>";
488 FILE* testfile = lxw_tmpfile(NULL);
489 char *list[] = {"a", "bb", "ccc", NULL};
490
491 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
492 data_validation->validate = LXW_VALIDATION_TYPE_LIST;
493 data_validation->value_list = list;
494
495 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
496 worksheet->file = testfile;
497
498 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
499 _worksheet_write_data_validations(worksheet);
500
501 RUN_XLSX_STREQ(exp, got);
502
503 lxw_worksheet_free(worksheet);
504 free(data_validation);
505 }
506
507 /* Test: List = a,bb,ccc, No dropdown */
CTEST(worksheet,test_write_data_validations_221)508 CTEST(worksheet, test_write_data_validations_221) {
509 char* got;
510 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"list\" allowBlank=\"1\" showDropDown=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>\"a,bb,ccc\"</formula1></dataValidation></dataValidations>";
511 FILE* testfile = lxw_tmpfile(NULL);
512 char *list[] = {"a", "bb", "ccc", NULL};
513
514 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
515 data_validation->validate = LXW_VALIDATION_TYPE_LIST;
516 data_validation->value_list = list;
517 data_validation->dropdown = LXW_VALIDATION_OFF;
518
519 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
520 worksheet->file = testfile;
521
522 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
523 _worksheet_write_data_validations(worksheet);
524
525 RUN_XLSX_STREQ(exp, got);
526
527 lxw_worksheet_free(worksheet);
528 free(data_validation);
529 }
530
531 /* Test: List = $D$1:$D$5 */
CTEST(worksheet,test_write_data_validations_222)532 CTEST(worksheet, test_write_data_validations_222) {
533 char* got;
534 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"list\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"A1\"><formula1>$D$1:$D$5</formula1></dataValidation></dataValidations>";
535 FILE* testfile = lxw_tmpfile(NULL);
536
537 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
538 data_validation->validate = LXW_VALIDATION_TYPE_LIST_FORMULA;
539 data_validation->value_formula = "=$D$1:$D$5";
540
541 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
542 worksheet->file = testfile;
543
544 worksheet_data_validation_cell(worksheet, CELL("A1"), data_validation);
545 _worksheet_write_data_validations(worksheet);
546
547 RUN_XLSX_STREQ(exp, got);
548
549 lxw_worksheet_free(worksheet);
550 free(data_validation);
551 }
552
553 /* Test: Date = 39653 (2008-07-24) */
CTEST(worksheet,test_write_data_validations_223)554 CTEST(worksheet, test_write_data_validations_223) {
555 char* got;
556 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"date\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>39653</formula1></dataValidation></dataValidations>";
557 FILE* testfile = lxw_tmpfile(NULL);
558
559 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
560 data_validation->validate = LXW_VALIDATION_TYPE_DATE_NUMBER;
561 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
562 data_validation->value_number = 39653;
563
564 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
565 worksheet->file = testfile;
566
567 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
568 _worksheet_write_data_validations(worksheet);
569
570 RUN_XLSX_STREQ(exp, got);
571
572 lxw_worksheet_free(worksheet);
573 free(data_validation);
574 }
575
576 /* Test: Date = 2008-07-24 */
CTEST(worksheet,test_write_data_validations_224)577 CTEST(worksheet, test_write_data_validations_224) {
578 char* got;
579 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"date\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>39653</formula1></dataValidation></dataValidations>";
580 FILE* testfile = lxw_tmpfile(NULL);
581 lxw_datetime datetime1 = {2008, 7, 24, 0, 0, 0};
582
583 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
584 data_validation->validate = LXW_VALIDATION_TYPE_DATE;
585 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
586 data_validation->value_datetime = datetime1;
587
588 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
589 worksheet->file = testfile;
590
591 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
592 _worksheet_write_data_validations(worksheet);
593
594 RUN_XLSX_STREQ(exp, got);
595
596 lxw_worksheet_free(worksheet);
597 free(data_validation);
598 }
599
600 /* Test: Date between ranges. */
CTEST(worksheet,test_write_data_validations_225)601 CTEST(worksheet, test_write_data_validations_225) {
602 char* got;
603 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"date\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>39448</formula1><formula2>39794</formula2></dataValidation></dataValidations>";
604 FILE* testfile = lxw_tmpfile(NULL);
605 lxw_datetime datetime1 = {2008, 1, 1, 0, 0, 0};
606 lxw_datetime datetime2 = {2008, 12, 12, 0, 0, 0};
607
608 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
609 data_validation->validate = LXW_VALIDATION_TYPE_DATE;
610 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
611 data_validation->minimum_datetime = datetime1;
612 data_validation->maximum_datetime = datetime2;
613
614 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
615 worksheet->file = testfile;
616
617 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
618 _worksheet_write_data_validations(worksheet);
619
620 RUN_XLSX_STREQ(exp, got);
621
622 lxw_worksheet_free(worksheet);
623 free(data_validation);
624 }
625
626 /* Test: Time = 0.5 (12:00:00) */
CTEST(worksheet,test_write_data_validations_226)627 CTEST(worksheet, test_write_data_validations_226) {
628 char* got;
629 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"time\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>0.5</formula1></dataValidation></dataValidations>";
630 FILE* testfile = lxw_tmpfile(NULL);
631
632 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
633 data_validation->validate = LXW_VALIDATION_TYPE_TIME_NUMBER;
634 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
635 data_validation->value_number = 0.5;
636
637 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
638 worksheet->file = testfile;
639
640 worksheet_data_validation_cell(worksheet, CELL("B5:B5"), data_validation);
641 _worksheet_write_data_validations(worksheet);
642
643 RUN_XLSX_STREQ(exp, got);
644
645 lxw_worksheet_free(worksheet);
646 free(data_validation);
647 }
648
649 /* Test: Time = 12:00:00 */
CTEST(worksheet,test_write_data_validations_227)650 CTEST(worksheet, test_write_data_validations_227) {
651 char* got;
652 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"time\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>0.5</formula1></dataValidation></dataValidations>";
653 FILE* testfile = lxw_tmpfile(NULL);
654 lxw_datetime datetime1 = {0, 0, 0, 12, 0, 0};
655
656 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
657 data_validation->validate = LXW_VALIDATION_TYPE_TIME;
658 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
659 data_validation->value_datetime = datetime1;
660
661 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
662 worksheet->file = testfile;
663
664 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
665 _worksheet_write_data_validations(worksheet);
666
667 RUN_XLSX_STREQ(exp, got);
668
669 lxw_worksheet_free(worksheet);
670 free(data_validation);
671 }
672
673 /* Test: Check data validation range. */
CTEST(worksheet,test_write_data_validations_228)674 CTEST(worksheet, test_write_data_validations_228) {
675 char* got;
676 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"whole\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5:B10\"><formula1>1</formula1><formula2>10</formula2></dataValidation></dataValidations>";
677 FILE* testfile = lxw_tmpfile(NULL);
678
679 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
680 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
681 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
682 data_validation->minimum_number = 1;
683 data_validation->maximum_number = 10;
684
685 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
686 worksheet->file = testfile;
687
688 worksheet_data_validation_range(worksheet, RANGE("B5:B10"), data_validation);
689 _worksheet_write_data_validations(worksheet);
690
691 RUN_XLSX_STREQ(exp, got);
692
693 lxw_worksheet_free(worksheet);
694 free(data_validation);
695 }
696
697 /* Test: Multiple validations. */
CTEST(worksheet,test_write_data_validations_229)698 CTEST(worksheet, test_write_data_validations_229) {
699 char* got;
700 char exp[] = "<dataValidations count=\"2\"><dataValidation type=\"whole\" operator=\"greaterThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>10</formula1></dataValidation><dataValidation type=\"whole\" operator=\"lessThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"C10\"><formula1>10</formula1></dataValidation></dataValidations>";
701 FILE* testfile = lxw_tmpfile(NULL);
702
703 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
704 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
705 data_validation->criteria = LXW_VALIDATION_CRITERIA_GREATER_THAN;
706 data_validation->value_number = 10;
707
708 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
709 worksheet->file = testfile;
710
711 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
712
713 data_validation->validate = LXW_VALIDATION_TYPE_INTEGER;
714 data_validation->criteria = LXW_VALIDATION_CRITERIA_LESS_THAN;
715 data_validation->value_number = 10;
716 worksheet_data_validation_cell(worksheet, CELL("C10"), data_validation);
717
718 _worksheet_write_data_validations(worksheet);
719
720 RUN_XLSX_STREQ(exp, got);
721
722 lxw_worksheet_free(worksheet);
723 free(data_validation);
724 }
725
726 /* Test: 'any' with an input message should produce a dataValidation record. */
CTEST(worksheet,test_write_data_validations_230)727 CTEST(worksheet, test_write_data_validations_230) {
728 char* got;
729 char exp[] = "<dataValidations count=\"1\"><dataValidation allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" promptTitle=\"Input title January\" prompt=\"Input message February\" sqref=\"B5\"/></dataValidations>";
730 FILE* testfile = lxw_tmpfile(NULL);
731
732 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
733 data_validation->validate = LXW_VALIDATION_TYPE_ANY;
734 data_validation->input_title = "Input title January";
735 data_validation->input_message = "Input message February";
736
737 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
738 worksheet->file = testfile;
739
740 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
741 _worksheet_write_data_validations(worksheet);
742
743 RUN_XLSX_STREQ(exp, got);
744
745 lxw_worksheet_free(worksheet);
746 free(data_validation);
747 }
748
749 /* Test: length */
CTEST(worksheet,test_write_data_validations_231)750 CTEST(worksheet, test_write_data_validations_231) {
751 char* got;
752 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"textLength\" operator=\"greaterThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"A1\"><formula1>5</formula1></dataValidation></dataValidations>";
753 FILE* testfile = lxw_tmpfile(NULL);
754
755 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
756 data_validation->validate = LXW_VALIDATION_TYPE_LENGTH;
757 data_validation->criteria = LXW_VALIDATION_CRITERIA_GREATER_THAN;
758 data_validation->value_number = 5;
759
760 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
761 worksheet->file = testfile;
762
763 worksheet_data_validation_cell(worksheet, CELL("A1"), data_validation);
764 _worksheet_write_data_validations(worksheet);
765
766 RUN_XLSX_STREQ(exp, got);
767
768 lxw_worksheet_free(worksheet);
769 free(data_validation);
770 }
771
772
773 /* Test: length */
CTEST(worksheet,test_write_data_validations_232)774 CTEST(worksheet, test_write_data_validations_232) {
775 char* got;
776 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"textLength\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"A1\"><formula1>5</formula1><formula2>10</formula2></dataValidation></dataValidations>";
777 FILE* testfile = lxw_tmpfile(NULL);
778
779 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
780 data_validation->validate = LXW_VALIDATION_TYPE_LENGTH;
781 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
782 data_validation->minimum_number = 5;
783 data_validation->maximum_number = 10;
784
785 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
786 worksheet->file = testfile;
787
788 worksheet_data_validation_cell(worksheet, CELL("A1"), data_validation);
789 _worksheet_write_data_validations(worksheet);
790
791 RUN_XLSX_STREQ(exp, got);
792
793 lxw_worksheet_free(worksheet);
794 free(data_validation);
795 }
796
797 /* Test: length formula. */
CTEST(worksheet,test_write_data_validations_233)798 CTEST(worksheet, test_write_data_validations_233) {
799 char* got;
800 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"textLength\" operator=\"greaterThan\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"A1\"><formula1>H1</formula1></dataValidation></dataValidations>";
801 FILE* testfile = lxw_tmpfile(NULL);
802
803 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
804 data_validation->validate = LXW_VALIDATION_TYPE_LENGTH_FORMULA;
805 data_validation->criteria = LXW_VALIDATION_CRITERIA_GREATER_THAN;
806 data_validation->value_formula = "=H1";
807
808 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
809 worksheet->file = testfile;
810
811 worksheet_data_validation_cell(worksheet, CELL("A1"), data_validation);
812 _worksheet_write_data_validations(worksheet);
813
814 RUN_XLSX_STREQ(exp, got);
815
816 lxw_worksheet_free(worksheet);
817 free(data_validation);
818 }
819
820 /* Test: length formula. */
CTEST(worksheet,test_write_data_validations_234)821 CTEST(worksheet, test_write_data_validations_234) {
822 char* got;
823 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"textLength\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"A1\"><formula1>H1</formula1><formula2>H2</formula2></dataValidation></dataValidations>";
824 FILE* testfile = lxw_tmpfile(NULL);
825
826 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
827 data_validation->validate = LXW_VALIDATION_TYPE_LENGTH_FORMULA;
828 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
829 data_validation->minimum_formula = "=H1";
830 data_validation->maximum_formula = "=H2";
831
832 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
833 worksheet->file = testfile;
834
835 worksheet_data_validation_cell(worksheet, CELL("A1"), data_validation);
836 _worksheet_write_data_validations(worksheet);
837
838 RUN_XLSX_STREQ(exp, got);
839
840 lxw_worksheet_free(worksheet);
841 free(data_validation);
842 }
843
844 /* Test: Date = 2008-07-24 */
CTEST(worksheet,test_write_data_validations_235)845 CTEST(worksheet, test_write_data_validations_235) {
846 char* got;
847 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"date\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>H1</formula1></dataValidation></dataValidations>";
848 FILE* testfile = lxw_tmpfile(NULL);
849
850 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
851 data_validation->validate = LXW_VALIDATION_TYPE_DATE_FORMULA;
852 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
853 data_validation->value_formula = "=H1";
854
855 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
856 worksheet->file = testfile;
857
858 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
859 _worksheet_write_data_validations(worksheet);
860
861 RUN_XLSX_STREQ(exp, got);
862
863 lxw_worksheet_free(worksheet);
864 free(data_validation);
865 }
866
867 /* Test: Date between ranges. */
CTEST(worksheet,test_write_data_validations_236)868 CTEST(worksheet, test_write_data_validations_236) {
869 char* got;
870 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"date\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>H1</formula1><formula2>H2</formula2></dataValidation></dataValidations>";
871 FILE* testfile = lxw_tmpfile(NULL);
872
873 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
874 data_validation->validate = LXW_VALIDATION_TYPE_DATE_FORMULA;
875 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
876 data_validation->minimum_formula = "=H1";
877 data_validation->maximum_formula = "=H2";
878
879 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
880 worksheet->file = testfile;
881
882 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
883 _worksheet_write_data_validations(worksheet);
884
885 RUN_XLSX_STREQ(exp, got);
886
887 lxw_worksheet_free(worksheet);
888 free(data_validation);
889 }
890
891 /* Test: Time between ranges. */
CTEST(worksheet,test_write_data_validations_237)892 CTEST(worksheet, test_write_data_validations_237) {
893 char* got;
894 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"time\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>0</formula1><formula2>0.5</formula2></dataValidation></dataValidations>";
895 FILE* testfile = lxw_tmpfile(NULL);
896 lxw_datetime datetime1 = {0, 0, 0, 0, 0, 0};
897 lxw_datetime datetime2 = {0, 0, 0, 12, 0, 0};
898
899 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
900 data_validation->validate = LXW_VALIDATION_TYPE_TIME;
901 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
902 data_validation->minimum_datetime = datetime1;
903 data_validation->maximum_datetime = datetime2;
904
905 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
906 worksheet->file = testfile;
907
908 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
909 _worksheet_write_data_validations(worksheet);
910
911 RUN_XLSX_STREQ(exp, got);
912
913 lxw_worksheet_free(worksheet);
914 free(data_validation);
915 }
916
917 /* Test: Time formula */
CTEST(worksheet,test_write_data_validations_238)918 CTEST(worksheet, test_write_data_validations_238) {
919 char* got;
920 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"time\" operator=\"equal\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>H1</formula1></dataValidation></dataValidations>";
921 FILE* testfile = lxw_tmpfile(NULL);
922
923 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
924 data_validation->validate = LXW_VALIDATION_TYPE_TIME_FORMULA;
925 data_validation->criteria = LXW_VALIDATION_CRITERIA_EQUAL_TO;
926 data_validation->value_formula = "=H1";
927
928 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
929 worksheet->file = testfile;
930
931 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
932 _worksheet_write_data_validations(worksheet);
933
934 RUN_XLSX_STREQ(exp, got);
935
936 lxw_worksheet_free(worksheet);
937 free(data_validation);
938 }
939
940 /* Test: Time formula */
CTEST(worksheet,test_write_data_validations_239)941 CTEST(worksheet, test_write_data_validations_239) {
942 char* got;
943 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"time\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>H1</formula1><formula2>H2</formula2></dataValidation></dataValidations>";
944 FILE* testfile = lxw_tmpfile(NULL);
945
946 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
947 data_validation->validate = LXW_VALIDATION_TYPE_TIME_FORMULA;
948 data_validation->criteria = LXW_VALIDATION_CRITERIA_BETWEEN;
949 data_validation->minimum_formula = "=H1";
950 data_validation->maximum_formula = "=H2";
951
952 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
953 worksheet->file = testfile;
954
955 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
956 _worksheet_write_data_validations(worksheet);
957
958 RUN_XLSX_STREQ(exp, got);
959
960 lxw_worksheet_free(worksheet);
961 free(data_validation);
962 }
963
964 /* Test: length formula. */
CTEST(worksheet,test_write_data_validations_240)965 CTEST(worksheet, test_write_data_validations_240) {
966 char* got;
967 char exp[] = "<dataValidations count=\"1\"><dataValidation type=\"custom\" allowBlank=\"1\" showInputMessage=\"1\" showErrorMessage=\"1\" sqref=\"B5\"><formula1>10</formula1></dataValidation></dataValidations>";
968 FILE* testfile = lxw_tmpfile(NULL);
969
970 lxw_data_validation *data_validation = calloc(1, sizeof(lxw_data_validation));
971 data_validation->validate = LXW_VALIDATION_TYPE_CUSTOM_FORMULA;
972 data_validation->value_formula = "10";
973
974 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
975 worksheet->file = testfile;
976
977 worksheet_data_validation_cell(worksheet, CELL("B5"), data_validation);
978 _worksheet_write_data_validations(worksheet);
979
980 RUN_XLSX_STREQ(exp, got);
981
982 lxw_worksheet_free(worksheet);
983 free(data_validation);
984 }
985