summaryrefslogtreecommitdiff
path: root/sc/qa
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2022-02-14 18:52:50 +0100
committerLuboš Luňák <l.lunak@collabora.com>2022-02-15 08:18:54 +0100
commit92d08206b48f8ac426dce9bdfda599cb997e1f41 (patch)
treef27345d014c8f21baf0fbc41d1b2667a84dee85b /sc/qa
parent3c24fe20ec6cb450abc4a822d323874ebbaecb10 (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.odsbin0 -> 9875 bytes
-rw-r--r--sc/qa/unit/jumbosheets-test.cxx57
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
new file mode 100644
index 000000000000..0d2a408ce767
--- /dev/null
+++ b/sc/qa/unit/data/ods/ranges-column-2000.ods
Binary files differ
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