diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2022-02-14 18:52:50 +0100 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2022-02-15 08:18:54 +0100 |
commit | 92d08206b48f8ac426dce9bdfda599cb997e1f41 (patch) | |
tree | f27345d014c8f21baf0fbc41d1b2667a84dee85b /sc/qa | |
parent | 3c24fe20ec6cb450abc4a822d323874ebbaecb10 (diff) |
test for jumbosheet named ranges export/import
Change-Id: I17df36688187f68be6c3ed564e8b4da42522e489
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/129921
Tested-by: Jenkins
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
Diffstat (limited to 'sc/qa')
-rw-r--r-- | sc/qa/unit/data/ods/ranges-column-2000.ods | bin | 0 -> 9875 bytes | |||
-rw-r--r-- | sc/qa/unit/jumbosheets-test.cxx | 57 |
2 files changed, 57 insertions, 0 deletions
diff --git a/sc/qa/unit/data/ods/ranges-column-2000.ods b/sc/qa/unit/data/ods/ranges-column-2000.ods Binary files differnew file mode 100644 index 000000000000..0d2a408ce767 --- /dev/null +++ b/sc/qa/unit/data/ods/ranges-column-2000.ods diff --git a/sc/qa/unit/jumbosheets-test.cxx b/sc/qa/unit/jumbosheets-test.cxx index 091fc2438c19..4ca4eeaf1ed6 100644 --- a/sc/qa/unit/jumbosheets-test.cxx +++ b/sc/qa/unit/jumbosheets-test.cxx @@ -46,6 +46,7 @@ public: void testRoundtripColumn2000Ods(); void testRoundtripColumn2000Xlsx(); void testRoundtripColumnRange(); + void testRoundtripNamedRanges(); void testTdf134392(); void testTdf133033(); void testTdf109061(); @@ -55,6 +56,7 @@ public: CPPUNIT_TEST(testRoundtripColumn2000Ods); CPPUNIT_TEST(testRoundtripColumn2000Xlsx); CPPUNIT_TEST(testRoundtripColumnRange); + CPPUNIT_TEST(testRoundtripNamedRanges); CPPUNIT_TEST(testTdf134392); CPPUNIT_TEST(testTdf133033); CPPUNIT_TEST(testTdf109061); @@ -176,6 +178,61 @@ void ScJumboSheetsTest::testRoundtripColumnRange() xDocSh3->DoClose(); } +void ScJumboSheetsTest::testRoundtripNamedRanges() +{ + ScDocShellRef xDocSh1 = loadDoc(u"ranges-column-2000.", FORMAT_ODS); + CPPUNIT_ASSERT(xDocSh1.is()); + + std::pair<OUString, OUString> ranges[] = { { "CELLBXX1", "$Sheet1.$BXX$1" }, + { "CELLSA4_AMJ4", "$Sheet1.$A$4:$AMJ$4" }, + { "CELLSBXX1_BXX10", "$Sheet1.$BXX$1:$BXX$10" }, + { "CELLSBXX1_BXX10_RELATIVE", "$Sheet1.BXX1:BXX10" }, + { "CELLSE1_E1024", "$Sheet1.$E$1:$E$1024" }, + { "CELLSE1_E2000000", "$Sheet1.$E$1:$E$2000000" }, + { "COLUMN_E", "$Sheet1.$E:$E" }, + { "ROW_4", "$Sheet1.$4:$4" } }; + { + ScDocument& rDoc = xDocSh1->GetDocument(); + for (const auto& range : ranges) + { + ScRangeData* rangeData = rDoc.GetRangeName()->findByUpperName(range.first); + CPPUNIT_ASSERT(rangeData); + CPPUNIT_ASSERT_EQUAL(range.second, rangeData->GetSymbol()); + } + } + + std::shared_ptr<utl::TempFile> exportedFile; + ScDocShellRef xDocSh2 = saveAndReloadNoClose(*xDocSh1, FORMAT_ODS, &exportedFile); + CPPUNIT_ASSERT(xDocSh2.is()); + + { + ScDocument& rDoc = xDocSh2->GetDocument(); + for (const auto& range : ranges) + { + ScRangeData* rangeData = rDoc.GetRangeName()->findByUpperName(range.first); + CPPUNIT_ASSERT(rangeData); + CPPUNIT_ASSERT_EQUAL(range.second, rangeData->GetSymbol()); + } + } + + ScDocShellRef xDocSh3 = saveAndReloadNoClose(*xDocSh1, FORMAT_XLSX, &exportedFile); + CPPUNIT_ASSERT(xDocSh3.is()); + + { + ScDocument& rDoc = xDocSh3->GetDocument(); + for (const auto& range : ranges) + { + ScRangeData* rangeData = rDoc.GetRangeName()->findByUpperName(range.first); + CPPUNIT_ASSERT(rangeData); + CPPUNIT_ASSERT_EQUAL(range.second, rangeData->GetSymbol()); + } + } + + xDocSh1->DoClose(); + xDocSh2->DoClose(); + xDocSh3->DoClose(); +} + void ScJumboSheetsTest::testTdf134392() { // Without the fix in place, the file would have crashed |