From dc4befd8672e22f1166dbf4f24fab16897d87ba8 Mon Sep 17 00:00:00 2001 From: Thomas Fussell Date: Mon, 30 Oct 2017 17:23:14 -0400 Subject: [PATCH] add row height and column width serialization tests --- tests/data/13_custom_heights_widths.xlsx | Bin 0 -> 21427 bytes tests/workbook/serialization_test_suite.hpp | 155 +++++++++++++++----- 2 files changed, 118 insertions(+), 37 deletions(-) create mode 100644 tests/data/13_custom_heights_widths.xlsx diff --git a/tests/data/13_custom_heights_widths.xlsx b/tests/data/13_custom_heights_widths.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..13d7a54d510c2f7f0aabec8555cd4df901a0ae2f GIT binary patch literal 21427 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 E07jF`*#H0l literal 0 HcmV?d00001 diff --git a/tests/workbook/serialization_test_suite.hpp b/tests/workbook/serialization_test_suite.hpp index 88c4f9cb..89ccbf00 100644 --- a/tests/workbook/serialization_test_suite.hpp +++ b/tests/workbook/serialization_test_suite.hpp @@ -1,4 +1,4 @@ -// Copyright (c) 2014-2017 Thomas Fussell +// Copyright (c) 2014-2017 Thomas Fussell // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal @@ -56,8 +56,20 @@ public: register_test(test_read_formulae); register_test(test_read_headers_and_footers); register_test(test_read_custom_properties); - register_test(test_round_trip_rw); - register_test(test_round_trip_rw_encrypted); + register_test(test_read_custom_heights_widths); + register_test(test_write_custom_heights_widths); + register_test(test_round_trip_rw_minimal); + register_test(test_round_trip_rw_default); + register_test(test_round_trip_rw_every_style); + register_test(test_round_trip_rw_unicode); + register_test(test_round_trip_rw_comments_hyperlinks_formulae); + register_test(test_round_trip_rw_print_settings); + register_test(test_round_trip_rw_advanced_properties); + register_test(test_round_trip_rw_custom_heights_widths); + register_test(test_round_trip_rw_encrypted_agile); + register_test(test_round_trip_rw_encrypted_libre); + register_test(test_round_trip_rw_encrypted_standard); + register_test(test_round_trip_rw_encrypted_numbers); register_test(test_streaming_read); register_test(test_streaming_write); } @@ -376,6 +388,55 @@ public: xlnt_assert(wb.has_custom_property("Client")); xlnt_assert_equals(wb.custom_property("Client").get(), "me!"); } + + void test_read_custom_heights_widths() + { + xlnt::workbook wb; + wb.load(path_helper::test_file("13_custom_heights_widths.xlsx")); + auto ws = wb.active_sheet(); + + xlnt_assert_equals(ws.cell("A1").value(), "170xd"); + xlnt_assert_equals(ws.cell("B1").value(), "40xd"); + xlnt_assert_equals(ws.cell("C1").value(), "dxd"); + xlnt_assert_equals(ws.cell("A2").value(), "170x30"); + xlnt_assert_equals(ws.cell("B2").value(), "40x30"); + xlnt_assert_equals(ws.cell("C2").value(), "dx30"); + xlnt_assert_equals(ws.cell("A3").value(), "170x10"); + xlnt_assert_equals(ws.cell("B3").value(), "40x10"); + xlnt_assert_equals(ws.cell("C3").value(), "dx10"); + + xlnt_assert(!ws.row_properties(1).height.is_set()); + xlnt_assert_equals(ws.row_properties(2).height.get(), 30); + xlnt_assert_equals(ws.row_properties(3).height.get(), 10); + xlnt_assert_delta(ws.column_properties("A").width.get(), 27.617745535714285, 1.0E-9); + xlnt_assert_delta(ws.column_properties("B").width.get(), 5.9497767857142856, 1.0E-9); + xlnt_assert(!ws.column_properties("C").width.is_set()); + } + + void test_write_custom_heights_widths() + { + xlnt::workbook wb; + auto ws = wb.active_sheet(); + + ws.cell("A1").value("170xd"); + ws.cell("B1").value("40xd"); + ws.cell("C1").value("dxd"); + ws.cell("A2").value("170x30"); + ws.cell("B2").value("40x30"); + ws.cell("C2").value("dx30"); + ws.cell("A3").value("170x10"); + ws.cell("B3").value("40x10"); + ws.cell("C3").value("dx10"); + + ws.row_properties(2).height = 30; + ws.row_properties(3).height = 10; + + ws.column_properties("A").width = 27.617745535714285; + ws.column_properties("B").width = 5.9497767857142856; + + wb.save("temp.xlsx"); + xlnt_assert(workbook_matches_file(wb, path_helper::test_file("13_custom_heights_widths.xlsx"))); + } /// /// Read file as an XLSX-formatted ZIP file in the filesystem to a workbook, @@ -422,45 +483,65 @@ public: //return source_data == destination_data; return true; } - - void test_round_trip_rw() + + void test_round_trip_rw_minimal() { - const auto files = std::vector - { - "2_minimal", - "3_default", - "4_every_style", - u8"9_unicode_Λ", - "10_comments_hyperlinks_formulae", - "11_print_settings", - "12_advanced_properties" - }; - - for (const auto file : files) - { - auto path = path_helper::test_file(file + ".xlsx"); - xlnt_assert(round_trip_matches_rw(path)); - } + xlnt_assert(round_trip_matches_rw(path_helper::test_file("2_minimal.xlsx"))); + } + + void test_round_trip_rw_default() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("3_default.xlsx"))); + } + + void test_round_trip_rw_every_style() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("4_every_style.xlsx"))); + } + + void test_round_trip_rw_unicode() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file(u8"9_unicode_Λ.xlsx"))); } - void test_round_trip_rw_encrypted() + void test_round_trip_rw_comments_hyperlinks_formulae() { - const auto files = std::vector - { - "5_encrypted_agile", - "6_encrypted_libre", - "7_encrypted_standard", - "8_encrypted_numbers" - }; + xlnt_assert(round_trip_matches_rw(path_helper::test_file("10_comments_hyperlinks_formulae.xlsx"))); + } - for (const auto file : files) - { - auto path = path_helper::test_file(file + ".xlsx"); - auto password = std::string(file == "7_encrypted_standard" ? "password" - : file == "6_encrypted_libre" ? u8"пароль" - : "secret"); - xlnt_assert(round_trip_matches_rw(path, password)); - } + void test_round_trip_rw_print_settings() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("11_print_settings.xlsx"))); + } + + void test_round_trip_rw_advanced_properties() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("12_advanced_properties.xlsx"))); + } + + void test_round_trip_rw_custom_heights_widths() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("13_custom_heights_widths.xlsx"))); + } + + void test_round_trip_rw_encrypted_agile() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("5_encrypted_agile.xlsx"), "secret")); + } + + void test_round_trip_rw_encrypted_libre() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("6_encrypted_libre.xlsx"), u8"пароль")); + } + + void test_round_trip_rw_encrypted_standard() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("7_encrypted_standard.xlsx"), "password")); + } + + void test_round_trip_rw_encrypted_numbers() + { + xlnt_assert(round_trip_matches_rw(path_helper::test_file("8_encrypted_numbers.xlsx"), "secret")); } void test_streaming_read()