2014-05-09 03:32:12 +08:00
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include <iostream>
|
|
|
|
#include <cxxtest/TestSuite.h>
|
|
|
|
|
2014-05-10 03:54:06 +08:00
|
|
|
#include "../xlnt.h"
|
2014-05-09 03:32:12 +08:00
|
|
|
|
|
|
|
class ReadTestSuite : public CxxTest::TestSuite
|
|
|
|
{
|
|
|
|
public:
|
|
|
|
ReadTestSuite()
|
|
|
|
{
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_standalone_worksheet()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "reader", "sheet2.xml")
|
|
|
|
ws = None
|
|
|
|
handle = open(path)
|
|
|
|
try :
|
|
|
|
ws = read_worksheet(handle.read(), DummyWb(),
|
|
|
|
"Sheet 2", {1: "hello"}, {1: Style()})
|
|
|
|
finally :
|
|
|
|
handle.close()
|
|
|
|
assert isinstance(ws, Worksheet)
|
|
|
|
TS_ASSERT_EQUALS(ws.cell("G5").value, "hello")
|
|
|
|
TS_ASSERT_EQUALS(ws.cell("D30").value, 30)
|
|
|
|
TS_ASSERT_EQUALS(ws.cell("K9").value, 0.09)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_standard_workbook()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "genuine", "empty.xlsx")
|
|
|
|
wb = load_workbook(path)
|
|
|
|
assert isinstance(wb, Workbook)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_standard_workbook_from_fileobj()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "genuine", "empty.xlsx")
|
|
|
|
fo = open(path, mode = "rb")
|
|
|
|
wb = load_workbook(fo)
|
|
|
|
assert isinstance(wb, Workbook)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_worksheet()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "genuine", "empty.xlsx")
|
|
|
|
wb = load_workbook(path)
|
|
|
|
sheet2 = wb.get_sheet_by_name("Sheet2 - Numbers")
|
|
|
|
assert isinstance(sheet2, Worksheet)
|
|
|
|
TS_ASSERT_EQUALS("This is cell G5", sheet2.cell("G5").value)
|
|
|
|
TS_ASSERT_EQUALS(18, sheet2.cell("D18").value)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_nostring_workbook()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
genuine_wb = os.path.join(DATADIR, "genuine", "empty-no-string.xlsx")
|
|
|
|
wb = load_workbook(genuine_wb)
|
|
|
|
assert isinstance(wb, Workbook)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_empty_file()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
std::string null_file = os.path.join(DATADIR, "reader", "null_file.xlsx");
|
|
|
|
xlnt::workbook wb;
|
|
|
|
TS_ASSERT_THROWS(InvalidFile, wb.load(null_file));
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
@raises(InvalidFileException)
|
2014-05-09 03:32:12 +08:00
|
|
|
void test_read_empty_archive()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
null_file = os.path.join(DATADIR, "reader", "null_archive.xlsx")
|
|
|
|
wb = load_workbook(null_file)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_dimension()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "reader", "sheet2.xml")
|
2014-05-09 03:32:12 +08:00
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
dimension = None
|
|
|
|
handle = open(path)
|
|
|
|
try :
|
|
|
|
dimension = read_dimension(xml_source = handle.read())
|
|
|
|
finally :
|
|
|
|
handle.close()
|
2014-05-09 03:32:12 +08:00
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(("D", 1, "K", 30), dimension)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_calculate_dimension_iter()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "genuine", "empty.xlsx")
|
|
|
|
wb = load_workbook(filename = path, use_iterators = True)
|
|
|
|
sheet2 = wb.get_sheet_by_name("Sheet2 - Numbers")
|
|
|
|
dimensions = sheet2.calculate_dimension()
|
|
|
|
TS_ASSERT_EQUALS("%s%s:%s%s" % ("D", 1, "K", 30), dimensions)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_get_highest_row_iter()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
path = os.path.join(DATADIR, "genuine", "empty.xlsx")
|
|
|
|
wb = load_workbook(filename = path, use_iterators = True)
|
|
|
|
sheet2 = wb.get_sheet_by_name("Sheet2 - Numbers")
|
|
|
|
max_row = sheet2.get_highest_row()
|
|
|
|
TS_ASSERT_EQUALS(30, max_row)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_workbook_with_no_properties()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
genuine_wb = os.path.join(DATADIR, "genuine", \
|
|
|
|
"empty_with_no_properties.xlsx")
|
|
|
|
wb = load_workbook(filename = genuine_wb)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
void setup_class_with_styles(cls)
|
|
|
|
{
|
|
|
|
cls.genuine_wb = os.path.join(DATADIR, "genuine", \
|
|
|
|
"empty-with-styles.xlsx")
|
|
|
|
wb = load_workbook(cls.genuine_wb)
|
|
|
|
cls.ws = wb.get_sheet_by_name("Sheet1")
|
|
|
|
}
|
2014-05-09 03:32:12 +08:00
|
|
|
|
|
|
|
void test_read_general_style()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(ws.cell("A1").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_GENERAL)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_date_style()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(ws.cell("A2").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_DATE_XLSX14)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_number_style()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(ws.cell("A3").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_NUMBER_00)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_time_style()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(ws.cell("A4").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_DATE_TIME3)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_percentage_style()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(ws.cell("A5").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_PERCENTAGE_00)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
void setup_class_base_date_format(cls)
|
|
|
|
{
|
|
|
|
mac_wb_path = os.path.join(DATADIR, "reader", "date_1904.xlsx")
|
|
|
|
cls.mac_wb = load_workbook(mac_wb_path)
|
|
|
|
cls.mac_ws = cls.mac_wb.get_sheet_by_name("Sheet1")
|
2014-05-09 03:32:12 +08:00
|
|
|
|
2014-05-13 01:42:28 +08:00
|
|
|
win_wb_path = os.path.join(DATADIR, "reader", "date_1900.xlsx")
|
|
|
|
cls.win_wb = load_workbook(win_wb_path)
|
|
|
|
cls.win_ws = cls.win_wb.get_sheet_by_name("Sheet1")
|
|
|
|
}
|
2014-05-09 03:32:12 +08:00
|
|
|
|
|
|
|
void test_read_win_base_date()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(win_wb.properties.excel_base_date, CALENDAR_WINDOWS_1900)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_mac_base_date()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(mac_wb.properties.excel_base_date, CALENDAR_MAC_1904)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_date_style_mac()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(mac_ws.cell("A1").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_DATE_XLSX14)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_date_style_win()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
TS_ASSERT_EQUALS(win_ws.cell("A1").style.number_format.format_code,
|
|
|
|
NumberFormat.FORMAT_DATE_XLSX14)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
void test_read_date_value()
|
|
|
|
{
|
2014-05-13 01:42:28 +08:00
|
|
|
datetuple = (2011, 10, 31)
|
|
|
|
dt = datetime(datetuple[0], datetuple[1], datetuple[2])
|
|
|
|
TS_ASSERT_EQUALS(mac_ws.cell("A1").value, dt)
|
|
|
|
TS_ASSERT_EQUALS(win_ws.cell("A1").value, dt)
|
|
|
|
TS_ASSERT_EQUALS(mac_ws.cell("A1").value, win_ws.cell("A1").value)
|
2014-05-09 03:32:12 +08:00
|
|
|
}
|
|
|
|
};
|