#pragma once #include #include #include "../xlnt.h" class WorksheetTestSuite : public CxxTest::TestSuite { public: WorksheetTestSuite() { } void test_new_worksheet() { ws = Worksheet(wb); TS_ASSERT_EQUALS(wb, ws._parent); } void test_new_sheet_name() { wb.worksheets = []; ws = Worksheet(wb, title = ""); TS_ASSERT_EQUALS(repr(ws), ""); } void test_get_cell() { ws = Worksheet(wb); cell = ws.cell("A1"); TS_ASSERT_EQUALS(cell.get_coordinate(), "A1"); } void test_set_bad_title() { Worksheet(wb, "X" * 50); } void test_set_bad_title_character() { assert_raises(SheetTitleException, Worksheet, wb, "["); assert_raises(SheetTitleException, Worksheet, wb, "]"); assert_raises(SheetTitleException, Worksheet, wb, "*"); assert_raises(SheetTitleException, Worksheet, wb, ":"); assert_raises(SheetTitleException, Worksheet, wb, "?"); assert_raises(SheetTitleException, Worksheet, wb, "/"); assert_raises(SheetTitleException, Worksheet, wb, "\\"); } void test_worksheet_dimension() { ws = Worksheet(wb); TS_ASSERT_EQUALS("A1:A1", ws.calculate_dimension()); ws.cell("B12").value = "AAA"; TS_ASSERT_EQUALS("A1:B12", ws.calculate_dimension()); } void test_worksheet_range() { ws = Worksheet(wb); xlrange = ws.range("A1:C4"); assert isinstance(xlrange, tuple); TS_ASSERT_EQUALS(4, len(xlrange)); TS_ASSERT_EQUALS(3, len(xlrange[0])); } void test_worksheet_named_range() { ws = Worksheet(wb); wb.create_named_range("test_range", ws, "C5"); xlrange = ws.range("test_range"); assert isinstance(xlrange, Cell); TS_ASSERT_EQUALS(5, xlrange.row); } void test_bad_named_range() { ws = Worksheet(wb); ws.range("bad_range"); } void test_named_range_wrong_sheet() { ws1 = Worksheet(wb); ws2 = Worksheet(wb); wb.create_named_range("wrong_sheet_range", ws1, "C5"); ws2.range("wrong_sheet_range"); } void test_cell_offset() { ws = Worksheet(wb); TS_ASSERT_EQUALS("C17", ws.cell("B15").offset(2, 1).get_coordinate()); } void test_range_offset() { ws = Worksheet(wb); xlrange = ws.range("A1:C4", 1, 3); assert isinstance(xlrange, tuple); TS_ASSERT_EQUALS(4, len(xlrange)); TS_ASSERT_EQUALS(3, len(xlrange[0])); TS_ASSERT_EQUALS("D2", xlrange[0][0].get_coordinate()); } void test_cell_alternate_coordinates() { ws = Worksheet(wb); cell = ws.cell(row = 8, column = 4); TS_ASSERT_EQUALS("E9", cell.get_coordinate()); } void test_cell_insufficient_coordinates() { ws = Worksheet(wb); cell = ws.cell(row = 8); } void test_cell_range_name() { ws = Worksheet(wb); wb.create_named_range("test_range_single", ws, "B12"); assert_raises(CellCoordinatesException, ws.cell, "test_range_single"); c_range_name = ws.range("test_range_single"); c_range_coord = ws.range("B12"); c_cell = ws.cell("B12"); TS_ASSERT_EQUALS(c_range_coord, c_range_name); TS_ASSERT_EQUALS(c_range_coord, c_cell); } void test_garbage_collect() { ws = Worksheet(wb); ws.cell("A1").value = ""; ws.cell("B2").value = "0"; ws.cell("C4").value = 0; ws.garbage_collect(); for i, cell in enumerate(ws.get_cell_collection()) { TS_ASSERT_EQUALS(cell, [ws.cell("B2"), ws.cell("C4")][i]); } } void test_hyperlink_relationships() { ws = Worksheet(wb); TS_ASSERT_EQUALS(len(ws.relationships), 0); ws.cell("A1").hyperlink = "http:test.com"; TS_ASSERT_EQUALS(len(ws.relationships), 1); TS_ASSERT_EQUALS("rId1", ws.cell("A1").hyperlink_rel_id); TS_ASSERT_EQUALS("rId1", ws.relationships[0].id); TS_ASSERT_EQUALS("http:test.com", ws.relationships[0].target); TS_ASSERT_EQUALS("External", ws.relationships[0].target_mode); ws.cell("A2").hyperlink = "http:test2.com"; TS_ASSERT_EQUALS(len(ws.relationships), 2); TS_ASSERT_EQUALS("rId2", ws.cell("A2").hyperlink_rel_id); TS_ASSERT_EQUALS("rId2", ws.relationships[1].id); TS_ASSERT_EQUALS("http:test2.com", ws.relationships[1].target); TS_ASSERT_EQUALS("External", ws.relationships[1].target_mode); } void test_bad_relationship_type() { rel = Relationship("bad_type"); } void test_append_list() { ws = Worksheet(wb); ws.append(["This is A1", "This is B1"]); TS_ASSERT_EQUALS("This is A1", ws.cell("A1").value); TS_ASSERT_EQUALS("This is B1", ws.cell("B1").value); } void test_append_dict_letter() { ws = Worksheet(wb); ws.append({"A" : "This is A1", "C" : "This is C1"}); TS_ASSERT_EQUALS("This is A1", ws.cell("A1").value); TS_ASSERT_EQUALS("This is C1", ws.cell("C1").value); } void test_append_dict_index() { ws = Worksheet(wb); ws.append({0 : "This is A1", 2 : "This is C1"}); TS_ASSERT_EQUALS("This is A1", ws.cell("A1").value); TS_ASSERT_EQUALS("This is C1", ws.cell("C1").value); } void test_bad_append() { ws = Worksheet(wb); ws.append("test"); } void test_append_2d_list() { ws = Worksheet(wb); ws.append(["This is A1", "This is B1"]); ws.append(["This is A2", "This is B2"]); vals = ws.range("A1:B2"); TS_ASSERT_EQUALS((("This is A1", "This is B1"), ("This is A2", "This is B2"), ), flatten(vals)); } void test_rows() { ws = Worksheet(wb); ws.cell("A1").value = "first"; ws.cell("C9").value = "last"; rows = ws.rows; TS_ASSERT_EQUALS(len(rows), 9); TS_ASSERT_EQUALS(rows[0][0].value, "first"); TS_ASSERT_EQUALS(rows[-1][-1].value, "last"); } void test_cols() { ws = Worksheet(wb); ws.cell("A1").value = "first"; ws.cell("C9").value = "last"; cols = ws.columns; TS_ASSERT_EQUALS(len(cols), 3); TS_ASSERT_EQUALS(cols[0][0].value, "first"); TS_ASSERT_EQUALS(cols[-1][-1].value, "last"); } void test_auto_filter() { ws = Worksheet(wb); ws.auto_filter = ws.range("a1:f1"); assert ws.auto_filter == "A1:F1"; ws.auto_filter = ""; assert ws.auto_filter is None; ws.auto_filter = "c1:g9"; assert ws.auto_filter == "C1:G9"; } void test_page_margins() { ws = Worksheet(wb); ws.page_margins.left = 2.0; ws.page_margins.right = 2.0; ws.page_margins.top = 2.0; ws.page_margins.bottom = 2.0; ws.page_margins.header = 1.5; ws.page_margins.footer = 1.5; xml_string = write_worksheet(ws, None, None); assert "" in xml_string; ws = Worksheet(wb); xml_string = write_worksheet(ws, None, None); assert "Cell B1" in xml_string; ws.merge_cells("A1:B1"); xml_string = write_worksheet(ws, string_table, None); assert "Cell B1" not in xml_string; assert "" in xml_string; ws.unmerge_cells("A1:B1"); xml_string = write_worksheet(ws, string_table, None); assert "" not in xml_string; } void test_freeze() { ws = Worksheet(wb); ws.freeze_panes = ws.cell("b2"); assert ws.freeze_panes == "B2"; ws.freeze_panes = ""; assert ws.freeze_panes is None; ws.freeze_panes = "c5"; assert ws.freeze_panes == "C5"; ws.freeze_panes = ws.cell("A1"); assert ws.freeze_panes is None; } void test_printer_settings() { ws = Worksheet(wb); ws.page_setup.orientation = ws.ORIENTATION_LANDSCAPE; ws.page_setup.paperSize = ws.PAPERSIZE_TABLOID; ws.page_setup.fitToPage = True; ws.page_setup.fitToHeight = 0; ws.page_setup.fitToWidth = 1; xml_string = write_worksheet(ws, None, None); assert "" in xml_string; assert "" in xml_string; ws = Worksheet(wb); xml_string = write_worksheet(ws, None, None); assert "