diff options
author | Joerg Skottke [jsk] <jsk@openoffice.org> | 2010-04-30 15:36:44 +0200 |
---|---|---|
committer | Joerg Skottke [jsk] <jsk@openoffice.org> | 2010-04-30 15:36:44 +0200 |
commit | 47ece945a698bcb64f88cdc9c832df6b7957c49b (patch) | |
tree | 169f8ba225880fcf3755f1bf0250ef29692bca83 /testautomation | |
parent | c054caae20b1008ad9da69519472fcf0d09a8e35 (diff) |
vitomation01: #i111282 - extended f_window_functions.bas to cover BASIC IDE, StartCenter and Database as well. Needed to get rid of fSplitWindowTitle (too complex and not flexible enough to do the job) and needed to build in some safeguard against hGetWindowCaption() which causes array out of bounds errors and modifies its function parameters. Removed QAErrorlog as the issue with the incorrect windowtitle of the StartCenter is never going to be fixed, printlog will do.
Diffstat (limited to 'testautomation')
-rwxr-xr-x | testautomation/framework/required/f_window_functions.bas | 3 | ||||
-rw-r--r--[-rwxr-xr-x] | testautomation/framework/required/includes/window_functions.inc | 252 | ||||
-rwxr-xr-x | testautomation/global/tools/includes/optional/t_ole.inc | 2 | ||||
-rwxr-xr-x | testautomation/global/tools/includes/required/t_menu.inc | 17 |
4 files changed, 133 insertions, 141 deletions
diff --git a/testautomation/framework/required/f_window_functions.bas b/testautomation/framework/required/f_window_functions.bas index 2b6bd8e5a5ad..dabbd7647649 100755 --- a/testautomation/framework/required/f_window_functions.bas +++ b/testautomation/framework/required/f_window_functions.bas @@ -51,6 +51,9 @@ sub LoadIncludeFiles use "global\tools\includes\optional\t_docfuncs.inc" use "global\tools\includes\optional\t_filetools.inc" + use "global\tools\includes\optional\t_basic_ide_tools.inc" + use "global\tools\includes\optional\t_basic_organizer_tools.inc" + use "global\tools\includes\optional\t_treelist_tools.inc" gApplication = "WRITER" call GetUseFiles() diff --git a/testautomation/framework/required/includes/window_functions.inc b/testautomation/framework/required/includes/window_functions.inc index 6efeb70b0b6f..779ab3c0a8aa 100755..100644 --- a/testautomation/framework/required/includes/window_functions.inc +++ b/testautomation/framework/required/includes/window_functions.inc @@ -40,17 +40,17 @@ testcase tWindowFunctions goto endsub endif - + printlog( "Create initial document" ) gApplication = "WRITER" hInitSingleDoc() hInitWriteDocIdentifier( "F_updt_windowfuncs.bas" ) - + printlog( "New document" ) hNewDocument() if ( getDocumentCount <> 2 ) then warnlog( "Two open documents were expected, found " & getDocumentCount ) - endif + endif kontext "DocumentWriter" printlog( "Close document" ) @@ -64,7 +64,7 @@ testcase tWindowFunctions hNewDocument() if ( getDocumentCount <> 2) then warnlog( "Two open documents were expected, found " & getDocumentCount ) - endif + endif printlog( "Enter some text into the second writer document" ) kontext "DocumentWriter" @@ -78,8 +78,8 @@ testcase tWindowFunctions else warnlog( "No warning that data will be lost on close of this document" ) endif - - kontext "DocumentWriter" + + kontext "DocumentWriter" if ( getDocumentCount = 2 ) then printlog( "Two documents open. Good." ) else @@ -89,21 +89,21 @@ testcase tWindowFunctions kontext "DocumentWriter" printlog( "Close the document" ) FileClose() - + kontext "Active" - if ( Active.exists() ) then + if ( Active.exists() ) then printlog( "Do not save the document" ) Active.No() else warnlog( "Warning: No data loss warning" ) endif - + kontext "DocumentWriter" if ( getDocumentCount = 1 ) then printlog( "One document open. Good." ) else warnlog( "Incorrect document count. Expected one, found " & getDocumentCount ) - endif + endif Kontext "DocumentWriter" printlog( "Minimize window" ) @@ -132,7 +132,7 @@ testcase tWindowFunctions printlog( "Maximize window" ) DocumentWriter.Maximize() Wait( 2000 ) - + kontext "DocumentWriter" if ( DocumentWriter.IsMax() ) then printlog( "Window is maximized" ) @@ -149,177 +149,157 @@ endcase sub sAllWindowTitle printlog( "Window titles for the applications: " & gProductName ) - + printlog( "Writer" ) gApplication = "WRITER" - call tCheckWindowTitle("swriter","Writer") + call tCheckWindowTitle( "swriter", "Writer" ) printlog( "Master Document" ) gApplication = "MASTERDOCUMENT" - call tCheckWindowTitle("sglobal","Writer") + call tCheckWindowTitle( "sglobal", "Writer" ) printlog( "HTML" ) gApplication = "HTML" - call tCheckWindowTitle("sweb","Writer/Web") + call tCheckWindowTitle( "sweb", "Writer/Web" ) printlog( "Spreadsheet" ) gApplication = "CALC" - call tCheckWindowTitle("scalc","Calc") + call tCheckWindowTitle( "scalc", "Calc" ) printlog( "Presentation" ) gApplication = "IMPRESS" - call tCheckWindowTitle("simpress","Impress") + call tCheckWindowTitle( "simpress", "Impress" ) printlog( "Drawing" ) gApplication = "DRAW" - call tCheckWindowTitle("sdraw","Draw") + call tCheckWindowTitle( "sdraw", "Draw" ) printlog( "Formula" ) gApplication = "MATH" - call tCheckWindowTitle("smath","Math") + call tCheckWindowTitle( "smath", "Math" ) - qaerrorlog( "Excluded BASE and BACKINGWINDOW" ) + printlog( "BASIC IDE" ) + gApplication = "WRITER" + call tCheckWindowTitle( "basic", "Basic" ) - 'gApplication = "DATABASE" - 'call tCheckWindowTitle("DATABASE","Base") + printlog( "Database" ) + gApplication = "DATABASE" + call tCheckWindowTitle( "database", "Base" ) - 'fileclose - 'call tCheckWindowTitle("soffice","") + printlog( "Backing Window / StartCenter" ) + gApplication = "BACKGROUND" + call tCheckWindowTitle( "soffice", "" ) end sub '******************************************************************************* -testcase tCheckWindowTitle(sApplication as string, sReference as string) +testcase tCheckWindowTitle( sApplication as string, sReference as string ) printlog( "Update test for the office window titles" ) - '<u>Input</u>: - '<ol> - '+<li>Name of application (string), case sensitive. Valid options are:</li> - '<ol> - '+<li>"swriter"</li> - '+<li>"sglobal"</li> - '+<li>"sweb"</li> - '+<li>"scalc"</li> - '+<li>"simpress"</li> - '+<li>"sdraw"</li> - '+<li>"smath"</li> - '+<li>"insight" * Currently disabled</li> - '+<li>"soffice" * Currently disabled</li> - '</ol> - '+<li>Reference name (string), matches name of application</li> - '<ol> - '+<li>"Writer"</li> - '+<li>"Writer/Web"</li> - '+<li>"Calc"</li> - '+<li>"Impress"</li> - '+<li>"Draw"</li> - '+<li>"Math"</li> - '+<li>"Base" * Currently disabled</li> - '+<li>"" * Currently disabled</li> - '</ol> - '</ol> - '<u>Returns</u>: - '<ol> - '+<li>Nothing</li> - '</ol> - '<u>Description</u>: - '<ul> - - - dim sTemp as string - dim saTemp() as string - dim brc as boolean - gApplication = gApplication - printlog " - Application: " + sApplication + "; Title should be: " + sReference - - printlog( "Ensure that exactly one document is open" ) - hInitSingleDoc() - printlog( "Open another document as specified by gApplication" ) + const BASIC_MODULE = "tCheckWindowTitle" + const STRING_NOT_FOUND = 0 + const STRING_LEFTMOST = 1 + + dim cWindowCaption as string + + dim iProductnamePosition as integer + dim iApplicationPosition as integer + + dim cProductNameString as string + dim cApplicationString as string + + ' hGetWindowCaption modifies it's function parameter, so we pass a copy instead + ' This is a thing that justifies the use of a four letter word for sure. + dim sApplicationTemp as string : sApplicationTemp = sApplication + + printlog( "Application: " & sApplication & "; Title should be: " & sReference ) + printlog( "Open the work windows (documents)" ) + hInitSingleDoc() hCreateDocument() printlog( "Verify that the correct window is open" ) select case sApplication - case"swriter": - case"sglobal": - case"sweb": - case"scalc": - case"simpress": - case"sdraw": - case"smath": - case"basic": - ToolsMacroMacro - kontext "makro" - if Makro.exists(5) then - MakroAus.typeKeys "<end>" - if (Neu.isEnabled) then - Neu.click - kontext "basicide" - if BasicIDE.exists(5) then - printlog( "Basic IDE open. Good." ) - else - warnlog( "Basic IDE not open. This is unexpected" ) - endif - else - warnlog( "New-button is unexpectedly disabled." ) - endif - try - kontext "neuesmodul" - if NeuesModul.exists(5) then - NeuesModul.OK - else - warnlog( "New module naming dialog is not open" ) - endif - catch - warnlog( "Accessing <New module> dialog failed" ) - endcatch - else - warnlog( "Couldn't open Tools->Macros->Organize Macros...->StarOffice Basic..." ) - endif - case"chart": - case"DATABASE": - case"soffice": - brc = hDestroyDocument() + case "swriter" : + case "sglobal" : + case "sweb" : + case "scalc" : + case "simpress": + case "sdraw" : + case "smath" : + case "basic" : hInitBasicIDE( BASIC_MODULE ) + case "chart" : + case "database": + case "soffice" : hFileCloseAll() end select - printlog( "Retrieve the caption from the window" ) - sTemp = hGetWindowCaption(sApplication) - printlog( "Caption is: " & sTemp ) - - printlog( "Split up the string to isolate the desired part" ) - saTemp() = fSplitWindowTitle(sTemp) - printlog "Filename/Untitled: '" & saTemp(0) & "'" - - printlog( "Compare the string to a reference" ) - if (ubound(saTemp()) > 0) then - if (saTemp(1) <> sReference) then - warnlog "Applicationname not as expected. Should be: '" & sReference & "', is: '" & saTemp(1) & "'" + ' Note: The Testtool connection string does not belong to the window caption + ' so we do not check for it here. + cWindowCaption = hGetWindowCaption( sApplicationTemp ) + printlog( "Caption is: " & cWindowCaption ) + + ' This prevents accidential matches like "base" in a document name like "database8.odb" + ' And we have a - (minus) as delimiter between the document name and the product name + cProductnameString = " - " & gProductName & " " + cApplicationString = " " & sReference + + ' Find out where in the caption the substrings are + iProductNamePosition = instr( cWindowCaption, cProductnameString ) + iApplicationPosition = instr( cWindowCaption, cApplicationString ) + + ' Verify that the productname is contained within the string + if ( iProductNamePosition = STRING_NOT_FOUND ) then + warnlog( "The product name is missing" ) + endif + + ' Verify that the application name (e.g. "Writer") is contained in the string + ' The StartCenter should not have any application name + if ( sApplication = "soffice" ) then + if ( iApplicationPosition > STRING_NOT_FOUND ) then + printlog( "The StartCenter should not have an application name" ) endif - printlog "Productname: '" + saTemp(2) + "'" else - warnlog "#i36173# - Applicationname not as expected. Should be: '" & sReference & "', is: '" & saTemp(1) + "'" + if ( iApplicationPosition = STRING_NOT_FOUND ) then + warnlog( "The application name is missing" ) + endif + endif + + if ( sApplication = "soffice" ) then + printlog( "Backing window should exclusively show the product name" ) + else + ' If one of Productname or application is leftmost in the string, we have a + ' missing document identifier. This can be different things - the filename, + ' the module name (BASIC) etc. + if ( ( iApplicationPosition = STRING_LEFTMOST ) OR _ + iProductnamePosition = STRING_LEFTMOST ) then + warnlog( "Current document identifier missing (like e.g. <Unknown 1>)" ) + endif + + ' Verify that the order is correct: Product name first, the application + if ( iProductNamePosition >= iApplicationPosition ) then + warnlog( "The order of the strings is incorrect" ) + printlog( "Expected: <Product Name> <Application>" ) + endif endif printlog( "Cleanup after test" ) select case sApplication - case"swriter": - case"sglobal": - case"sweb": - case"scalc": - case"simpress": - case"sdraw": - case"smath": - case"basic": - brc = hDestroyDocument() - case"chart": - case"DATABASE": - case"soffice": - hCreateDocument() - hCreateDocument() + case "swriter" : + case "sglobal" : + case "sweb" : + case "scalc" : + case "simpress": + case "sdraw" : + case "smath" : + case "basic" : hDestroyDocument() + case "chart" : + case "database": + case "soffice" : hCreateDocument() end select printlog( "Close all open documents" ) hFileCloseAll() + endcase diff --git a/testautomation/global/tools/includes/optional/t_ole.inc b/testautomation/global/tools/includes/optional/t_ole.inc index f31798c37bbc..0ea179822cd2 100755 --- a/testautomation/global/tools/includes/optional/t_ole.inc +++ b/testautomation/global/tools/includes/optional/t_ole.inc @@ -73,7 +73,7 @@ function hGetOleObjectName( cApplication as string ) as string ' The application names for the API are case sensitive so we cannot use gApplication select case ( cApplication ) - case "WRITER" : Application_API_Name = "Writer + case "WRITER" : Application_API_Name = "Writer" case "CALC" : Application_API_Name = "Calc" case "IMPRESS": Application_API_Name = "Impress" case "DRAW" : Application_API_Name = "Draw" diff --git a/testautomation/global/tools/includes/required/t_menu.inc b/testautomation/global/tools/includes/required/t_menu.inc index f78e2239e943..a7c64b37865d 100755 --- a/testautomation/global/tools/includes/required/t_menu.inc +++ b/testautomation/global/tools/includes/required/t_menu.inc @@ -687,19 +687,22 @@ end function '******************************************************************************* -function hGetWindowCaption(sApplication as string, optional bAll as boolean) +function hGetWindowCaption( sApplication as string, optional bAll as boolean ) '///<b> function hGetWindowCaption () </b>///' '///+ just returns the string from the application main window ///' '///+ If optional parameter = true, thenn go throught all applications and get caption; return array ///' + ' BEWARE: THIS FUNCTION MODIFIES ITS FUNCTION PARAMETER UNDER CERTAIN + ' CONDITIONS! + dim sTemp as string dim aApplication() as string dim aTemp(10) as string dim iTimes as integer dim i as integer - aApplication = array("SWRITER","SGLOBAL","SWEB","SCALC","SDRAW","SIMPRESS","SMATH","BASIC","BACK") + aApplication = array("SWRITER","SGLOBAL","SWEB","SCALC","SDRAW","SIMPRESS","SMATH","BASIC","DATABASE","SOFFICE") if (isMissing(bAll) OR (NOT bAll)) then iTimes = 0 else @@ -756,7 +759,13 @@ function hGetWindowCaption(sApplication as string, optional bAll as boolean) sTemp = BasicIDE.caption catch endcatch - Case "BACK" + Case "DATABASE" + Kontext "DATABASE" + try + sTemp = DataBase.caption + catch + endcatch + Case "SOFFICE" Kontext "DocumentBackground" try sTemp = DocumentBackground.caption @@ -782,7 +791,7 @@ end function '******************************************************************************* -function fSplitWindowTitle(sInString as string) +function fSplitWindowTitle( sInString as string ) dim a, b, x, i, iProductname as integer dim sTemp() as string |