summaryrefslogtreecommitdiff
path: root/testautomation
diff options
context:
space:
mode:
authorJoerg Skottke [jsk] <jsk@openoffice.org>2010-04-30 15:36:44 +0200
committerJoerg Skottke [jsk] <jsk@openoffice.org>2010-04-30 15:36:44 +0200
commit47ece945a698bcb64f88cdc9c832df6b7957c49b (patch)
tree169f8ba225880fcf3755f1bf0250ef29692bca83 /testautomation
parentc054caae20b1008ad9da69519472fcf0d09a8e35 (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-xtestautomation/framework/required/f_window_functions.bas3
-rw-r--r--[-rwxr-xr-x]testautomation/framework/required/includes/window_functions.inc252
-rwxr-xr-xtestautomation/global/tools/includes/optional/t_ole.inc2
-rwxr-xr-xtestautomation/global/tools/includes/required/t_menu.inc17
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>&quot;swriter&quot;</li>
- '+<li>&quot;sglobal&quot;</li>
- '+<li>&quot;sweb&quot;</li>
- '+<li>&quot;scalc&quot;</li>
- '+<li>&quot;simpress&quot;</li>
- '+<li>&quot;sdraw&quot;</li>
- '+<li>&quot;smath&quot;</li>
- '+<li>&quot;insight&quot; * Currently disabled</li>
- '+<li>&quot;soffice&quot; * Currently disabled</li>
- '</ol>
- '+<li>Reference name (string), matches name of application</li>
- '<ol>
- '+<li>&quot;Writer&quot;</li>
- '+<li>&quot;Writer/Web&quot;</li>
- '+<li>&quot;Calc&quot;</li>
- '+<li>&quot;Impress&quot;</li>
- '+<li>&quot;Draw&quot;</li>
- '+<li>&quot;Math&quot;</li>
- '+<li>&quot;Base&quot; * Currently disabled</li>
- '+<li>&quot;&quot; * 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