From ce0ae608eea358122515b7ae6f715469f8167ad9 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Thu, 21 Jul 2016 20:44:00 -0400 Subject: [PATCH] test inlinestr --- source/styles/tests/test_number_format.hpp | 6 +++++ source/utils/tests/test_zip_file.hpp | 26 +++++++++++++++++---- source/workbook/tests/test_read.hpp | 7 ++++++ tests/data/genuine/empty.xlsx | Bin 11395 -> 9782 bytes 4 files changed, 35 insertions(+), 4 deletions(-) diff --git a/source/styles/tests/test_number_format.hpp b/source/styles/tests/test_number_format.hpp index ec0b127d..df365327 100644 --- a/source/styles/tests/test_number_format.hpp +++ b/source/styles/tests/test_number_format.hpp @@ -839,4 +839,10 @@ public: { format_and_test(xlnt::number_format::date_dmminus(), {{"13-5", "###########", "0-1", "text"}}); } + + // m-yy + void test_builtin_format_date_myminus() + { + format_and_test(xlnt::number_format::date_myminus(), {{"5-16", "###########", "1-00", "text"}}); + } }; diff --git a/source/utils/tests/test_zip_file.hpp b/source/utils/tests/test_zip_file.hpp index 9e5c2acd..6a4ad4ab 100644 --- a/source/utils/tests/test_zip_file.hpp +++ b/source/utils/tests/test_zip_file.hpp @@ -14,7 +14,25 @@ public: existing_file = path_helper::get_data_directory("/genuine/empty.xlsx"); expected_content_types_string = "\r\n"; expected_atxt_string = "\nThis is cell A1 in Sheet 1This is cell G5"; - expected_printdir_string = " Length Date Time Name\n--------- ---------- ----- ----\n 1704 01/01/1980 00:00 [Content_Types].xml\n 588 01/01/1980 00:00 _rels/.rels\n 1254 01/01/1980 00:00 xl/_rels/workbook.xml.rels\n 898 01/01/1980 00:00 xl/workbook.xml\n 1231 01/01/1980 00:00 xl/worksheets/sheet4.xml\n 4427 01/01/1980 00:00 xl/worksheets/sheet2.xml\n 1032 01/01/1980 00:00 xl/worksheets/sheet3.xml\n 1026 01/01/1980 00:00 xl/worksheets/sheet1.xml\n 6995 01/01/1980 00:00 xl/theme/theme1.xml\n 233 01/01/1980 00:00 xl/sharedStrings.xml\n 1724 01/01/1980 00:00 xl/styles.xml\n 169 01/01/1980 00:00 xl/calcChain.xml\n 917 01/01/1980 00:00 docProps/app.xml\n 609 01/01/1980 00:00 docProps/core.xml\n--------- -------\n 22807 14 files\n"; + expected_printdir_string = + " Length Date Time Name\n" + "--------- ---------- ----- ----\n" + " 1704 01/01/1980 00:00 [Content_Types].xml\n" + " 588 01/01/1980 00:00 _rels/.rels\n" + " 917 01/01/1980 00:00 docProps/app.xml\n" + " 609 01/01/1980 00:00 docProps/core.xml\n" + " 1254 01/01/1980 00:00 xl/_rels/workbook.xml.rels\n" + " 169 01/01/1980 00:00 xl/calcChain.xml\n" + " 233 01/01/1980 00:00 xl/sharedStrings.xml\n" + " 1724 01/01/1980 00:00 xl/styles.xml\n" + " 6995 01/01/1980 00:00 xl/theme/theme1.xml\n" + " 898 01/01/1980 00:00 xl/workbook.xml\n" + " 1068 07/21/2016 20:27 xl/worksheets/sheet1.xml\n" + " 4427 01/01/1980 00:00 xl/worksheets/sheet2.xml\n" + " 1032 01/01/1980 00:00 xl/worksheets/sheet3.xml\n" + " 1231 01/01/1980 00:00 xl/worksheets/sheet4.xml\n" + "--------- -------\n" + " 22849 14 files\n"; } void remove_temp_file() @@ -142,13 +160,13 @@ public: void test_infolist() { xlnt::zip_file f(existing_file); - TS_ASSERT(f.infolist().size() == 14); + TS_ASSERT_EQUALS(f.infolist().size(), 14); } void test_namelist() { xlnt::zip_file f(existing_file); - TS_ASSERT(f.namelist().size() == 14); + TS_ASSERT_EQUALS(f.namelist().size(), 14); } void test_open_by_name() @@ -205,7 +223,7 @@ public: std::stringstream ss; f.printdir(ss); auto printed = ss.str(); - TS_ASSERT(printed == expected_printdir_string); + TS_ASSERT_EQUALS(printed, expected_printdir_string); } void test_read() diff --git a/source/workbook/tests/test_read.hpp b/source/workbook/tests/test_read.hpp index d214358a..463b7afa 100644 --- a/source/workbook/tests/test_read.hpp +++ b/source/workbook/tests/test_read.hpp @@ -554,4 +554,11 @@ public: TS_ASSERT_THROWS(xlnt::shared_strings_serializer::read_shared_strings(xml_bad, strings), std::runtime_error); } + + void test_read_inlinestr() + { + xlnt::workbook wb; + wb.load(path_helper::get_data_directory("/genuine/empty.xlsx")); + TS_ASSERT_EQUALS(wb.get_sheet_by_index(0).get_cell("A1").get_value(), "This is cell A1 in Sheet 1"); + } }; diff --git a/tests/data/genuine/empty.xlsx b/tests/data/genuine/empty.xlsx index cf6d056bab8f5671e755425fa7bd677d29f36193..1b9e826b0de1fd86ede8a1ff29e816445c3f8581 100644 GIT binary patch literal 9782 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 A^Z)<= literal 11395 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