mirror of
https://github.com/tfussell/xlnt.git
synced 2024-03-22 13:11:17 +08:00
240 lines
7.3 KiB
C++
240 lines
7.3 KiB
C++
#pragma once
|
|
|
|
#include <iostream>
|
|
#include <cxxtest/TestSuite.h>
|
|
|
|
#include "../xlnt.h"
|
|
|
|
class WriteTestSuite : public CxxTest::TestSuite
|
|
{
|
|
public:
|
|
WriteTestSuite()
|
|
{
|
|
|
|
}
|
|
|
|
void test_write_empty_workbook()
|
|
{
|
|
make_tmpdir();
|
|
wb = Workbook();
|
|
dest_filename = os.path.join(TMPDIR, "empty_book.xlsx");
|
|
save_workbook(wb, dest_filename);
|
|
assert os.path.isfile(dest_filename);
|
|
clean_tmpdir();
|
|
}
|
|
|
|
void test_write_virtual_workbook()
|
|
{
|
|
old_wb = Workbook();
|
|
saved_wb = save_virtual_workbook(old_wb);
|
|
new_wb = load_workbook(BytesIO(saved_wb));
|
|
assert new_wb;
|
|
}
|
|
|
|
void test_write_workbook_rels()
|
|
{
|
|
wb = Workbook();
|
|
content = write_workbook_rels(wb);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"workbook.xml.rels"), content);
|
|
}
|
|
|
|
void test_write_workbook()
|
|
{
|
|
wb = Workbook();
|
|
content = write_workbook(wb);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"workbook.xml"), content);
|
|
}
|
|
|
|
|
|
void test_write_string_table()
|
|
{
|
|
table = {"hello": 1, "world" : 2, "nice" : 3};
|
|
content = write_string_table(table);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sharedStrings.xml"), content);
|
|
}
|
|
|
|
void test_write_worksheet()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F42").value = "hello";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1.xml"), content);
|
|
}
|
|
|
|
void test_write_hidden_worksheet()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.sheet_state = ws.SHEETSTATE_HIDDEN;
|
|
ws.cell("F42").value = "hello";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1.xml"), content);
|
|
}
|
|
|
|
void test_write_bool()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F42").value = False;
|
|
ws.cell("F43").value = True;
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_bool.xml"), content);
|
|
}
|
|
|
|
void test_write_formula()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F1").value = 10;
|
|
ws.cell("F2").value = 32;
|
|
ws.cell("F3").value = "=F1+F2";
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_formula.xml"), content);
|
|
}
|
|
|
|
void test_write_style()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F1").value = "13%";
|
|
style_id_by_hash = StyleWriter(wb).get_style_by_hash();
|
|
content = write_worksheet(ws, {}, style_id_by_hash);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_style.xml"), content);
|
|
}
|
|
|
|
void test_write_height()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F1").value = 10;
|
|
ws.row_dimensions[ws.cell("F1").row].height = 30;
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_height.xml"), content);
|
|
}
|
|
|
|
void test_write_hyperlink()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("A1").value = "test";
|
|
ws.cell("A1").hyperlink = "http:test.com";
|
|
content = write_worksheet(ws, {"test": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_hyperlink.xml"), content);
|
|
}
|
|
|
|
void test_write_hyperlink_rels()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
TS_ASSERT_EQUALS(0, len(ws.relationships));
|
|
ws.cell("A1").value = "test";
|
|
ws.cell("A1").hyperlink = "http:test.com/";
|
|
TS_ASSERT_EQUALS(1, len(ws.relationships));
|
|
ws.cell("A2").value = "test";
|
|
ws.cell("A2").hyperlink = "http:test2.com/";
|
|
TS_ASSERT_EQUALS(2, len(ws.relationships));
|
|
content = write_worksheet_rels(ws, 1);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_hyperlink.xml.rels"), content);
|
|
}
|
|
|
|
void test_hyperlink_value()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("A1").hyperlink = "http:test.com";
|
|
TS_ASSERT_EQUALS("http:test.com", ws.cell("A1").value);
|
|
ws.cell("A1").value = "test";
|
|
TS_ASSERT_EQUALS("test", ws.cell("A1").value);
|
|
}
|
|
|
|
void test_write_auto_filter()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.worksheets[0];
|
|
ws.cell("F42").value = "hello";
|
|
ws.auto_filter = "A1:F1";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_auto_filter.xml"), content);
|
|
|
|
content = write_workbook(wb);
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"workbook_auto_filter.xml"), content);
|
|
}
|
|
|
|
void test_freeze_panes_horiz()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F42").value = "hello";
|
|
ws.freeze_panes = "A4";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_freeze_panes_horiz.xml"), content);
|
|
}
|
|
|
|
void test_freeze_panes_vert()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F42").value = "hello";
|
|
ws.freeze_panes = "D1";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_freeze_panes_vert.xml"), content);
|
|
}
|
|
|
|
void test_freeze_panes_both()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("F42").value = "hello";
|
|
ws.freeze_panes = "D4";
|
|
content = write_worksheet(ws, {"hello": 0}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"sheet1_freeze_panes_both.xml"), content);
|
|
}
|
|
|
|
void test_long_number()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("A1").value = 9781231231230;
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"long_number.xml"), content);
|
|
}
|
|
|
|
void test_decimal()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("A1").value = decimal.Decimal("3.14");
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"decimal.xml"), content);
|
|
}
|
|
|
|
void test_short_number()
|
|
{
|
|
wb = Workbook();
|
|
ws = wb.create_sheet();
|
|
ws.cell("A1").value = 1234567890;
|
|
content = write_worksheet(ws, {}, {});
|
|
assert_equals_file_content(os.path.join(DATADIR, "writer", "expected", \
|
|
"short_number.xml"), content);
|
|
}
|
|
};
|