diff options
Diffstat (limited to 'testautomation/dbaccess/optional/includes/db_Query.inc')
-rw-r--r-- | testautomation/dbaccess/optional/includes/db_Query.inc | 1021 |
1 files changed, 1021 insertions, 0 deletions
diff --git a/testautomation/dbaccess/optional/includes/db_Query.inc b/testautomation/dbaccess/optional/includes/db_Query.inc new file mode 100644 index 000000000000..b9d88142698f --- /dev/null +++ b/testautomation/dbaccess/optional/includes/db_Query.inc @@ -0,0 +1,1021 @@ +'encoding UTF-8 Do not remove or change this line! +'************************************************************************** +' DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. +' +' Copyright 2000, 2010 Oracle and/or its affiliates. +' +' OpenOffice.org - a multi-platform office productivity suite +' +' 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 +' <http://www.openoffice.org/license.html> +' for a copy of the LGPLv3 License. +' +'/************************************************************************ +'* +'* owner : marc.neumann@oracle.com +'* +'* short description : Query Test Library +'* +'\*********************************************************************** +'TODO: testcase for distinct values +function db_Query( sFileName , optional sType , optional sPassword) + + if isMissing (sType) then + sType = "1" + else + printlog sType + sType = UCase(sType) + printlog sType + select case sType + case "TEXT", "CALC" + sType = "1" + case "ODBC", "JDBC" + sType = "2" + case "HSQLDB" + sType = "2" + case "MYSQL_JDBC" + sType = "3" + case else + sType = "1" + end select + endif + + call tQueryCriterion( sFileName , sType , sPassword) + + if sType <> "1" then 'run only with database from type >1 + call tQueryJoin( sFileName , sType, sPassword ) + call tQueriesInQueries(sFileName) + endif + + if sType = "3" then 'run only with database type MYSQL_JDBC + call tCastQuery( sFileName , sPassword ) + endif + + call tSortQueryWithAlias(sFileName , sPassword) + +end function +'------------------------------------------------------------------------- +function tQueryJoin( sFileName , optional sType, optional sPassword ) +'TODO: check Join Type ( LEFT , INNER etc bug i17390) + Dim SelEntry as string + Dim sTableName as string + + sTableName = "TT_Query2" + + if IsMissing(sPassword) then + if ( not fOpenDatabase(sFileName) ) then + warnlog "Database can't be open" + exit function + endif + else + if ( not fOpenDatabase(sFileName,sPassword) ) then + warnlog "Database can't be open" + exit function + endif + endif + + fOpenNewQueryDesign + + Kontext "AddTables" + 'TODO: add a test to click on the execute button, before the add table dialog is closed. + dim ix as integer + dim i as integer + ix = TableName.getItemCount + for i = 1 to ix + TableName.Select i + TableName.TypeKeys "<ADD>" + 'printlog "ix = " + ix + 'printlog "TableName.getItemCount = " + TableName.getItemCount + if TableName.getItemCount > ix then + ix = TableName.getItemCount + 'printlog "TableName.getItemCount > ix" + endif + 'printlog "TableName.getSeltext = " + TableName.getSeltext + if TableName.getSeltext = sTableName then + i = ix + endif + next + if TableName.getSeltext <> sTableName then + warnlog "Can find the table " + sTableName + "." + _ + "Make sure that the table exists when starting this test." + DatabaseClose + sleep(5) + Kontext "Messagebox" + if Messagebox.Exists(3) then + if Messagebox.getRT = 304 then + Messagebox.No + end if + end if + call hCloseDocument + exit function + endif + printlog "- Add " + sTableName +" table to query design" + '/// Add database table to Query. + AddTable.Click + '######## add table TT_Query2 ######### + sTableName = "TT_Query3" + Kontext "AddTables" + 'TODO: add a test to click on the execute button, before the add table dialog is closed. + ix = TableName.getItemCount + for i = 1 to ix + TableName.Select i + TableName.TypeKeys "<ADD>" + if TableName.getItemCount > ix then + ix = TableName.getItemCount + + endif + if TableName.getSeltext = sTableName then + i = ix + endif + next + + if TableName.getSeltext <> sTableName then + warnlog "Can find the table " + sTableName + "." + _ + "Make sure that the table exists when starting this test." + exit function + endif + + printlog "- Add " + sTableName +" table to query design" + '/// Add database table to Query. + AddTable.Click + + sleep(2) + if AddTables.exists(2) then + CloseDlg.Click ' When the AddTables dialog still exists then close him + endif + sleep(1) + + Kontext "QueryDesignTable" + QueryDesignTable.useMenu + sleep(1) + hMenuSelectNr(4) + sleep(1) + hMenuSelectNr(1) + sleep(1) + + Kontext "JoinProperties" + JoinProperties.TypeKeys "<TAB>" , true + sleep(1) + JoinProperties.TypeKeys "<TAB>" , true + sleep(1) + JoinProperties.TypeKeys "<TAB>" , true + sleep(1) + JoinProperties.TypeKeys "<TAB>" , true + sleep(1) + JoinProperties.TypeKeys "<MOD1 DOWN>" , true + sleep(1) + JoinProperties.TypeKeys "<TAB>" , true + sleep(1) + JoinProperties.TypeKeys "<MOD1 DOWN>" , true + sleep(1) + JoinProperties.OK + + Kontext "QueryDesignCriterion" + sleep(1) + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true + + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true + + QueryDesignCriterion.TypeKeys "<UP>" , 2 , true + + QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 3 , true + + QueryDesignCriterion.TypeKeys "<DOWN>" , 5 , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true + mywait() + sleep(1) + Kontext "Toolbar" + ExecuteBtn.Click + + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "4" then + warnlog "Wrong result, maybe the join doesn't work." + endif + endif + sleep(1) + call fCloseQueryDesign + + call fCloseDatabase + +end function +'------------------------------------------------------------------------- +function tQueryCriterion( sFileName , optional sType , optional sPassword) + + Dim SelEntry as string + Dim sTableName as string + + sTableName = "TT_Query1" + + if IsMissing(sPassword) then + if ( not fOpenDatabase(sFileName) ) then + warnlog "Database can't be open" + exit function + endif + else + if ( not fOpenDatabase(sFileName,sPassword) ) then + warnlog "Database can't be open" + exit function + endif + endif + + fOpenNewQueryDesign + + + Kontext "AddTables" + 'TODO: add a test to click on the execute button, before the add table dialog is closed. + dim ix as integer + dim i as integer + ix = TableName.getItemCount + for i = 1 to ix + TableName.Select i + TableName.TypeKeys "<ADD>" + 'printlog "ix = " + ix + 'printlog "TableName.getItemCount = " + TableName.getItemCount + if TableName.getItemCount > ix then + ix = TableName.getItemCount + 'printlog "TableName.getItemCount > ix" + endif + 'printlog "TableName.getSeltext = " + TableName.getSeltext + if TableName.getSeltext = sTableName then + i = ix + endif + next + if TableName.getSeltext <> sTableName then + warnlog "Can find the table " + sTableName + "." + _ + "Make sure that the table exists when starting this test." + DatabaseClose + sleep(5) + Kontext "Messagebox" + if Messagebox.Exists(3) then + if Messagebox.getRT = 304 then + Messagebox.No + end if + end if + call hCloseDocument + exit function + endif + printlog "- Add " + sTableName +" table to query design" + '/// Add database table to Query. + AddTable.Click + sleep(2) + if AddTables.exists(2) then + CloseDlg.Click ' When the AddTables dialog still exists then close him + endif + sleep(1) + Kontext "QueryDesignCriterion" + Field.Select(1) + sleep(1) + Kontext "Toolbar" + '/// Executing query + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if NOT DataWindow.Exists(3) then + warnlog "Execution of a query failed!" + end if + ' #### don't comment a test, because they depends on each other #### + if sType <> "1" then + '/// start the 1. test ############################# + printlog "start the 1. test #############################" + call tTest1 + '/// start the 2. test + printlog "start the 2. test" + call tTest2 + '/// start the 3. test + printlog "start the 3. test" + call tTest3 + '/// start the 4. test + printlog "start the 4. test" + call tTest4 + '/// start the 5. test + printlog "start the 5. test" + call tTest5 + '/// start the 6. test + printlog "start the 6. test" + call tTest6 + '/// start the 7. test + printlog "start the 7. test" + call tTest7 + '/// start the 8. test + printlog "start the 8. test" + call tTest8 + ' main test end ############################### + printlog "main test end ###############################" + endif + fCloseQueryDesign + fCloseDatabase + +end function +'------------------------------------------------------------------------- +function tQueriesInQueries( sFileName , optional sType , optional sPassword) + + Dim SelEntry as string + Dim sTableName as string + + sTableName = "TT_Query1" + + if IsMissing(sPassword) then + if ( not fOpenDatabase(sFileName) ) then + warnlog "Database can't be open" + exit function + endif + else + if ( not fOpenDatabase(sFileName,sPassword) ) then + warnlog "Database can't be open" + exit function + endif + endif + + '/// open new query design + printlog "open new query design" + call fOpenNewQueryDesign + + '/// choose table TT_Query1 from AddTable dialog + printlog "choose table TT_Query1 from AddTable dialog" + call fChooseTableInQueryAddTableDialog("TT_Query1") + + '/// insert fields name1 and name2 + printlog "insert fields name1 and name2" + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 7, true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 6, true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + sleep(1) + + '/// save the query as Query_test_1 + printlog "save the query as Query_test_1" + call fSaveQueryDesign("Query_test_1") + + '/// close the query design + printlog "close the query design" + call fCloseQueryDesign() + + '/// open new query design + printlog "open new query design" + call fOpenNewQueryDesign + + '/// choose query Query_test_1 from AddTable dialog + printlog "choose query Query_test_1 from AddTable dialog" + call fChooseQueryInQueryAddTableDialog("Query_test_1") + + '/// insert fields name1 + printlog "insert fields name1" + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 UP>" , 2, true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + sleep(1) + + + '/// save the query with the name Query_test_2 + printlog "save the query with the name Query_test_2" + call fSaveQueryDesign("Query_test_2") + + '/// close the query design + printlog "close the query design" + call fCloseQueryDesign() + + '/// close the query design + printlog "close the query design" + call fCloseDatabase(true) + + '/// open the database again + printlog "open the database again" + if IsMissing(sPassword) then + if ( not fOpenDatabase(sFileName) ) then + warnlog "Database can't be open" + exit function + endif + else + if ( not fOpenDatabase(sFileName,sPassword) ) then + warnlog "Database can't be open" + exit function + endif + endif + + '/// execute the QueryInQuery "Query_test_2" + printlog "execute the QueryInQuery Query_test_2" + if ( fOpenQuery("Query_test_2") = false ) then + warnlog "Can't open query Query_test_2" + call fCloseDatabase() + exit function + endif + + '/// close Query view + printlog "close Query view" + call fCloseQueryView() + + '/// close database + printlog "close database" + call fCloseDatabase() + +end function +'------------------------------------------------------------------------- +sub mywait() + 'sleep(1) +end sub + +sub tTest1 + '/// insert the <b>* as field</b> + '/// take <b>count</b> from the <b>function</b> listbox + '/// <b>Execute</b> the query + '/// the <b>result</b> should be <b>11</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 5 , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true + mywait() + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "11" then + warnlog "There should be 11 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest2 + '/// add the field <b>'name1'</b> to the field list + '/// set the field <b>invisible</b> + '/// as criterion insert <b>LIKE 'F*'</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>3</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 4 , true + mywait() + QueryDesignCriterion.TypeKeys "<SPACE>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "LIKE 'F*'" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "3" then + warnlog "There should be 3 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest3 + '/// add the field <b>'date'</b> to the field list + '/// set the field <b>invisible</b> + '/// as criterion insert <b>IS NULL</b> + '/// b>execute</b> the query + '/// the <b>result</b> should be <b>1</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 7 , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 4 , true + mywait() + QueryDesignCriterion.TypeKeys "<SPACE>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "IS NULL" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "1" then + warnlog "There should be 1 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest4 + '/// <b>change</b> the criterion for field <b>date</b> to <b>is not null</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>2</b> + Kontext "QueryDesignCriterion" + + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "IS NOT NULL" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "2" then + warnlog "There should be 2 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest5 + '/// <b>remove</b> the fields <b>'name1' and 'date'</b> + '/// <b>add</b> field <b>ID</b> + '/// set <b>ID invisible</b> + '/// as <b>criterion</b> insert <b>BETWEEN 4 AND 7</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>4</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DELETE>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DELETE>" , true + mywait() + QueryDesignCriterion.TypeKeys "BETWEEN 4 AND 7" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DELETE>" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "4" then + warnlog "There should be 4 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest6 + '/// <b>change the criterion</b> for field ID to <b>NOT BETWEEN 4 AND 7</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>7</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "NOT BETWEEN 4 AND 7" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "7" then + warnlog "There should be 7 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest7 + '/// remove the field ID + '/// <b>add</b> field <b>name1</b> + '/// set name1 <b>invisible</b> + '/// as <b>criterion</b> insert <b>IN ('Heinz','Freddi')</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>2</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DELETE>" , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<MOD1 DOWN>" , 2 , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DELETE>" , true + mywait() + QueryDesignCriterion.TypeKeys "IN ('Heinz','Freddi')" , true + mywait() + sleep(1) + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "2" then + warnlog "There should be 2 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub + +sub tTest8 + '/// change <b>criterion</b> to <b>NOT IN ('Heinz','Freddi')</b> + '/// <b>execute</b> the query + '/// the <b>result</b> should be <b>9</b> + Kontext "QueryDesignCriterion" + sleep(1) + printlog "Go to the top left field." + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + mywait() + QueryDesignCriterion.TypeKeys "<HOME>" , true + mywait() + QueryDesignCriterion.TypeKeys "<TAB>" , true + mywait() + QueryDesignCriterion.TypeKeys "<DOWN>" , 6 , true + mywait() + QueryDesignCriterion.TypeKeys "<SHIFT END>" , true + mywait() + QueryDesignCriterion.TypeKeys "NOT IN ('Heinz','Freddi')" , true + mywait() + QueryDesignCriterion.TypeKeys "<RETURN>" , true + mywait() + 'TODO: check if the right localazied string appear + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "9" then + warnlog "There should be 9 records but there are " + GetClipboard + else + printlog GetClipboard + " records available." + endif + else + warnlog "Execution of a query failed!" + end if + sleep(2) +end sub +'-------------------------------------------------------------------- +sub tCastQuery( sFileName , sPassword ) + + fOpenDatabase(sFileName,sPassword) + + if ( fOpenNewQueryDesign ) then + if ( fChooseTableInQueryAddTableDialog("TT_Query3") ) then + Kontext "QueryDesignCriterion" + sleep(1) + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + sleep(1) + QueryDesignCriterion.TypeKeys "cast(f_date_s as date)" , true + sleep(1) + QueryDesignCriterion.TypeKeys "<RETURN>" , true + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + + Kontext "TableView" + if TableView.Exists(3) then + + DataWindow.TypeKeys "<MOD1 C>" + if GetClipboard <> "40219" then + warnlog "the result should be 40219 but it is " + GetClipboard + else + printlog "the result is OK" + endif + else + warnlog "Execution of a query failed!" + end if + + call fCloseQueryDesign + + endif + endif + call fCloseDatabase + +end sub +'-------------------------------------------------------------------- +function tSortQueryWithAlias(sFileName, optional sPassword) ' test for isse 27832 + + if IsMissing(sPassword) then + if ( not fOpenDatabase(sFileName) ) then + warnlog "Database can't be open" + exit function + endif + else + if ( not fOpenDatabase(sFileName,sPassword) ) then + warnlog "Database can't be open" + exit function + endif + endif + + if ( fOpenNewQueryDesign ) then + if ( fChooseTableInQueryAddTableDialog("TT_Query1") ) then + Kontext "QueryDesignCriterion" + sleep(1) + QueryDesignCriterion.TypeKeys "<MOD1 PAGEUP>" , true + sleep(1) + QueryDesignCriterion.TypeKeys "<MOD1 SHIFT DOWN>" , true + sleep(1) + QueryDesignCriterion.TypeKeys "<MOD1 SHIFT DOWN>" , true + sleep(1) + QueryDesignCriterion.TypeKeys "<DOWN>" , true + sleep(1) + QueryDesignCriterion.TypeKeys "test" , true + sleep(1) + Kontext "Toolbar" + printlog "- Executing query" + ExecuteBtn.Click + sleep(5) + + call fCloseQueryDesign + + endif + endif + call fCloseDatabase + +end function +'-------------------------------------------------------------------- +function fChooseTableInQueryAddTableDialog(sTableName as string) as boolean + + + Kontext "AddTables" + if ( not AddTables.exists(1) ) then + fChooseTableInQueryAddTableDialog = false + exit function + endif + + 'TODO: add a test to click on the execute button, before the add table dialog is closed. + dim ix as integer + dim i as integer + ix = TableName.getItemCount + for i = 1 to ix + TableName.Select i + TableName.TypeKeys "<ADD>" + 'printlog "ix = " + ix + 'printlog "TableName.getItemCount = " + TableName.getItemCount + if TableName.getItemCount > ix then + ix = TableName.getItemCount + 'printlog "TableName.getItemCount > ix" + endif + 'printlog "TableName.getSeltext = " + TableName.getSeltext + if TableName.getSeltext = sTableName then + i = ix + endif + next + if TableName.getSeltext <> sTableName then + warnlog "Can find the table " + sTableName + "." + _ + "Make sure that the table exists when starting this test." + DatabaseClose + sleep(5) + Kontext "Messagebox" + if Messagebox.Exists(3) then + if Messagebox.getRT = 304 then + Messagebox.No + end if + end if + call hCloseDocument + exit function + endif + printlog "- Add " + sTableName +" table to query design" + '/// Add database table to Query. + AddTable.Click + sleep(2) + if AddTables.exists(2) then + CloseDlg.Click ' When the AddTables dialog still exists then close him + endif + sleep(1) + fChooseTableInQueryAddTableDialog = true + +end function +'-------------------------------------------------------------------- +function fChooseQueryInQueryAddTableDialog(sQueryName as string) as boolean + + + Kontext "AddTables" + if ( not AddTables.exists(1) ) then + fChooseQueryInQueryAddTableDialog = false + exit function + endif + Queries.check + + + 'TODO: add a test to click on the execute button, before the add table dialog is closed. + dim ix as integer + dim i as integer + ix = QueryName.getItemCount + for i = 1 to ix + QueryName.Select i + QueryName.TypeKeys "<ADD>" + 'printlog "ix = " + ix + 'printlog "TableName.getItemCount = " + TableName.getItemCount + if QueryName.getItemCount > ix then + ix = QueryName.getItemCount + 'printlog "TableName.getItemCount > ix" + endif + 'printlog "TableName.getSeltext = " + TableName.getSeltext + if QueryName.getSeltext = sQueryName then + i = ix + endif + next + if QueryName.getSeltext <> sQueryName then + warnlog "Can find the table " + sTableName + "." + _ + "Make sure that the table exists when starting this test." + DatabaseClose + sleep(5) + Kontext "Messagebox" + if Messagebox.Exists(3) then + if Messagebox.getRT = 304 then + Messagebox.No + end if + end if + call hCloseDocument + exit function + endif + printlog "- Add " + sQueryName +" table to query design" + '/// Add database table to Query. + AddTable.Click + sleep(2) + if AddTables.exists(2) then + CloseDlg.Click ' When the AddTables dialog still exists then close him + endif + sleep(1) + fChooseQueryInQueryAddTableDialog = true + +end function |