[Libreoffice-commits] core.git: sc/qa

Laurent Godard lgodard.libre at laposte.net
Wed Sep 4 02:13:10 PDT 2013


 sc/qa/unit/subsequent_export-test.cxx |   80 ++++++++++++++++++++++++++++++++++
 1 file changed, 80 insertions(+)

New commits:
commit 673881b8fbdc3e0b66d7042221ff9532a49fc044
Author: Laurent Godard <lgodard.libre at laposte.net>
Date:   Fri Aug 30 17:19:11 2013 +0200

    calc export test on cell values, strings & formulas
    
    Change-Id: I5e55da683423a461638b2235e25d5556fd77221a
    Reviewed-on: https://gerrit.libreoffice.org/5698
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sc/qa/unit/subsequent_export-test.cxx b/sc/qa/unit/subsequent_export-test.cxx
index c26d115..bd69cc1 100644
--- a/sc/qa/unit/subsequent_export-test.cxx
+++ b/sc/qa/unit/subsequent_export-test.cxx
@@ -29,6 +29,8 @@
 #include "formulacell.hxx"
 #include "tokenarray.hxx"
 #include "editutil.hxx"
+#include "scopetools.hxx"
+#include "cellvalue.hxx"
 
 #include "svx/svdoole2.hxx"
 #include "tabprotection.hxx"
@@ -64,6 +66,8 @@ public:
     void testNamedRangeBugfdo62729();
     void testRichTextExportODS();
 
+    void testCellValuesExportODS();
+
     void testInlineArrayXLS();
     void testEmbeddedChartXLS();
     void testFormulaReferenceXLS();
@@ -81,6 +85,7 @@ public:
     CPPUNIT_TEST(testMiscRowHeightExport);
     CPPUNIT_TEST(testNamedRangeBugfdo62729);
     CPPUNIT_TEST(testRichTextExportODS);
+    CPPUNIT_TEST(testCellValuesExportODS);
     CPPUNIT_TEST(testInlineArrayXLS);
     CPPUNIT_TEST(testEmbeddedChartXLS);
     CPPUNIT_TEST(testFormulaReferenceXLS);
@@ -564,6 +569,81 @@ void ScExportTest::testRichTextExportODS()
     xNewDocSh3->DoClose();
 }
 
+void ScExportTest::testCellValuesExportODS()
+{
+    // Start with an empty document
+    ScDocShellRef xOrigDocSh = loadDoc("empty.", ODS);
+    ScDocument* pDoc = xOrigDocSh->GetDocument();
+    CPPUNIT_ASSERT(pDoc);
+    CPPUNIT_ASSERT_MESSAGE("This document should at least have one sheet.", pDoc->GetTableCount() > 0);
+
+    // set a value double
+    pDoc->SetValue(ScAddress(0,0,0), 2.0); // A1
+
+    // set a formula
+    pDoc->SetValue(ScAddress(2,0,0), 3.0); // C1
+    pDoc->SetValue(ScAddress(3,0,0), 3); // D1
+    pDoc->SetString(ScAddress(4,0,0), "=10*C1/4"); // E1
+    pDoc->SetValue(ScAddress(5,0,0), 3.0); // F1
+    pDoc->SetString(ScAddress(7,0,0), "=SUM(C1:F1)"); //H1
+
+    // set a string
+    pDoc->SetString(ScAddress(0,2,0), "a simple line"); //A3
+
+    // set a digit string
+    pDoc->SetString(ScAddress(0,4,0), "'12"); //A5
+    // set a contiguous value
+    pDoc->SetValue(ScAddress(0,5,0), 12.0); //A6
+    // set acontiguous string
+    pDoc->SetString(ScAddress(0,6,0), "a string"); //A7
+    // set a contiguous formula
+    pDoc->SetString(ScAddress(0,7,0), "=$A$6"); //A8
+
+    // save and reload
+    ScDocShellRef xNewDocSh = saveAndReload(xOrigDocSh, ODS);
+    xOrigDocSh->DoClose();
+    CPPUNIT_ASSERT(xNewDocSh.Is());
+    pDoc = xNewDocSh->GetDocument();
+    CPPUNIT_ASSERT(pDoc);
+    CPPUNIT_ASSERT_MESSAGE("Reloaded document should at least have one sheet.", pDoc->GetTableCount() > 0);
+
+    // check value
+    CPPUNIT_ASSERT_EQUAL(2.0, pDoc->GetValue(0,0,0));
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(2,0,0));
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(3,0,0));
+    CPPUNIT_ASSERT_EQUAL(7.5, pDoc->GetValue(4,0,0));
+    CPPUNIT_ASSERT_EQUAL(3.0, pDoc->GetValue(5,0,0));
+
+    // check formula
+    if (!checkFormula(*pDoc, ScAddress(4,0,0), "10*C1/4"))
+        CPPUNIT_FAIL("Wrong formula =10*C1/4");
+    if (!checkFormula(*pDoc, ScAddress(7,0,0), "SUM(C1:F1)"))
+        CPPUNIT_FAIL("Wrong formula =SUM(C1:F1)");
+    CPPUNIT_ASSERT_EQUAL(16.5, pDoc->GetValue(7,0,0));
+
+    // check string
+    ScRefCellValue aCell;
+    aCell.assign(*pDoc, ScAddress(0,2,0));
+    CPPUNIT_ASSERT_EQUAL( CELLTYPE_STRING, aCell.meType );
+
+    // check for an empty cell
+    aCell.assign(*pDoc, ScAddress(0,3,0));
+    CPPUNIT_ASSERT_EQUAL( CELLTYPE_NONE, aCell.meType);
+
+    // check a digit string
+    aCell.assign(*pDoc, ScAddress(0,4,0));
+    CPPUNIT_ASSERT_EQUAL( CELLTYPE_STRING, aCell.meType);
+
+    //check contiguous values
+    CPPUNIT_ASSERT_EQUAL( 12.0, pDoc->GetValue(0,5,0) );
+    CPPUNIT_ASSERT_EQUAL( OUString("a string"), pDoc->GetString(0,6,0) );
+    if (!checkFormula(*pDoc, ScAddress(0,7,0), "$A$6"))
+        CPPUNIT_FAIL("Wrong formula =$A$6");
+    CPPUNIT_ASSERT_EQUAL( pDoc->GetValue(0,5,0), pDoc->GetValue(0,7,0) );
+
+    xNewDocSh->DoClose();
+}
+
 namespace {
 
 void checkMatrixRange(ScDocument& rDoc, const ScRange& rRange)


More information about the Libreoffice-commits mailing list