[Libreoffice-commits] core.git: 2 commits - dbaccess/CppunitTest_dbaccess_firebird_test.mk dbaccess/Module_dbaccess.mk dbaccess/qa

Andrzej J.R. Hunt andrzej at ahunt.org
Tue Sep 10 00:44:52 PDT 2013


 dbaccess/CppunitTest_dbaccess_firebird_test.mk   |   67 +++++++++++
 dbaccess/Module_dbaccess.mk                      |    3 
 dbaccess/qa/unit/data/firebird_empty.odb         |binary
 dbaccess/qa/unit/data/firebird_integer_x64le.odb |binary
 dbaccess/qa/unit/firebird.cxx                    |  137 +++++++++++++++++++++++
 5 files changed, 207 insertions(+)

New commits:
commit 3f114eb4a2f3994b980aa607f2d4afc58e5aaa1d
Author: Andrzej J.R. Hunt <andrzej at ahunt.org>
Date:   Tue Sep 10 08:35:51 2013 +0100

    Implement firebird integer loading test.
    
    This is mainly in order to determine whether the firebird ODS is safely
    portable -- if testIntegerDatabase fails on non x64 / non Linux / non LE
    platforms then this isn't the case.
    
    Change-Id: I44eb7a774650cec27748b2058e9bb153f32742dc

diff --git a/dbaccess/qa/unit/data/firebird_integer_x64le.odb b/dbaccess/qa/unit/data/firebird_integer_x64le.odb
new file mode 100644
index 0000000..da2ec14
Binary files /dev/null and b/dbaccess/qa/unit/data/firebird_integer_x64le.odb differ
diff --git a/dbaccess/qa/unit/firebird.cxx b/dbaccess/qa/unit/firebird.cxx
index c1a72ff..fb8234d 100644
--- a/dbaccess/qa/unit/firebird.cxx
+++ b/dbaccess/qa/unit/firebird.cxx
@@ -14,8 +14,12 @@
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
+#include <com/sun/star/sdbc/XColumnLocate.hpp>
 #include <com/sun/star/sdbc/XConnection.hpp>
 #include <com/sun/star/sdbc/XDataSource.hpp>
+#include <com/sun/star/sdbc/XResultSet.hpp>
+#include <com/sun/star/sdbc/XRow.hpp>
+#include <com/sun/star/sdbc/XStatement.hpp>
 
 using namespace ::com::sun::star;
 using namespace ::com::sun::star::frame;
@@ -31,16 +35,17 @@ public:
     virtual void setUp();
     virtual void tearDown();
 
-    /**
-     * Test that we connect to the database with an "empty" .odb file.
-     */
     void testEmptyDBConnection();
+    void testIntegerDatabase();
 
     CPPUNIT_TEST_SUITE(FirebirdTest);
     CPPUNIT_TEST(testEmptyDBConnection);
+    CPPUNIT_TEST(testIntegerDatabase);
     CPPUNIT_TEST_SUITE_END();
 };
 
+// TODO: refactor the load file -> get Connection stuff into a separate class
+
 /**
  * Test the loading of an "empty" file, i.e. the embedded database has not yet
  * been initialised (as occurs when a new .odb is created and opened by base).
@@ -63,6 +68,54 @@ void FirebirdTest::testEmptyDBConnection()
     CPPUNIT_ASSERT(xConnection.is());
 }
 
+/**
+ * Test reading of integers from a known .odb to verify that the data
+ * can still be read on all systems.
+ */
+void FirebirdTest::testIntegerDatabase()
+{
+    const OUString sFileName("/dbaccess/qa/unit/data/firebird_integer_x64le.odb");
+
+    uno::Reference< lang::XComponent > xComponent = loadFromDesktop(
+                                                    getSrcRootURL() + sFileName);
+    CPPUNIT_ASSERT(xComponent.is());
+
+    uno::Reference< XOfficeDatabaseDocument > xDocument(xComponent, UNO_QUERY);
+    CPPUNIT_ASSERT(xDocument.is());
+
+    uno::Reference< XDataSource > xDataSource = xDocument->getDataSource();
+    CPPUNIT_ASSERT(xDataSource.is());
+
+    uno::Reference< XConnection > xConnection = xDataSource->getConnection("","");
+    CPPUNIT_ASSERT(xConnection.is());
+
+    uno::Reference< XStatement > xStatement = xConnection->createStatement();
+    CPPUNIT_ASSERT(xStatement.is());
+
+    uno::Reference< XResultSet > xResultSet = xStatement->executeQuery(
+        "SELECT * FROM TESTTABLE");
+    CPPUNIT_ASSERT(xResultSet.is());
+    CPPUNIT_ASSERT(xResultSet->next());
+
+    uno::Reference< XRow > xRow(xResultSet, UNO_QUERY);
+    CPPUNIT_ASSERT(xRow.is());
+    uno::Reference< XColumnLocate > xColumnLocate(xRow, UNO_QUERY);
+    CPPUNIT_ASSERT(xColumnLocate.is());
+
+    CPPUNIT_ASSERT(sal_Int16(-30000) ==
+        xRow->getShort(xColumnLocate->findColumn("_SMALLINT")));
+    CPPUNIT_ASSERT(sal_Int32(-2100000000) ==
+        xRow->getInt(xColumnLocate->findColumn("_INT")));
+    CPPUNIT_ASSERT(sal_Int64(-9000000000000000000) ==
+        xRow->getLong(xColumnLocate->findColumn("_BIGINT")));
+    CPPUNIT_ASSERT(OUString("5") ==
+        xRow->getString(xColumnLocate->findColumn("_CHAR")));
+    CPPUNIT_ASSERT(OUString("5") ==
+        xRow->getString(xColumnLocate->findColumn("_VARCHAR")));
+
+    CPPUNIT_ASSERT(!xResultSet->next()); // Should only be one row
+}
+
 void FirebirdTest::setUp()
 {
     ::test::BootstrapFixture::setUp();
commit 65fc052b89b029ad1e853a139f6b3817ac24452a
Author: Andrzej J.R. Hunt <andrzej at ahunt.org>
Date:   Sat Sep 7 17:32:20 2013 +0100

    Add simple embedded firebird .odb loading test.
    
    This opens an "empty" firebird-based .odb and tests that it is possible
    for the firebird-sdbc driver to open the embedded database.
    
    "empty" denotes that the .odb is marked as using embedded firebird
    but doesn't in fact contain any .fdb file within. This is usual state
    of a .odb directly after creation using the "New Database" dialog when
    the sdbc driver first opens the database.
    
    Change-Id: I83941c05b6328d8419dca49121988640c6f887bc

diff --git a/dbaccess/CppunitTest_dbaccess_firebird_test.mk b/dbaccess/CppunitTest_dbaccess_firebird_test.mk
new file mode 100644
index 0000000..c91bdb7
--- /dev/null
+++ b/dbaccess/CppunitTest_dbaccess_firebird_test.mk
@@ -0,0 +1,67 @@
+# -*- Mode: makefile-gmake; tab-width: 4; indent-tabs-mode: t -*-
+#
+# This file is part of the LibreOffice project.
+#
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+#
+
+$(eval $(call gb_CppunitTest_CppunitTest,dbaccess_firebird_test))
+
+$(eval $(call gb_CppunitTest_add_exception_objects,dbaccess_firebird_test, \
+    dbaccess/qa/unit/firebird \
+))
+
+$(eval $(call gb_CppunitTest_use_libraries,dbaccess_firebird_test, \
+    comphelper \
+    cppu \
+    dbaxml \
+    firebird_sdbc \
+    sal \
+    subsequenttest \
+    test \
+    unotest \
+    xo \
+    $(gb_UWINAPI) \
+))
+
+$(eval $(call gb_CppunitTest_use_api,dbaccess_firebird_test,\
+    offapi \
+    oovbaapi \
+    udkapi \
+))
+
+$(eval $(call gb_CppunitTest_use_ure,dbaccess_firebird_test))
+
+$(eval $(call gb_CppunitTest_use_components,dbaccess_firebird_test,\
+    comphelper/util/comphelp \
+    configmgr/source/configmgr \
+    connectivity/source/drivers/firebird/firebird_sdbc \
+    connectivity/source/manager/sdbc2 \
+    dbaccess/util/dba \
+    dbaccess/source/filter/xml/dbaxml \
+    dbaccess/util/dbu \
+    fileaccess/source/fileacc \
+    filter/source/config/cache/filterconfig1 \
+    framework/util/fwk \
+    i18npool/util/i18npool \
+    package/source/xstor/xstor \
+    package/util/package2 \
+    sax/source/expatwrap/expwrap \
+    sfx2/util/sfx \
+    svl/source/fsstor/fsstorage \
+    svl/util/svl \
+    toolkit/util/tk \
+    ucb/source/core/ucb1 \
+    ucb/source/ucp/file/ucpfile1 \
+    xmloff/util/xo \
+))
+
+$(eval $(call gb_CppunitTest_use_configuration,dbaccess_firebird_test))
+
+$(eval $(call gb_CppunitTest_use_filter_configuration,dbaccess_firebird_test))
+
+$(eval $(call gb_CppunitTest_use_unittest_configuration,dbaccess_firebird_test))
+
+# vim: set noet sw=4 ts=4:
diff --git a/dbaccess/Module_dbaccess.mk b/dbaccess/Module_dbaccess.mk
index 142e0cd..f6378a0 100644
--- a/dbaccess/Module_dbaccess.mk
+++ b/dbaccess/Module_dbaccess.mk
@@ -31,8 +31,11 @@ $(eval $(call gb_Module_add_targets,dbaccess,\
 	UIConfig_dbtdata \
 ))
 
+ifeq ($(ENABLE_FIREBIRD_SDBC),TRUE)
 $(eval $(call gb_Module_add_check_targets,dbaccess,\
+    CppunitTest_dbaccess_firebird_test \
 ))
+endif
 
 # disable test because it still fails in some situations
 #    CppunitTest_dbaccess_macros_test \
diff --git a/dbaccess/qa/unit/data/firebird_empty.odb b/dbaccess/qa/unit/data/firebird_empty.odb
new file mode 100644
index 0000000..766c17d
Binary files /dev/null and b/dbaccess/qa/unit/data/firebird_empty.odb differ
diff --git a/dbaccess/qa/unit/firebird.cxx b/dbaccess/qa/unit/firebird.cxx
new file mode 100644
index 0000000..c1a72ff
--- /dev/null
+++ b/dbaccess/qa/unit/firebird.cxx
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*
+ * This file is part of the LibreOffice project.
+ *
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/.
+ */
+
+#include <comphelper/processfactory.hxx>
+#include <test/bootstrapfixture.hxx>
+#include <unotest/macros_test.hxx>
+
+#include <com/sun/star/frame/XModel.hpp>
+#include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
+#include <com/sun/star/sdbc/XConnection.hpp>
+#include <com/sun/star/sdbc/XDataSource.hpp>
+
+using namespace ::com::sun::star;
+using namespace ::com::sun::star::frame;
+using namespace ::com::sun::star::sdb;
+using namespace ::com::sun::star::sdbc;
+using namespace ::com::sun::star::uno;
+
+class FirebirdTest
+    : public ::test::BootstrapFixture
+    , public ::unotest::MacrosTest
+{
+public:
+    virtual void setUp();
+    virtual void tearDown();
+
+    /**
+     * Test that we connect to the database with an "empty" .odb file.
+     */
+    void testEmptyDBConnection();
+
+    CPPUNIT_TEST_SUITE(FirebirdTest);
+    CPPUNIT_TEST(testEmptyDBConnection);
+    CPPUNIT_TEST_SUITE_END();
+};
+
+/**
+ * Test the loading of an "empty" file, i.e. the embedded database has not yet
+ * been initialised (as occurs when a new .odb is created and opened by base).
+ */
+void FirebirdTest::testEmptyDBConnection()
+{
+    const OUString sFileName("/dbaccess/qa/unit/data/firebird_empty.odb");
+
+    uno::Reference< lang::XComponent > xComponent = loadFromDesktop(
+                                                    getSrcRootURL() + sFileName);
+    CPPUNIT_ASSERT(xComponent.is());
+
+    uno::Reference< XOfficeDatabaseDocument > xDocument(xComponent, UNO_QUERY);
+    CPPUNIT_ASSERT(xDocument.is());
+
+    uno::Reference< XDataSource > xDataSource = xDocument->getDataSource();
+    CPPUNIT_ASSERT(xDataSource.is());
+
+    uno::Reference< XConnection > xConnection = xDataSource->getConnection("","");
+    CPPUNIT_ASSERT(xConnection.is());
+}
+
+void FirebirdTest::setUp()
+{
+    ::test::BootstrapFixture::setUp();
+
+    mxDesktop = ::com::sun::star::frame::Desktop::create(
+                    ::comphelper::getProcessComponentContext());
+    CPPUNIT_ASSERT(mxDesktop.is());
+}
+
+void FirebirdTest::tearDown()
+{
+    test::BootstrapFixture::tearDown();
+}
+
+CPPUNIT_TEST_SUITE_REGISTRATION(FirebirdTest);
+
+CPPUNIT_PLUGIN_IMPLEMENT();
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */


More information about the Libreoffice-commits mailing list