diff options
Diffstat (limited to 'testautomation/global/tools/includes/optional/t_control_objects.inc')
-rw-r--r-- | testautomation/global/tools/includes/optional/t_control_objects.inc | 611 |
1 files changed, 611 insertions, 0 deletions
diff --git a/testautomation/global/tools/includes/optional/t_control_objects.inc b/testautomation/global/tools/includes/optional/t_control_objects.inc new file mode 100644 index 000000000000..00bafbf04ed5 --- /dev/null +++ b/testautomation/global/tools/includes/optional/t_control_objects.inc @@ -0,0 +1,611 @@ +'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 : joerg.skottke@sun.com +'* +'* short description : Functions to manipulate controls by accessing them as objects +'* +'\****************************************************************************** + +private const MSG1 = "Incorrect default setting: " + +'******************************************************************************* + +function cb_test( oControl as object, def_state as string, issueid as string ) as boolean + + ' Small helper that prints a warnlog if a checkbox does not have the correct + ' default setting (checked -> def_state = TRUE). You can supply an issue id + ' which will be printed to the log. no parameter is optional, issueid can + ' be an empty string. + + ' oControl: The checkbox itself + ' def_state: Default state (checked or unchecked) + ' issueid: Issue id as string "#i123456#" for QUASTe + + dim con_state as boolean : con_state = oControl.isChecked() + dim con_name as string : con_name = oControl.name() + + printlog( con_name & " (Checkbox)" ) + cb_test() = true + + if ( def_state ) then + + if ( NOT con_state ) then + warnlog( issueid & " " & MSG1 & con_name & " should be checked" ) + cb_test() = false + endif + + oControl.unCheck() + oControl.check() + + else + + if ( con_state ) then + warnlog( issueid & " " & MSG1 & con_name & " should be unchecked" ) + cb_test() = false + endif + + oControl.check() + oControl.unCheck() + + endif + +end function + +'******************************************************************************* + +function lb_test( oControl as object, items as integer, preset as integer, issueid as string ) as boolean + + ' Do some basic testing on listboxes + ' - verify that the number of entries is correct + ' - verify that the default selection is correct + ' - select each item and restore default + + ' oControl: The Listbox as object + ' items: Number of items in the list + ' preset: Item which is selected by default (usually 1), skip with 0 + ' issueid: Issue id as string "#i123456#" for QUASTe + + dim con_name as string : con_name = oControl.name() + dim con_items as integer : con_items = oControl.getItemCount() + dim con_preset as integer : con_preset = oControl.getSelIndex() + dim con_iterator as integer + + printlog( con_name & " (Listbox)" ) + if ( oControl.isEnabled() ) then + lb_test() = true + + if ( con_items <> items ) then + warnlog( issueid & " Incorrect itemcount in listbox: " & con_name ) + printlog( "Expected: " & items ) + printlog( "Found...: " & con_items ) + lb_test() = false + endif + + if ( preset > 0 ) then + if ( con_preset <> preset ) then + warnlog( issueid & " Incorrect default setting (index): " & con_name ) + printlog( "Expected: " & preset ) + printlog( "Found...: " & con_preset ) + lb_test() = false + endif + endif + + for con_iterator = 1 to items + oControl.select( con_iterator ) + next con_iterator + + if ( preset > 0 ) then oControl.select( preset ) + else + printlog( "The control is disabled" & con_name ) + lb_test() = false + endif + +end function + +'******************************************************************************* + +function checkRadioButton( _file as string , sKey as string , control as object ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + ' a wrapper. The routine is identical to checkCheckBox. + + checkRadioButton = checkCheckBox( _file , sKey , control ) + +end function + +'******************************************************************************* + +function checkCheckBox( _file as string , sKey as string , control as object , optional cBugID as string ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim bIsChecked as boolean + dim sIsChecked as string + dim _sIsChecked as string + + if ( ismissing( cBugID ) ) then + cBugID = "WriteMe!" + endif + if ( sKey = "*" ) then + sKey = control.name() + endif + + sKey = lcase( sKey ) + _sIsChecked = lcase( hGetFileData( _file , sKey ) ) + + if ( _sIsChecked <> "disabled" ) then + + ' look if the control is present on the current dialog + if ( control.exists() and _ + control.IsVisible() and _ + control.IsEnabled() ) then + + ' find out whether it is checked or not, create strings for errormessage + bIsChecked = control.isChecked() + if ( bIsChecked = true ) then + sIsChecked = "checked" + else + sIsChecked = "unchecked" + endif + + ' compare + keycompare( sIsChecked , _sIsChecked , sKey , cBugID ) + checkCheckBox() = control.isChecked() + + else + + warnlog( "Control <" & sKey & "> could not be accessed." ) + + endif + + else + + if ( control.IsEnabled() ) then + warnlog( "The control should be disabled but it is not: " & sKey ) + endif + + endif + +end function + +'******************************************************************************* + +function setCheckBox( _file as string , sKey as string , control as object , optional bverbose as boolean ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim sIsChecked as string + dim _sIsChecked as string + + if ( sKey = "*" ) then + sKey = control.name() + endif + if ( ismissing( bverbose ) ) then + bverbose = true + endif + + sKey = lcase( sKey ) + _sIsChecked = lcase( hGetFileData( _file , sKey ) ) + + if ( _sIsChecked <> "disabled" ) then + + if ( control.exists() and _ + control.IsVisible() and _ + control.IsEnabled() ) then + + select case _sIsChecked + + case "checked" + control.check() + setCheckBox() = true + case "unchecked" + control.uncheck() + setCheckBox() = false + case else + warnlog( "what?" ) + + end select + + if ( bverbose ) then + printlog( " * " & sKey ) + endif + + else + + ' warn if the control could not be used (only works in rare cases) + warnlog( "Control <" & sKey & "> is not accessible." ) + + endif + + else + + if ( control.IsEnabled() ) then + warnlog( "The control should be disabled but it is not: " & sKey ) + endif + + endif + +end function + +'******************************************************************************* + +function checkComboBox( _file as string , sKey as string , control as object ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim controltext as string ' current state + dim _controltext as string ' reference + + if ( sKey = "*" ) then + sKey = control.name() + endif + + sKey = lcase( sKey ) + + if ( control.exists() = true and control.IsVisible = true ) then + + _controltext = lcase( hGetFileData( _file , skey ) ) + controltext = control.getSelText() + keycompare( controltext , _controltext , sKey ) + checkComboBox() = control.isEnabled() + + else + + warnlog( "Control <" & sKey & "> could not be accessed." ) + + endif + +end function + +'******************************************************************************* + +function setComboBox( _file as string , sKey as string , control as object , optional bverbose as boolean ) as integer + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim _controltext as string ' reference string retrieved from _file + + if ( ismissing( bverbose ) ) then + bverbose = true + endif + if ( sKey = "*" ) then + sKey = control.name() + endif + + sKey = lcase( sKey ) + + if ( control.exists() = true and control.IsVisible = true ) then + + _controltext = hGetFileData( _file , sKey ) + control.settext( _controltext ) + setComboBox() = _controltext + if ( bverbose = true ) then + printlog( " * " & sKey ) + endif + + else + + warnlog( "Control <" & sKey & "> is not accessible." ) + + endif + +end function + +'******************************************************************************* + +function checkEntryField( _file as string , sKey as string , control as object , optional cBugID as string ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim controltext as string ' current state + dim _controltext as string ' reference + + if ( ismissing( cBugID ) ) then + cBugID = "WriteMe!" + endif + if ( sKey = "*" ) then + sKey = control.name() + endif + + ' lowercase the name (or alias) of the control which will be tested + sKey = lcase( sKey ) + + ' get the expected setting for the control from the reference file + _controltext = lcase( hGetFileData( _file , skey ) ) + + ' if the reference file specifies that the control should be disabled + ' the routine tries to access it - expecting to fail. In this case we write + ' a string into the EF + if ( _controltext <> "disabled" ) then + + if ( control.exists() and _ + control.IsVisible() and _ + control.IsEnabled() ) then + + controltext = lcase( control.getText() ) + keycompare( controltext , _controltext , sKey , cBugID ) + checkEntryField() = control.isEnabled() + + else + + warnlog( "Control <" & sKey & "> could not be accessed." ) + + endif + + else + + if ( control.IsEnabled() ) then + warnlog( "The control should be disabled but it is not: " & sKey ) + endif + + endif + +end function + +'******************************************************************************* + +function setEntryField( _file as string , sKey as string , control as object , optional bverbose as boolean ) as string + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + ' this is the text that will be written into the entryfield + dim _controltext as string + + if ( ismissing( bverbose ) ) then + bverbose = true + endif + if ( sKey = "*" ) then + sKey = lcase( control.name() ) + endif + + ' get the string from the reference file + _controltext = lcase( hGetFileData( _file , sKey ) ) + + if ( _controltext <> "disabled" ) then + + ' we can only access the control if it is present + visible + if ( control.exists() and _ + control.IsVisible() and _ + control.IsEnabled() ) then + + control.setText( lcase( _controltext ) ) + setEntryField() = _controltext + + if ( bverbose ) then + printlog( " * " & sKey ) + endif + + else + + warnlog( "Control <" & sKey & "> is not accessible." ) + + endif + + else + + if ( control.IsEnabled() ) then + warnlog( "The control should be disabled but it is not: " & sKey ) + endif + + endif + +end function + +'******************************************************************************* + +function checkListBox( _file as string , sKey as string , control as object ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim controltext as string ' current state + dim _controltext as string ' reference + + if ( sKey = "*" ) then + sKey = control.name() + endif + + sKey = lcase( sKey ) + + if ( control.exists() = true and control.IsVisible = true ) then + + _controltext = lcase( hGetFileData( _file , skey ) ) + controltext = control.getSelIndex() + keycompare( controltext , _controltext , sKey ) + checkListBox() = control.isEnabled() + + else + + warnlog( "Control <" & sKey & "> could not be accessed." ) + + endif + +end function + +'******************************************************************************* + +function setListBox( _file as string , sKey as string , control as object , optional bverbose as boolean ) as integer + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim _controltext as string ' reference + + ' if name of the control is '*' get the name from the control itself + if ( ismissing( bverbose ) ) then + bverbose = true + endif + if ( sKey = "*" ) then + sKey = control.name() + endif + + ' change the key to lowercase + sKey = lcase( sKey ) + + if ( control.exists() = true and control.IsVisible = true ) then + + _controltext = hGetFileData( _file , sKey ) + control.select( val( _controltext ) ) + setListBox() = control.getselindex() + if ( bverbose = true ) then + printlog( " * " & sKey ) + endif + + else + + warnlog( "Control <" & sKey & "> is not accessible." ) + + endif + +end function + +'******************************************************************************* + +function checkListItem( _file as string , _iIndex as integer , sKey as string , control as object ) as boolean + + '///<h3>EXPERIMENTAL: Get/Set function for some control types</h3> + '///<i>This is a function that allows to change the state/content of a + '///+ control via a configuration file. This function is experimental + '///+ and should not be used.<br> + + dim controltext as string ' current state + dim _controltext as string ' reference + + sKey = lcase( sKey ) + + + if ( control.exists() = true and control.IsVisible() = true ) then + + control.select( _iIndex ) + controltext = control.getSelText() + _controltext = hGetFileData( _file , skey ) + + + keycompare( controltext , _controltext , sKey ) + + checkListItem() = control.isEnabled() + + else + + printlog( "Control <" & sKey & "> could not be found." ) + + endif + + +end function + +'******************************************************************************* + +function hSetControlValue( oObject as object, cValue as string ) as integer + + '///<h3>Enter some text into a EntryField/TextField</h3> + '///<i>This extends .setText() to provide a returnvalue</i><br> + '///<i>The function runs silent as long as no errors occur</i><br> + '///<u>Input</u>: + '///<ol> + '///+<li>Control Object (Object)</li> + '///<ul> + '///+<li>The object must exist</li> + '///+<li>The object must be enabled</li> + '///+<li>The object must be visible</li> + '///</ul> + '///+<li>String (string)</li> + '///<ul> + '///+<li>Any string, including empty strings (=delete)</li> + '///</ul> + '///</ol> + '///<u>Returns</u>: + '///<ol> + '///+<li>Status of the control (integer)</li> + '///<ul> + '///+<li>0 = EntryField was updated correctly</li> + '///+<li>1 = Object does not exist</li> + '///+<li>2 = Object it not visible</li> + '///+<li>3 = Object is disabled</li> + '///</ul> + '///</ol> + '///<u>Description</u>: + '///<ul> + dim irc as integer + const CFN = "hSetControlValue::" + + '///+<li>Verify that the control exists</li> + if ( oObject.exists() ) then + + '///+<li>Verify that the object is visible</li> + if ( oObject.isVisible() ) then + + '///+<li>Verify that the control is enabled</li> + if ( oObject.isEnabled() ) then + oObject.setText( cValue ) + irc = 0 + else + irc = 3 ' control disabled + printlog( CFN & "Control is disabled: ID: " & oObject ) + endif + else + irc = 2 ' control not visible + printlog( CFN & "Control is not visible: ID: " & oObject ) + endif + else + irc = 1 ' control does not exist + printlog( CFN & "Control does not exist: ID: " & oObject ) + endif + + hSetControlValue() = irc + '///</ul> + +end function + + |