diff options
Diffstat (limited to 'sc/qa/unit/subsequent_filters-test.cxx')
-rw-r--r-- | sc/qa/unit/subsequent_filters-test.cxx | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx index efd18592c3c6..8106d2166b75 100644 --- a/sc/qa/unit/subsequent_filters-test.cxx +++ b/sc/qa/unit/subsequent_filters-test.cxx @@ -206,6 +206,7 @@ public: void testEditEngStrikeThroughXLSX(); void testRefStringXLSX(); void testHiddenSheetsXLSX(); + void testRelFormulaValidationXLS(); void testBnc762542(); @@ -304,6 +305,7 @@ public: CPPUNIT_TEST(testErrorOnExternalReferences); CPPUNIT_TEST(testEditEngStrikeThroughXLSX); CPPUNIT_TEST(testRefStringXLSX); + CPPUNIT_TEST(testRelFormulaValidationXLS); CPPUNIT_TEST(testBnc762542); @@ -3197,6 +3199,35 @@ void ScFiltersTest::testHiddenSheetsXLSX() xDocSh->DoClose(); } +namespace { + +void checkValidationFormula(const ScAddress& rPos, ScDocument& rDoc, const OUString& rExpectedFormula) +{ + const SfxUInt32Item* pItem = static_cast<const SfxUInt32Item*>(rDoc.GetAttr(rPos, ATTR_VALIDDATA) ); + CPPUNIT_ASSERT(pItem); + sal_uLong nKey = pItem->GetValue(); + const ScValidationData* pData = rDoc.GetValidationEntry(nKey); + CPPUNIT_ASSERT(pData); + + OUString aFormula = pData->GetExpression(rPos, 0); + CPPUNIT_ASSERT_EQUAL(rExpectedFormula, aFormula); +} + +} + +void ScFiltersTest::testRelFormulaValidationXLS() +{ + ScDocShellRef xDocSh = loadDoc("validation.", FORMAT_XLS); + CPPUNIT_ASSERT_MESSAGE("Failed to open doc", xDocSh.Is()); + + ScDocument& rDoc = xDocSh->GetDocument(); + + checkValidationFormula(ScAddress(3, 4, 0), rDoc, "Sheet1.C5"); + checkValidationFormula(ScAddress(5, 8, 0), rDoc, "Sheet1.D7"); + + xDocSh->DoClose(); +} + ScFiltersTest::ScFiltersTest() : ScBootstrapFixture( "sc/qa/unit/data" ) { |