From 73bd644e18b462c65f45e8ea785e6f193041288d Mon Sep 17 00:00:00 2001 From: Oliver Bolte Date: Fri, 25 Jul 2008 06:48:14 +0000 Subject: INTEGRATION: CWS dba30g (1.1.4); FILE ADDED 2008/07/22 06:52:05 fs 1.1.4.2: copying following changes from CWS dba30h to CWS dba30g: 2008/07/21 10:07:45 fs 1.1.2.1: #i91857# 2008/07/21 10:07:45 fs 1.1.4.1: file Parser.java was added on branch cws_dev300_dba30g on 2008-07-22 06:52:05 +0000 --- dbaccess/qa/complex/dbaccess/Parser.java | 96 ++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) create mode 100644 dbaccess/qa/complex/dbaccess/Parser.java (limited to 'dbaccess') diff --git a/dbaccess/qa/complex/dbaccess/Parser.java b/dbaccess/qa/complex/dbaccess/Parser.java new file mode 100644 index 000000000000..e68e1305cd34 --- /dev/null +++ b/dbaccess/qa/complex/dbaccess/Parser.java @@ -0,0 +1,96 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: Parser.java,v $ + * $Revision: 1.2 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +package complex.dbaccess; + +import com.sun.star.sdb.XSingleSelectQueryComposer; +import com.sun.star.sdbc.SQLException; +import com.sun.star.uno.Exception; + +public class Parser extends CRMBasedTestCase +{ + // -------------------------------------------------------------------------------------------------------- + public String[] getTestMethodNames() + { + return new String[] { + "checkJoinSyntax" + }; + } + + // -------------------------------------------------------------------------------------------------------- + public String getTestObjectName() + { + return "Parser"; + } + + // -------------------------------------------------------------------------------------------------------- + protected void createTestCase() + { + try + { + super.createTestCase(); + m_database.getDatabase().getDataSource().createQuery( "query products", "SELECT * FROM \"products\"" ); + } + catch ( Exception e ) + { + e.printStackTrace( System.err ); + assure( "caught an exception (" + e.getMessage() + ") while creating the test case", false ); + } + } + + // -------------------------------------------------------------------------------------------------------- + /** verifies that aliases for inner queries work as expected + */ + public void checkJoinSyntax() throws Exception + { + XSingleSelectQueryComposer composer = createQueryComposer(); + + // feed the composer with some statements. If any of those cannot be parsed, the composer + // will throw an exception - which is a regression then + composer.setQuery( + "SELECT \"categories\".\"Name\", " + + "\"products\".\"Name\" " + + "FROM \"products\" RIGHT OUTER JOIN \"categories\" AS \"categories\" ON \"products\".\"CategoryID\" = \"categories\".\"ID\"" ); + + // just to be sure the composer *really* parses upon setting the query: feed it with + // an unparseable statement + boolean caughtExpected = false; + try + { + composer.setQuery( "NONSENSE" ); + } + catch( SQLException e ) + { + caughtExpected = true; + } + assure( "pre-condition not met: parser should except on unparseable statements, else the complete" + + "test is bogus!", caughtExpected ); + } + +} -- cgit