summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAdam Seskunas <adamseskunas@gmail.com>2024-10-12 02:19:29 -0700
committerXisco Fauli <xiscofauli@libreoffice.org>2025-01-14 09:22:55 +0100
commitdd386eddfdfe77c0b14cf2ed84243f066aadefb0 (patch)
tree1a0c2b0e3232e6ed80335ae359af0e478630b36f
parent32fd04f13ae563262fb0fcb03906ebc891151f1b (diff)
Port Query.java test to CppUnit
dbaccess/qa/unit/CRMDatabase_test.cxx add test dbaccess/qa/complex/dbaccess remove Query.java dbaccess/JunitTest_dbaccess_complex.mk remove test call Change-Id: If21863de1fa4db738e3d51f93a3c7ca19130bb1e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/177278 Tested-by: Jenkins Reviewed-by: Xisco Fauli <xiscofauli@libreoffice.org> Tested-by: Xisco Fauli <xiscofauli@libreoffice.org>
-rw-r--r--dbaccess/JunitTest_dbaccess_complex.mk1
-rw-r--r--dbaccess/qa/complex/dbaccess/Query.java107
-rw-r--r--dbaccess/qa/unit/CRMDatabase_test.cxx46
3 files changed, 46 insertions, 108 deletions
diff --git a/dbaccess/JunitTest_dbaccess_complex.mk b/dbaccess/JunitTest_dbaccess_complex.mk
index 99a3cd9f5cbc..04609c4413f0 100644
--- a/dbaccess/JunitTest_dbaccess_complex.mk
+++ b/dbaccess/JunitTest_dbaccess_complex.mk
@@ -38,7 +38,6 @@ $(eval $(call gb_JunitTest_add_sourcefiles,dbaccess_complex,\
dbaccess/qa/complex/dbaccess/FileHelper \
dbaccess/qa/complex/dbaccess/Parser \
dbaccess/qa/complex/dbaccess/PropertyBag \
- dbaccess/qa/complex/dbaccess/Query \
dbaccess/qa/complex/dbaccess/QueryInQuery \
dbaccess/qa/complex/dbaccess/RowSet \
dbaccess/qa/complex/dbaccess/RowSetEventListener \
diff --git a/dbaccess/qa/complex/dbaccess/Query.java b/dbaccess/qa/complex/dbaccess/Query.java
deleted file mode 100644
index 8881bb3edecb..000000000000
--- a/dbaccess/qa/complex/dbaccess/Query.java
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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/.
- *
- * This file incorporates work covered by the following license notice:
- *
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed
- * with this work for additional information regarding copyright
- * ownership. The ASF licenses this file to you under the Apache
- * License, Version 2.0 (the "License"); you may not use this file
- * except in compliance with the License. You may obtain a copy of
- * the License at http://www.apache.org/licenses/LICENSE-2.0 .
- */
-package complex.dbaccess;
-
-import com.sun.star.beans.XPropertySet;
-import com.sun.star.container.XIndexAccess;
-import com.sun.star.container.XNameAccess;
-import com.sun.star.container.XNamed;
-import com.sun.star.sdb.XQueriesSupplier;
-import com.sun.star.sdbcx.XColumnsSupplier;
-import com.sun.star.uno.UnoRuntime;
-import connectivity.tools.CRMDatabase;
-
-// ---------- junit imports -----------------
-import org.junit.Test;
-import static org.junit.Assert.*;
-
-
-public class Query extends TestCase
-{
-
- connectivity.tools.HsqlDatabase m_database;
-
-
- private void createTestCase()
- {
- try
- {
- if (m_database == null)
- {
- final CRMDatabase database = new CRMDatabase(getMSF(), false);
- m_database = database.getDatabase();
- }
- }
- catch (Exception e)
- {
- System.out.println("could not create the test case, error message:\n" + e.getMessage());
- e.printStackTrace(System.err);
- fail("failed to created the test case");
- }
- }
-
-
- @Test
- public void testQueryColumns()
- {
- createTestCase();
-
- try
- {
- final XQueriesSupplier suppQueries = UnoRuntime.queryInterface(
- XQueriesSupplier.class, m_database.defaultConnection().getXConnection() );
- final XNameAccess queries = suppQueries.getQueries();
-
- final String[] queryNames = new String[] { "parseable", "parseable native", "unparseable" };
- final String[][] expectedColumnNames = new String[][] {
- new String[] { "ID", "Name", "Address", "City", "Postal","Comment" },
- new String[] { "TABLE_CATALOG", "TABLE_SCHEMA", "TABLE_NAME", "VIEW_DEFINITION", "CHECK_OPTION", "IS_UPDATABLE", "VALID" },
- new String[] { "ID_VARCHAR" }
- };
-
- for ( int i = 0; i < queryNames.length; ++i )
- {
- if (queries.hasByName(queryNames[i]))
- {
- final XPropertySet query = UnoRuntime.queryInterface(
- XPropertySet.class, queries.getByName( queryNames[i] ) );
-
- final XColumnsSupplier suppCols = UnoRuntime.queryInterface(
- XColumnsSupplier.class, query);
- final XIndexAccess columns = UnoRuntime.queryInterface(
- XIndexAccess.class, suppCols.getColumns());
-
- // check whether the columns supplied by the query match what we expected
- assertTrue( "invalid column count (found " + columns.getCount() + ", expected: " + expectedColumnNames[i].length + ") for query \"" + queryNames[i] + "\"",
- columns.getCount() == expectedColumnNames[i].length );
- for ( int col = 0; col < columns.getCount(); ++col )
- {
- final XNamed columnName = UnoRuntime.queryInterface(
- XNamed.class, columns.getByIndex(col) );
- assertTrue( "column no. " + col + " of query \"" + queryNames[i] + "\" not matching",
- columnName.getName().equals( expectedColumnNames[i][col] ) );
- }
- }
- }
- }
- catch ( Exception e )
- {
- fail( "caught an unexpected exception: " + e.getMessage() );
- }
- }
-}
diff --git a/dbaccess/qa/unit/CRMDatabase_test.cxx b/dbaccess/qa/unit/CRMDatabase_test.cxx
index 9b61b85f8a12..adb9a9af479b 100644
--- a/dbaccess/qa/unit/CRMDatabase_test.cxx
+++ b/dbaccess/qa/unit/CRMDatabase_test.cxx
@@ -32,10 +32,12 @@ public:
void testCRMDatabase();
void testRegistrationName();
uno::Reference<XConnection> setUpDBConnection();
+ void testQueryColumns();
CPPUNIT_TEST_SUITE(CRMDBTest);
CPPUNIT_TEST(testCRMDatabase);
CPPUNIT_TEST(testRegistrationName);
+ CPPUNIT_TEST(testQueryColumns);
CPPUNIT_TEST_SUITE_END();
};
@@ -134,6 +136,50 @@ void CRMDBTest::testRegistrationName()
container::ElementExistException);
}
+void CRMDBTest::testQueryColumns()
+{
+ // Ported from dbaccess/Query.java
+ // Test prepared queries return the expected column names
+
+ createDBDocument(u"sdbc:embedded:hsqldb"_ustr);
+ uno::Reference<sdb::XOfficeDatabaseDocument> xDocument(mxComponent, UNO_QUERY_THROW);
+ uno::Reference<XDataSource> xDataSource = xDocument->getDataSource();
+ CPPUNIT_ASSERT(xDataSource.is());
+
+ // Create queries before establishing connection to database
+ createQueries(xDataSource);
+
+ uno::Reference<XConnection> xConnection = getConnectionForDocument(xDocument);
+ createTables(xConnection);
+
+ uno::Reference<XQueriesSupplier> xQuerySupplier(xConnection, UNO_QUERY_THROW);
+ uno::Reference<container::XNameAccess> xQueryAccess = xQuerySupplier->getQueries();
+ CPPUNIT_ASSERT(xQueryAccess->hasElements());
+
+ Sequence<OUString> queryNames{ u"parseable"_ustr, u"parseable native"_ustr };
+
+ Sequence<Sequence<OUString>> expectedColumnNames{
+ { u"ID"_ustr, u"NAME"_ustr, u"ADDRESS"_ustr, u"CITY"_ustr, u"POSTAL"_ustr,
+ u"COMMENT"_ustr },
+ { u"TABLE_CATALOG"_ustr, u"TABLE_SCHEMA"_ustr, u"TABLE_NAME"_ustr, u"VIEW_DEFINITION"_ustr,
+ u"CHECK_OPTION"_ustr, u"IS_UPDATABLE"_ustr, u"VALID"_ustr }
+ };
+
+ for (sal_uInt32 i = 0; i < queryNames.size(); ++i)
+ {
+ uno::Reference<sdbcx::XColumnsSupplier> xColumns(xQueryAccess->getByName(queryNames[i]),
+ UNO_QUERY);
+ uno::Reference<container::XNameAccess> xColumnAccess(xColumns->getColumns());
+ CPPUNIT_ASSERT(xColumnAccess->hasElements());
+ Sequence<OUString> ColumnNames = xColumnAccess->getElementNames();
+
+ for (sal_uInt32 j = 0; j < expectedColumnNames[i].size(); ++j)
+ {
+ CPPUNIT_ASSERT_EQUAL(expectedColumnNames[i][j], ColumnNames[j]);
+ }
+ }
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(CRMDBTest);
CPPUNIT_PLUGIN_IMPLEMENT();