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/workbook.h"
12 #include "../../../include/xlsxwriter/shared_strings.h"
13
14 /* Test a valid sheet name. */
CTEST(workbook,validate_worksheet_name01)15 CTEST(workbook, validate_worksheet_name01) {
16
17 const char* sheetname = "123456789_123456789_123456789_1";
18
19 lxw_workbook *workbook = workbook_new(NULL);
20 lxw_error exp = LXW_NO_ERROR;
21 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
22
23 ASSERT_EQUAL(exp, got);
24
25 lxw_workbook_free(workbook);
26 }
27
28 /* Test a sheet name that is too long. */
CTEST(workbook,validate_worksheet_name02)29 CTEST(workbook, validate_worksheet_name02) {
30
31 const char* sheetname = "123456789_123456789_123456789_12";
32
33 lxw_workbook *workbook = workbook_new(NULL);
34 lxw_error exp = LXW_ERROR_SHEETNAME_LENGTH_EXCEEDED;
35 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
36
37 ASSERT_EQUAL(exp, got);
38
39 lxw_workbook_free(workbook);
40 }
41
42 /* Test a sheet name contains invalid characters. */
CTEST(workbook,validate_worksheet_name03)43 CTEST(workbook, validate_worksheet_name03) {
44
45 const char* sheetname = "Sheet[1]";
46
47 lxw_workbook *workbook = workbook_new(NULL);
48 lxw_error exp = LXW_ERROR_INVALID_SHEETNAME_CHARACTER;
49 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
50
51 ASSERT_EQUAL(exp, got);
52
53 lxw_workbook_free(workbook);
54 }
55
56 /* Test a sheet name that already exists. */
CTEST(workbook,validate_worksheet_name04)57 CTEST(workbook, validate_worksheet_name04) {
58
59 const char* sheetname = "Sheet1";
60
61 lxw_workbook *workbook = workbook_new(NULL);
62 workbook_add_worksheet(workbook, sheetname);
63
64 lxw_error exp = LXW_ERROR_SHEETNAME_ALREADY_USED;
65 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
66
67 ASSERT_EQUAL(exp, got);
68
69 lxw_workbook_free(workbook);
70 }
71
72 /* Test a sheet name that starts with an apostrophe. */
CTEST(workbook,validate_worksheet_name05)73 CTEST(workbook, validate_worksheet_name05) {
74
75 const char* sheetname = "'Sheet1";
76
77 lxw_workbook *workbook = workbook_new(NULL);
78 lxw_error exp = LXW_ERROR_SHEETNAME_START_END_APOSTROPHE;
79 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
80
81 ASSERT_EQUAL(exp, got);
82
83 lxw_workbook_free(workbook);
84 }
85
86 /* Test a sheet name that ends with an apostrophe. */
CTEST(workbook,validate_worksheet_name06)87 CTEST(workbook, validate_worksheet_name06) {
88
89 const char* sheetname = "Sheet1'";
90
91 lxw_workbook *workbook = workbook_new(NULL);
92 lxw_error exp = LXW_ERROR_SHEETNAME_START_END_APOSTROPHE;
93 lxw_error got = workbook_validate_sheet_name(workbook, sheetname);
94
95 ASSERT_EQUAL(exp, got);
96
97 lxw_workbook_free(workbook);
98 }
99
100 /* Test a sheet name that already exists, case insensitive. */
CTEST(workbook,validate_worksheet_name07)101 CTEST(workbook, validate_worksheet_name07) {
102
103 const char* sheetname = "Sheet1";
104
105 lxw_workbook *workbook = workbook_new(NULL);
106 workbook_add_worksheet(workbook, sheetname);
107
108 lxw_error exp = LXW_ERROR_SHEETNAME_ALREADY_USED;
109 lxw_error got = workbook_validate_sheet_name(workbook, "sheet1");
110
111 ASSERT_EQUAL(exp, got);
112
113 lxw_workbook_free(workbook);
114 }
115
116 /* Test a sheet name that already exists, case insensitive. */
CTEST(workbook,validate_worksheet_name08)117 CTEST(workbook, validate_worksheet_name08) {
118
119 const char* sheetname = "Café";
120
121 lxw_workbook *workbook = workbook_new(NULL);
122 workbook_add_worksheet(workbook, sheetname);
123
124 lxw_error exp = LXW_ERROR_SHEETNAME_ALREADY_USED;
125 lxw_error got = workbook_validate_sheet_name(workbook, "café");
126
127 ASSERT_EQUAL(exp, got);
128
129 lxw_workbook_free(workbook);
130 }
131
132 /* Test a sheet name that already exists, case insensitive. */
CTEST(workbook,validate_worksheet_name09)133 CTEST(workbook, validate_worksheet_name09) {
134
135 const char* sheetname = "abcde";
136
137 lxw_workbook *workbook = workbook_new(NULL);
138 workbook_add_worksheet(workbook, sheetname);
139
140 lxw_error exp = LXW_ERROR_SHEETNAME_ALREADY_USED;
141 lxw_error got = workbook_validate_sheet_name(workbook, "ABCDE");
142
143 ASSERT_EQUAL(exp, got);
144
145 lxw_workbook_free(workbook);
146 }
147