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_format18)15 CTEST(worksheet, worksheet_condtional_format18) {
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:A12\"/>"
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 "<row r=\"10\" spans=\"1:1\">"
73 "<c r=\"A10\">"
74 "<v>10</v>"
75 "</c>"
76 "</row>"
77 "<row r=\"11\" spans=\"1:1\">"
78 "<c r=\"A11\">"
79 "<v>11</v>"
80 "</c>"
81 "</row>"
82 "<row r=\"12\" spans=\"1:1\">"
83 "<c r=\"A12\">"
84 "<v>12</v>"
85 "</c>"
86 "</row>"
87 "</sheetData>"
88 "<conditionalFormatting sqref=\"A3:A4 A1 A6:A8 A10 A12\">"
89 "<cfRule type=\"colorScale\" priority=\"1\">"
90 "<colorScale>"
91 "<cfvo type=\"min\" val=\"0\"/>"
92 "<cfvo type=\"percentile\" val=\"50\"/>"
93 "<cfvo type=\"max\" val=\"0\"/>"
94 "<color rgb=\"FFF8696B\"/>"
95 "<color rgb=\"FFFFEB84\"/>"
96 "<color rgb=\"FF63BE7B\"/>"
97 "</colorScale>"
98 "</cfRule>"
99 "</conditionalFormatting>"
100 "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>"
101 "</worksheet>";
102
103 FILE* testfile = lxw_tmpfile(NULL);
104
105 lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
106 worksheet->file = testfile;
107 worksheet_select(worksheet);
108
109 worksheet_write_number(worksheet, CELL("A1"), 1, NULL);
110 worksheet_write_number(worksheet, CELL("A2"), 2, NULL);
111 worksheet_write_number(worksheet, CELL("A3"), 3, NULL);
112 worksheet_write_number(worksheet, CELL("A4"), 4, NULL);
113 worksheet_write_number(worksheet, CELL("A5"), 5, NULL);
114 worksheet_write_number(worksheet, CELL("A6"), 6, NULL);
115 worksheet_write_number(worksheet, CELL("A7"), 7, NULL);
116 worksheet_write_number(worksheet, CELL("A8"), 8, NULL);
117 worksheet_write_number(worksheet, CELL("A9"), 9, NULL);
118 worksheet_write_number(worksheet, CELL("A10"), 10, NULL);
119 worksheet_write_number(worksheet, CELL("A11"), 11, NULL);
120 worksheet_write_number(worksheet, CELL("A12"), 12, NULL);
121
122 lxw_conditional_format *conditional_format = calloc(1, sizeof(lxw_conditional_format));
123
124 conditional_format->type = LXW_CONDITIONAL_3_COLOR_SCALE;
125 conditional_format->multi_range = "A3:A4 A1 A6:A8 A10 A12";
126 worksheet_conditional_format_range(worksheet, RANGE("A1:A12"), conditional_format);
127
128 free(conditional_format);
129
130 lxw_worksheet_assemble_xml_file(worksheet);
131
132 RUN_XLSX_STREQ_SHORT(exp, got);
133
134 lxw_worksheet_free(worksheet);
135 }
136