// Test the _write_font() function. CTEST(styles, write_font13) { char* got; char exp[] = "<font><b/><i/><strike/><outline/><shadow/><u/><vertAlign val=\"superscript\"/><sz val=\"12\"/><color rgb=\"FFFF0000\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); lxw_format *format = lxw_format_new(); format_set_bold(format); format_set_italic(format); format_set_font_size(format, 12); format_set_font_color(format, LXW_COLOR_RED); format_set_font_strikeout(format); format_set_font_outline(format); format_set_font_shadow(format); format_set_font_script(format, LXW_FONT_SUPERSCRIPT); format_set_underline(format, LXW_UNDERLINE_SINGLE); styles->file = testfile; _write_font(styles, format, LXW_FALSE); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); lxw_format_free(format); }
/* Test the _write_defined_name() method. */ CTEST(workbook, write_defined_names_sorted) { char* got; char exp[] = "<definedNames><definedName name=\"_Egg\">Sheet1!$A$1</definedName><definedName name=\"_Fog\">Sheet1!$A$1</definedName><definedName name=\"aaa\" localSheetId=\"1\">Sheet2!$A$1</definedName><definedName name=\"Abc\">Sheet1!$A$1</definedName><definedName name=\"Bar\" localSheetId=\"2\">'Sheet 3'!$A$1</definedName><definedName name=\"Bar\" localSheetId=\"0\">Sheet1!$A$1</definedName><definedName name=\"Bar\" localSheetId=\"1\">Sheet2!$A$1</definedName><definedName name=\"Baz\">0.98</definedName><definedName name=\"car\" localSheetId=\"2\">\"Saab 900\"</definedName></definedNames>"; FILE* testfile = lxw_tmpfile(NULL); lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; workbook_add_worksheet(workbook, NULL); workbook_add_worksheet(workbook, NULL); workbook_add_worksheet(workbook, "Sheet 3"); workbook_define_name(workbook, "'Sheet 3'!Bar", "='Sheet 3'!$A$1"); workbook_define_name(workbook, "Abc", "=Sheet1!$A$1" ); workbook_define_name(workbook, "Baz", "=0.98" ); workbook_define_name(workbook, "Sheet1!Bar", "=Sheet1!$A$1" ); workbook_define_name(workbook, "Sheet2!Bar", "=Sheet2!$A$1" ); workbook_define_name(workbook, "Sheet2!aaa", "=Sheet2!$A$1" ); workbook_define_name(workbook, "'Sheet 3'!car", "=\"Saab 900\"" ); workbook_define_name(workbook, "_Egg", "=Sheet1!$A$1" ); workbook_define_name(workbook, "_Fog", "=Sheet1!$A$1" ); _write_defined_names(workbook); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
// Test _xml_end_tag(). CTEST(xmlwriter, xml_end_tag) { char* got; char exp[] = "</foo>"; FILE* testfile = lxw_tmpfile(NULL); lxw_xml_end_tag(testfile, "foo"); RUN_XLSX_STREQ(exp, got); }
// Test _xml_empty_tag() with no attributes. CTEST(xmlwriter, xml_data_element) { char* got; char exp[] = "<foo>bar</foo>"; FILE* testfile = lxw_tmpfile(NULL); lxw_xml_data_element(testfile, "foo", "bar", NULL); RUN_XLSX_STREQ(exp, got); }
// Test _xml_declaration(). CTEST(xmlwriter, xml_declaration) { char* got; char exp[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"; FILE* testfile = lxw_tmpfile(NULL); lxw_xml_declaration(testfile); RUN_XLSX_STREQ(exp, got); }
// Test the _write_sheet_format_pr() function. CTEST(worksheet, write_sheet_format_pr) { char* got; char exp[] = "<sheetFormatPr defaultRowHeight=\"15\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; _worksheet_write_sheet_format_pr(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
// Test the _write_dxfs() function. CTEST(styles, write_dxfs) { char* got; char exp[] = "<dxfs count=\"0\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); styles->file = testfile; _write_dxfs(styles); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); }
// Test _xml_declaration(). CTEST(chart, xml_declaration) { char* got; char exp[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"; FILE* testfile = lxw_tmpfile(NULL); lxw_chart *chart = lxw_chart_new(LXW_CHART_AREA); chart->file = testfile; _chart_xml_declaration(chart); RUN_XLSX_STREQ(exp, got); lxw_chart_free(chart); }
// Test the _write_style_xf() function. CTEST(styles, write_style_xf) { char* got; char exp[] = "<xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); styles->file = testfile; _write_style_xf(styles); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); }
/* 1. Test the _write_sheet_pr() method. */ CTEST(worksheet, write_write_sheet_pr01) { char* got; char exp[] = "<sheetPr><pageSetUpPr fitToPage=\"1\"/></sheetPr>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; worksheet->fit_page = 1; _worksheet_write_sheet_pr(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
/* 2. Test the _write_sheet_pr() method. */ CTEST(worksheet, write_write_sheet_pr02) { char* got; char exp[] = "<sheetPr><tabColor rgb=\"FFFF0000\"/></sheetPr>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; worksheet_set_tab_color(worksheet, LXW_COLOR_RED); _worksheet_write_sheet_pr(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
// Test the _write_sheet_data() function. CTEST(worksheet, write_sheet_data) { char* got; char exp[] = "<sheetData/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; _worksheet_write_sheet_data(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
// Test the _write_cell_style() function. CTEST(styles, write_cell_style) { char* got; char exp[] = "<cellStyle name=\"Normal\" xfId=\"0\" builtinId=\"0\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); styles->file = testfile; _write_cell_style(styles); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); }
// Test the _write_file_version() function. CTEST(workbook, write_file_version) { char* got; char exp[] = "<fileVersion appName=\"xl\" lastEdited=\"4\" lowestEdited=\"4\" rupBuild=\"4505\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; _write_file_version(workbook); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
// Test the _write_workbook_pr() function. CTEST(workbook, write_workbook_pr) { char* got; char exp[] = "<workbookPr defaultThemeVersion=\"124226\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; _write_workbook_pr(workbook); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
// Test _xml_declaration(). CTEST(relationships, xml_declaration) { char* got; char exp[] = "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"yes\"?>\n"; FILE* testfile = lxw_tmpfile(NULL); lxw_relationships *relationships = lxw_relationships_new(); relationships->file = testfile; _relationships_xml_declaration(relationships); RUN_XLSX_STREQ(exp, got); lxw_free_relationships(relationships); }
// Test the _write_style_sheet() function. CTEST(styles, write_style_sheet) { char* got; char exp[] = "<styleSheet xmlns=\"http://schemas.openxmlformats.org/spreadsheetml/2006/main\">"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); styles->file = testfile; _write_style_sheet(styles); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); }
// Test the _write_calc_pr() function. CTEST(workbook, write_calc_pr) { char* got; char exp[] = "<calcPr calcId=\"124519\" fullCalcOnLoad=\"1\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; _write_calc_pr(workbook); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
/* Test the _write_defined_name() method. */ CTEST(workbook, write_defined_name) { char* got; char exp[] = "<definedName name=\"_xlnm.Print_Titles\" localSheetId=\"0\">Sheet1!$1:$1</definedName>"; FILE* testfile = lxw_tmpfile(NULL); lxw_defined_name defined_name = {0, 0, "_xlnm.Print_Titles", "", "Sheet1!$1:$1", "", "", {NULL, NULL}}; lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; _write_defined_name(workbook, &defined_name); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
// Test the _write_row() function. CTEST(worksheet, write_row) { char* got; char exp[] = "<row r=\"1\"/>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; lxw_row *row = _get_row_list(worksheet->table, 0); _write_row(worksheet, row, NULL); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
/* 1. Test the _write_sheet_views() method with split panes + selection. */ CTEST(worksheet, set_selection31) { char* got; char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane ySplit=\"600\" topLeftCell=\"A2\" activePane=\"bottomLeft\"/><selection pane=\"bottomLeft\" activeCell=\"A2\" sqref=\"A2\"/></sheetView></sheetViews>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; worksheet_select(worksheet); worksheet_set_selection(worksheet, RANGE("A2:A2")); worksheet_split_panes(worksheet, 15, 0); _worksheet_write_sheet_views(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
/* 4. Test the _write_sheet_views() method with split panes + selection. */ CTEST(worksheet, set_selection34) { char* got; char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"6150\" ySplit=\"1200\" topLeftCell=\"G4\" activePane=\"bottomRight\"/><selection pane=\"topRight\" activeCell=\"G1\" sqref=\"G1\"/><selection pane=\"bottomLeft\" activeCell=\"A4\" sqref=\"A4\"/><selection pane=\"bottomRight\" activeCell=\"I5\" sqref=\"I5\"/></sheetView></sheetViews>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; worksheet_select(worksheet); worksheet_set_selection(worksheet, RANGE("I5:I5")); worksheet_split_panes(worksheet, 45, 54.14); _worksheet_write_sheet_views(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
/* 2. Test the _write_sheet_views() method with split panes + selection. */ CTEST(worksheet, set_selection32) { char* got; char exp[] = "<sheetViews><sheetView tabSelected=\"1\" workbookViewId=\"0\"><pane xSplit=\"1350\" topLeftCell=\"B1\" activePane=\"topRight\"/><selection pane=\"topRight\" activeCell=\"B1\" sqref=\"B1\"/></sheetView></sheetViews>"; FILE* testfile = lxw_tmpfile(NULL); lxw_worksheet *worksheet = lxw_worksheet_new(NULL); worksheet->file = testfile; worksheet_select(worksheet); worksheet_set_selection(worksheet, RANGE("B1:B1")); worksheet_split_panes(worksheet, 0, 8.43); _worksheet_write_sheet_views(worksheet); RUN_XLSX_STREQ(exp, got); lxw_worksheet_free(worksheet); }
// Test _xml_start_tag_unencoded() with attributes. CTEST(xmlwriter, xml_start_tag_unencoded) { char* got; char exp[] = "<foo span=\"&<>\"\">"; FILE* testfile = lxw_tmpfile(NULL); struct xml_attribute_list attributes; struct xml_attribute *attribute; LXW_INIT_ATTRIBUTES(); LXW_PUSH_ATTRIBUTES_STR("span", "&<>\""); lxw_xml_start_tag_unencoded(testfile, "foo", &attributes); RUN_XLSX_STREQ(exp, got); LXW_FREE_ATTRIBUTES(); }
// Test _xml_start_tag() with attributes requiring escaping. CTEST(xmlwriter, xml_start_tag_with_attributes_to_escape) { char* got; char exp[] = "<foo span=\"&<>"\">"; FILE* testfile = lxw_tmpfile(NULL); struct xml_attribute_list attributes; struct xml_attribute *attribute; LXW_INIT_ATTRIBUTES(); LXW_PUSH_ATTRIBUTES_STR("span", "&<>\""); lxw_xml_start_tag(testfile, "foo", &attributes); RUN_XLSX_STREQ(exp, got); LXW_FREE_ATTRIBUTES(); }
// Test _xml_data_element() with data requiring escaping. CTEST(xmlwriter, xml_data_element_with_escapes) { char* got; char exp[] = "<foo span=\"8\">&<>\"</foo>"; FILE* testfile = lxw_tmpfile(NULL); struct xml_attribute_list attributes; struct xml_attribute *attribute; LXW_INIT_ATTRIBUTES(); LXW_PUSH_ATTRIBUTES_STR("span", "8"); lxw_xml_data_element(testfile, "foo", "&<>\"", &attributes); RUN_XLSX_STREQ(exp, got); LXW_FREE_ATTRIBUTES(); }
// Test _xml_start_tag() with attributes. CTEST(xmlwriter, xml_start_tag_with_attributes) { char* got; char exp[] = "<foo span=\"8\" baz=\"7\">"; FILE* testfile = lxw_tmpfile(NULL); struct xml_attribute_list attributes; struct xml_attribute *attribute; LXW_INIT_ATTRIBUTES(); LXW_PUSH_ATTRIBUTES_STR("span", "8"); LXW_PUSH_ATTRIBUTES_STR("baz", "7"); lxw_xml_start_tag(testfile, "foo", &attributes); RUN_XLSX_STREQ(exp, got); LXW_FREE_ATTRIBUTES(); }
/* Test the _write_defined_names() method. */ CTEST(workbook, write_defined_names) { char* got; char exp[] = "<definedNames><definedName name=\"_xlnm.Print_Titles\" localSheetId=\"0\">Sheet1!$1:$1</definedName></definedNames>"; FILE* testfile = lxw_tmpfile(NULL); lxw_workbook *workbook = workbook_new(NULL); workbook->file = testfile; workbook_add_worksheet(workbook, NULL); _store_defined_name(workbook, "_xlnm.Print_Titles", "", "Sheet1!$1:$1", 0, 0); _write_defined_names(workbook); RUN_XLSX_STREQ(exp, got); lxw_workbook_free(workbook); }
// Test the _write_font() function. CTEST(styles, write_font01) { char* got; char exp[] = "<font><sz val=\"11\"/><color theme=\"1\"/><name val=\"Calibri\"/><family val=\"2\"/><scheme val=\"minor\"/></font>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); lxw_format *format = lxw_format_new(); styles->file = testfile; _write_font(styles, format, LXW_FALSE); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); lxw_format_free(format); }
// Test the _write_cell_xfs() function. CTEST(styles, write_cell_xfs) { char* got; char exp[] = "<cellXfs count=\"1\"><xf numFmtId=\"0\" fontId=\"0\" fillId=\"0\" borderId=\"0\" xfId=\"0\"/></cellXfs>"; FILE* testfile = lxw_tmpfile(NULL); lxw_styles *styles = lxw_styles_new(); lxw_format *format = lxw_format_new(); STAILQ_INSERT_TAIL(styles->xf_formats, format, list_pointers); styles->file = testfile; styles->xf_count = 1; _write_cell_xfs(styles); RUN_XLSX_STREQ(exp, got); lxw_styles_free(styles); }