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 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin01)14 CTEST(worksheet, write_page_margin01) {
15     char* got;
16     char exp[] = "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" "
17                  "bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>";
18     FILE* testfile = lxw_tmpfile(NULL);
19 
20     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
21     worksheet->file = testfile;
22 
23     _worksheet_write_page_margins(worksheet);
24 
25     RUN_XLSX_STREQ(exp, got);
26 
27     lxw_worksheet_free(worksheet);
28 }
29 
30 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin02)31 CTEST(worksheet, write_page_margin02) {
32     char* got;
33     char exp[] = "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" "
34                  "bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>";
35     FILE* testfile = lxw_tmpfile(NULL);
36 
37     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
38     worksheet->file = testfile;
39 
40     worksheet_set_margins(worksheet, -1, -1, -1, -1);
41     _worksheet_write_page_margins(worksheet);
42 
43     RUN_XLSX_STREQ(exp, got);
44 
45     lxw_worksheet_free(worksheet);
46 }
47 
48 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin03)49 CTEST(worksheet, write_page_margin03) {
50     char* got;
51     char exp[] = "<pageMargins left=\"0.8\" right=\"0.7\" top=\"0.75\" "
52                  "bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>";
53     FILE* testfile = lxw_tmpfile(NULL);
54 
55     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
56     worksheet->file = testfile;
57 
58     worksheet_set_margins(worksheet, 0.8, -1, -1, -1);
59     _worksheet_write_page_margins(worksheet);
60 
61     RUN_XLSX_STREQ(exp, got);
62 
63     lxw_worksheet_free(worksheet);
64 }
65 
66 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin04)67 CTEST(worksheet, write_page_margin04) {
68     char* got;
69     char exp[] = "<pageMargins left=\"0.7\" right=\"0.8\" top=\"0.75\" "
70                  "bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>";
71     FILE* testfile = lxw_tmpfile(NULL);
72 
73     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
74     worksheet->file = testfile;
75 
76     worksheet_set_margins(worksheet, -1, 0.8, -1, -1);
77     _worksheet_write_page_margins(worksheet);
78 
79     RUN_XLSX_STREQ(exp, got);
80 
81     lxw_worksheet_free(worksheet);
82 }
83 
84 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin05)85 CTEST(worksheet, write_page_margin05) {
86     char* got;
87     char exp[] = "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.8\" "
88                  "bottom=\"0.75\" header=\"0.3\" footer=\"0.3\"/>";
89     FILE* testfile = lxw_tmpfile(NULL);
90 
91     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
92     worksheet->file = testfile;
93 
94     worksheet_set_margins(worksheet, -1, -1, 0.8, -1);
95     _worksheet_write_page_margins(worksheet);
96 
97     RUN_XLSX_STREQ(exp, got);
98 
99     lxw_worksheet_free(worksheet);
100 }
101 
102 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin06)103 CTEST(worksheet, write_page_margin06) {
104     char* got;
105     char exp[] = "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" "
106                  "bottom=\"0.8\" header=\"0.3\" footer=\"0.3\"/>";
107     FILE* testfile = lxw_tmpfile(NULL);
108 
109     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
110     worksheet->file = testfile;
111 
112     worksheet_set_margins(worksheet, -1, -1, -1, 0.8);
113     _worksheet_write_page_margins(worksheet);
114 
115     RUN_XLSX_STREQ(exp, got);
116 
117     lxw_worksheet_free(worksheet);
118 }
119 
120 /* Test the _write_page_margins() method. */
CTEST(worksheet,write_page_margin07)121 CTEST(worksheet, write_page_margin07) {
122     char* got;
123     char exp[] = "<pageMargins left=\"0.7\" right=\"0.7\" top=\"0.75\" "
124                  "bottom=\"0.75\" header=\"0.2\" footer=\"0.4\"/>";
125     FILE* testfile = lxw_tmpfile(NULL);
126     lxw_header_footer_options header_options = {.margin = 0.2};
127     lxw_header_footer_options footer_options = {.margin = 0.4};
128 
129     lxw_worksheet *worksheet = lxw_worksheet_new(NULL);
130     worksheet->file = testfile;
131 
132     worksheet_set_header_opt(worksheet, "", &header_options);
133     worksheet_set_footer_opt(worksheet, "", &footer_options);
134 
135     _worksheet_write_page_margins(worksheet);
136 
137     RUN_XLSX_STREQ(exp, got);
138 
139     lxw_worksheet_free(worksheet);
140 }
141 
142