diff options
author | Kurt Zenker <kz@openoffice.org> | 2010-05-21 16:13:20 +0200 |
---|---|---|
committer | Kurt Zenker <kz@openoffice.org> | 2010-05-21 16:13:20 +0200 |
commit | ec0dd9d149283c8dac8352c214843e1a34efc60d (patch) | |
tree | df720e3a11b03f6a6f09688be606ee45b90dda1a | |
parent | 9018d3dbb6c5d45093b15eebccb163ef15b7f954 (diff) | |
parent | c97d52ec74f2129b7c6cb3e1506fbebe02c27e30 (diff) |
CWS-TOOLING: integrate CWS npower13_objectmodules
12 files changed, 554 insertions, 73 deletions
diff --git a/testautomation/framework/optional/f_basic_vba-compat.bas b/testautomation/framework/optional/f_basic_vba-compat.bas index 3a6d41d3e0af..80b48eb5c1e6 100755 --- a/testautomation/framework/optional/f_basic_vba-compat.bas +++ b/testautomation/framework/optional/f_basic_vba-compat.bas @@ -36,13 +36,17 @@ sub main use "framework\optional\includes\basic_vba-compat_import_nothing.inc" use "framework\optional\includes\basic_vba-compat_import_disabled.inc" use "framework\optional\includes\basic_vba-compat_import_enabled.inc" - use "framework\optional\includes\basic_vba-compat_security_check.inc" - + use "framework\optional\includes\basic_vba-compat_thisworkbook.inc" + use "framework\optional\includes\basic_vba-compat_application-union.inc" + use "framework\optional\includes\basic_vba-compat_xlsm-xlsb.inc" + call hStatusIn( "framework" , "f_basic_vba-compat.bas" ) call tBasicVBACompatImportNothing() call tBasicVBACompatImportDisabled() call tBasicVBACompatImportEnabled() - call tBasicVBACompatSecurityCheck() + call tBasicVBACompatThisWorkBook() + call tBasicVBACompatApplicationUnion() + call tBasicVBACompatXLSM_XLSB() call hStatusOut() end sub @@ -56,6 +60,7 @@ sub LoadIncludeFiles use "global\tools\includes\optional\t_basic_organizer_tools.inc" use "global\tools\includes\optional\t_treelist_tools.inc" + use "global\tools\includes\optional\t_stringtools.inc" use "global\tools\includes\optional\t_security_tools.inc" use "global\tools\includes\optional\t_macro_tools.inc" use "global\tools\includes\optional\t_docfuncs.inc" diff --git a/testautomation/framework/optional/includes/basic_vba-compat_application-union.inc b/testautomation/framework/optional/includes/basic_vba-compat_application-union.inc new file mode 100755 index 000000000000..222b99215f81 --- /dev/null +++ b/testautomation/framework/optional/includes/basic_vba-compat_application-union.inc @@ -0,0 +1,132 @@ +'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 : Test VBA compatibility switches +'* +'\****************************************************************************** + +testcase tBasicVBACompatApplicationUnion() + + printlog( "Functionality of Application.Union" ) + ' Based on issue #i110724 + + const IMPORT_EXCEL_MACROS = TRUE + const EXEC_EXCEL_MACROS = TRUE + const DOCUMENT_NAME = "vba-application-union.xls" + const LIBRARY_NAME = "Standard" + const MODULE_NAME = "Module1" + const EXPECTED_MACRO_COUNT = 6 + const MAX_WAIT = 2 + const RC_FAILURE = -1 + + dim macro_identifier( EXPECTED_MACRO_COUNT ) + macro_identifier( 1 ) = "1: True" + macro_identifier( 2 ) = "2: True" + macro_identifier( 3 ) = "3: True" + macro_identifier( 4 ) = "4: True" + macro_identifier( 5 ) = "5: True" + macro_identifier( 6 ) = "6: True" + + dim cTestFile as string + cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & DOCUMENT_NAME + + dim iMacroPosition as integer + dim iCurrentMacro as integer + dim iRepeat as integer + + printlog( "Set macro security to low" ) + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) + + printlog( "Open Tools/Options" ) + hSetExcelBasicImportMode( IMPORT_EXCEL_MACROS, EXEC_EXCEL_MACROS ) + + printlog( "Load the test file" ) + hFileOpen( cTestFile ) + + ToolsMacro_uno + + kontext "Makro" + if ( Makro.exists( MAX_WAIT ) ) then + + iMacroPosition = hSelectNodeByName( MakroAus, DOCUMENT_NAME ) + hExpandNode( MakroAus, iMacroPosition ) + + printlog( "Move to node <" & LIBRARY_NAME & ">" ) + iMacroPosition = hSelectNextNode( MakroAus ) + if ( not hVerifyNodeName( MakroAus, LIBRARY_NAME ) ) then + warnlog( "This is not the expected library" ) + endif + + printlog( "Move to node <" & MODULE_NAME & ">" ) + hSelectNextNode( MakroAus ) + if ( not hVerifyNodeName( MakroAus, MODULE_NAME ) ) then + warnlog( "This is not the expected module" ) + endif + + printlog( "Click <Ausfuehren> to execute the macro" ) + if ( hClickButton( Ausfuehren ) <> RC_FAILURE ) then + + printlog( "Check for the " & EXPECTED_MACRO_COUNT & " expected messageboxes" ) + for iCurrentMacro = 1 to EXPECTED_MACRO_COUNT + + printlog( "" ) + kontext "Active" + printlog( iCurrentMacro & ": Check for messagebox: " & macro_identifier( iCurrentMacro ) ) + if ( Active.exists( MAX_WAIT ) ) then + + if ( Active.getText() = macro_identifier( iCurrentMacro ) ) then + printlog( "The expected macro was executed" ) + else + warnlog( "Unexpected macro executed: " & Active.getText() ) + endif + Active.ok() + + else + warnlog( "Expected messagebox not displayed within reasonable timeframe" ) + goto endsub + endif + + next iCurrentMacro + else + warnlog( "Unable to execute macro, the <Run Macro> button is disabled" ) + kontext "Makro" + Makro.close() + endif + else + warnlog( "Failed to open BASIC organizer" ) + endif + + printlog( "Cleanup" ) + hCloseDocument() + hSetExcelImportModeDefault() + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT ) + +endcase + + diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc index f5576308a6a9..764ba407236a 100755 --- a/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc +++ b/testautomation/framework/optional/includes/basic_vba-compat_import_disabled.inc @@ -36,12 +36,23 @@ testcase tBasicVBACompatImportDisabled() printlog( "Test VBA compatibility switch / executable Microsoft(R) Excel(R) Macros" ) printlog( "Test case 2: Import macros but do not set the executable mode" ) - ' This test case is based on the use cases provided in issue #i88690 ' Spec: http://specs.openoffice.org/appwide/options_settings/Option_Dialog.odt + + const NODE_COUNT = 78 + + const DOCUMENT_POSITION_OFFSET = -7 + + const IMPORT_EXCEL_MACROS = TRUE + const EXEC_EXCEL_MACROS = FALSE + + const DOCUMENT_NAME = "vba-test.xls" + const MATCH_NONE = 0 + const MATCH_EXACT = 1 + const MATCH_PARTLY = 2 dim cTestFile as string - cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/vba-test.xls" + cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & DOCUMENT_NAME dim cNodeCount as integer @@ -57,15 +68,6 @@ testcase tBasicVBACompatImportDisabled() dim iCurrentModule as integer dim cCurrentModule as string dim bFound as boolean - - ' Depending on the mode of macro import we have differtent basic libraries listed - const NODE_COUNT_OOO = 78 ' OpenOffice.org - const NODE_COUNT = 80 ' branded product - - const DOCUMENT_POSITION_OFFSET = -7 - - const IMPORT_EXCEL_MACROS = TRUE - const EXEC_EXCEL_MACROS = FALSE printlog( "Set macro security to low" ) hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) @@ -92,9 +94,11 @@ testcase tBasicVBACompatImportDisabled() printlog( "Verify position of the document node" ) MakroAus.select( cNodeCount + DOCUMENT_POSITION_OFFSET ) - if ( MakroAus.getSelText() <> "vba-test.xls" ) then - qaerrorlog( "The document node is not at the expected position" ) - endif + select case( hCompareSubStrings( MakroAus.getSelText(), DOCUMENT_NAME ) ) + case MATCH_NONE : warnlog ( "The document is not listed at the expected position" ) + case MATCH_EXACT : printlog( "The document is at the expected position and writable" ) + case MATCH_PARTLY : printlog( "The document is at the expected position and write protected" ) + end select for iCurrentModule = 2 to 7 @@ -135,7 +139,6 @@ testcase tBasicVBACompatImportDisabled() hSetExcelImportModeDefault() hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT ) - endcase diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc index 3e6450e4c2e7..98173ee8ba48 100755 --- a/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc +++ b/testautomation/framework/optional/includes/basic_vba-compat_import_enabled.inc @@ -39,22 +39,40 @@ testcase tBasicVBACompatImportEnabled() ' This test case is based on the use cases provided in issue #i88690 ' Spec: http://specs.openoffice.org/appwide/options_settings/Option_Dialog.odt - - dim cFile as string : cFile = "vba-test.xls" + + ' Depending on the mode of macro import we have differtent basic libraries listed + const NODE_COUNT = 78 + + const DOCUMENT_POSITION_OFFSET = -7 + + const IMPORT_EXCEL_MACROS = TRUE + const EXEC_EXCEL_MACROS = TRUE + + const DOCUMENT_NAME = "vba-test.xls" + const MATCH_NONE = 0 + const MATCH_EXACT = 1 + const MATCH_PARTLY = 2 dim cTestFile as string - cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & cFile + cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & DOCUMENT_NAME dim cNodeCount as integer - ' note that index 0 and 1 are ommitted intentionally - dim caNodeData( 3 ) as string - caNodeData( 2 ) = "Modul1" - caNodeData( 3 ) = "Modul2" - - dim caScripts( 3 ) as string - caScripts( 2 ) = "ConcatFct Ende" - caScripts( 3 ) = "WriteIt" + dim caNodeData( 7 ) as string + caNodeData( 0 ) = DOCUMENT_NAME ' The document, not used + caNodeData( 1 ) = "Standard" ' The default library, not used + caNodeData( 2 ) = "DieseArbeitsmappe" + caNodeData( 3 ) = "Modul1" + caNodeData( 4 ) = "Modul2" + caNodeData( 5 ) = "Tabelle1" + caNodeData( 6 ) = "Tabelle2" + caNodeData( 7 ) = "Tabelle3" + + ' These are the scripts belonging to each node above. If multiple scripts exist + ' they are separated by spaces. Example: "Modul1" has "ConcatFct" and "Ende" scripts. + dim caScripts( 7 ) as string + caScripts( 3 ) = "ConcatFct Ende" + caScripts( 4 ) = "WriteIt" dim iCurrentModule as integer dim iCurrentScript as integer @@ -62,19 +80,10 @@ testcase tBasicVBACompatImportEnabled() dim cTempString as string dim bFound as boolean - ' Depending on the mode of macro import we have differtent basic libraries listed - const NODE_COUNT_OOO = 74 - const NODE_COUNT = 76 - - const DOCUMENT_POSITION_OFFSET = -3 - - const IMPORT_EXCEL_MACROS = TRUE - const EXEC_EXCEL_MACROS = TRUE - printlog( "Set macro security to low" ) hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) - printlog( "Open Tools/Options" ) + printlog( "Open Tools/Options and set the VBA macro execution mode" ) hSetExcelBasicImportMode( IMPORT_EXCEL_MACROS, EXEC_EXCEL_MACROS ) @@ -96,26 +105,13 @@ testcase tBasicVBACompatImportEnabled() printlog( "Verify position of the document node." ) MakroAus.select( cNodeCount + DOCUMENT_POSITION_OFFSET ) - cTempString = MakroAus.getSelText() - if ( cTempString <> cFile ) then - qaerrorlog( "The filename does not match. File may be read-only." ) - if ( instr( cTempString, cFile ) > 1 ) then - printlog( "Filename is contained in the UI string." ) - select case ( getAttr( cTestFile ) ) - case 0 : warnlog( "The file appears to be read-only but it is " & _ - "not write-protected on filesystem level." ) - case 1 : printlog( "The file is read-only on filesystem level. Ok." ) - case else - warnlog( "getAttr() returned unexpected value. 1 or 2 are allowed" ) - printlog( "RC from getAttr() is: " & getAttr( cTestFile ) ) - end select - else - qaerrorlog( "The document node is not at the expected position." ) - qaerrorlog( "Object at this position is: " & MakroAus.getSelText() ) - endif - endif + select case( hCompareSubStrings( MakroAus.getSelText(), DOCUMENT_NAME ) ) + case MATCH_NONE : warnlog ( "The document is not listed at the expected position" ) + case MATCH_EXACT : printlog( "The document is at the expected position and writable" ) + case MATCH_PARTLY : printlog( "The document is at the expected position and write protected" ) + end select - for iCurrentModule = 2 to 3 + for iCurrentModule = 2 to 7 printlog( "Look for: " & caNodeData( iCurrentModule ) ) diff --git a/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc b/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc index bab6bf1a4b1b..50c59cf88e10 100755 --- a/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc +++ b/testautomation/framework/optional/includes/basic_vba-compat_import_nothing.inc @@ -38,21 +38,24 @@ testcase tBasicVBACompatImportNothing() ' This test case is based on the use cases provided in issue #i88690 ' Spec: http://specs.openoffice.org/appwide/options_settings/Option_Dialog.odt - - dim cTestFile as string - cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/vba-test.xls" - - dim cNodeCount as integer - - ' Depending on the mode of macro import we have differtent basic libraries listed - const NODE_COUNT = 74 ' Do not import Microsoft(R) Excel(R) macros at all - const NODE_COUNT_OOO = 72 - const MACRO_LIST = 0 ' The document library should have no scripts listed +' Depending on the mode of macro import we have differtent basic libraries listed + const NODE_COUNT = 72 ' Do not import Microsoft(R) Excel(R) macros at all + const MACRO_LIST = 0 ' The document library should have no scripts listed const DOCUMENT_POSITION_OFFSET = -1 - + const IMPORT_EXCEL_MACROS = FALSE const EXEC_EXCEL_MACROS = FALSE - + + const DOCUMENT_NAME = "vba-test.xls" + const MATCH_NONE = 0 + const MATCH_EXACT = 1 + const MATCH_PARTLY = 2 + + dim cTestFile as string + cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & DOCUMENT_NAME + + dim cNodeCount as integer + printlog( "Set macro security to low" ) hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) @@ -78,9 +81,11 @@ testcase tBasicVBACompatImportNothing() printlog( "Verify position of the document node" ) MakroAus.select( cNodeCount + DOCUMENT_POSITION_OFFSET ) - if ( MakroAus.getSelText() <> "vba-test.xls" ) then - qaerrorlog( "The document node is not at the expected position" ) - endif + select case( hCompareSubStrings( MakroAus.getSelText(), DOCUMENT_NAME ) ) + case MATCH_NONE : warnlog ( "The document is not listed at the expected position" ) + case MATCH_EXACT : printlog( "The document is at the expected position and writable" ) + case MATCH_PARTLY : printlog( "The document is at the expected position and write protected" ) + end select printlog( "Select the last node, this should be the standard Library for the document" ) MakroAus.select( cNodeCount ) diff --git a/testautomation/framework/optional/includes/basic_vba-compat_thisworkbook.inc b/testautomation/framework/optional/includes/basic_vba-compat_thisworkbook.inc new file mode 100755 index 000000000000..03c52146a8fb --- /dev/null +++ b/testautomation/framework/optional/includes/basic_vba-compat_thisworkbook.inc @@ -0,0 +1,143 @@ +'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 : Test VBA compatibility switches +'* +'\****************************************************************************** + +testcase tBasicVBACompatThisWorkBook() + + printlog( "Functionality of .thisWorkbook" ) + ' Based on issue #i110672 + + const IMPORT_EXCEL_MACROS = TRUE + const EXEC_EXCEL_MACROS = TRUE + const DOCUMENT_NAME = "vba-thisworkbook.xls" + const LIBRARY_NAME = "Standard" + const MODULE_NAME = "Module1" + const EXPECTED_MACRO_COUNT = 2 + const MAX_REPEAT_COUNT = 2 + const MAX_WAIT = 2 + + dim macro_identifier( EXPECTED_MACRO_COUNT ) + macro_identifier( 1 ) = "Test 1 passed." + macro_identifier( 2 ) = "Test 2 passed." + + dim cTestFile as string + cTestFile = gTesttoolPath & "framework/optional/input/vba-compat/" & DOCUMENT_NAME + + dim iMacroPosition as integer + dim iCurrentMacro as integer + dim iRepeat as integer + + printlog( "Set macro security to low" ) + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) + + printlog( "Open Tools/Options" ) + hSetExcelBasicImportMode( IMPORT_EXCEL_MACROS, EXEC_EXCEL_MACROS ) + + printlog( "Load the test file" ) + hFileOpen( cTestFile ) + + printlog( "Execute the procedure twice to trigger issue 111553" ) + for iRepeat = 1 to MAX_REPEAT_COUNT + + ToolsMacro_uno + + kontext "Makro" + if ( Makro.exists( MAX_WAIT ) ) then + + iMacroPosition = hSelectNodeByName( MakroAus, DOCUMENT_NAME ) + hExpandNode( MakroAus, iMacroPosition ) + + printlog( "Move to node <" & LIBRARY_NAME & ">" ) + iMacroPosition = hSelectNextNode( MakroAus ) + if ( not hVerifyNodeName( MakroAus, LIBRARY_NAME ) ) then + warnlog( "This is not the expected library" ) + endif + + printlog( "Move to node <" & MODULE_NAME & ">" ) + hSelectNextNode( MakroAus ) + if ( not hVerifyNodeName( MakroAus, MODULE_NAME ) ) then + warnlog( "This is not the expected module" ) + endif + + printlog( "Click <Ausfuehren> to execute the macro" ) + iMacroPosition = hClickButton( Ausfuehren ) + + printlog( "Check for two expected messageboxes" ) + for iCurrentMacro = 1 to EXPECTED_MACRO_COUNT + + kontext "Active" + printlog( "Check for messagebox: " & macro_identifier( iCurrentMacro ) ) + if ( Active.exists( MAX_WAIT ) ) then + + if ( Active.getText() = macro_identifier( iCurrentMacro ) ) then + printlog( "Correct macro executed" ) + else + printlog( "Macro execution error, trying to identify..." ) + if ( instr( Active.getText(), "BASIC runtime error." ) > 0 ) then + if ( iRepeat = MAX_REPEAT_COUNT ) then + warnlog( "#i111533 - Cannot execute ThisWorkbook macro twice" ) + Active.ok() + hFileCloseAll() + goto endsub + else + warnlog( "Executing macro failed" ) + goto endsub + endif + else + warnlog( "Unknown messagebox. Aborting test" ) + goto endsub + endif + endif + + Active.ok() + + else + warnlog( "Expected messagebox not displayed within reasonable timeframe" ) + goto endsub + endif + + next iCurrentMacro + else + warnlog( "A macro with the name <" & MODULE_NAME & "> could not be found" ) + goto endsub + endif + + next iRepeat + + printlog( "Cleanup" ) + hCloseDocument() + hSetExcelImportModeDefault() + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT ) + +endcase + + diff --git a/testautomation/framework/optional/includes/basic_vba-compat_xlsm-xlsb.inc b/testautomation/framework/optional/includes/basic_vba-compat_xlsm-xlsb.inc new file mode 100755 index 000000000000..cfc8f06072e3 --- /dev/null +++ b/testautomation/framework/optional/includes/basic_vba-compat_xlsm-xlsb.inc @@ -0,0 +1,187 @@ +'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 : Test VBA compatibility switches +'* +'\****************************************************************************** + +testcase tBasicVBACompatXLSM_XLSB() + + printlog( "Functionality of macros in XLSM/XLSB files" ) + ' Based on issue #i111007 + + const IMPORT_EXCEL_MACROS = TRUE + const EXEC_EXCEL_MACROS = TRUE + + const FILE_COUNT = 2 + const MODULE_COUNT = 7 + + const MODULE_NOT_FOUND = 0 + const MAX_DELAY = 3 + const RC_TIMEOUT = -1 + + const THE_MODULE_THAT_BEHAVES_DIFFERENTLY = 6 + + const RELATIVE_PATH = "framework/optional/input/vba-compat/" + + ' We have two files to load, on e .xlsm and one .xlsb + dim cFileList( FILE_COUNT ) as string + cFileList( 1 ) = "vba-project.xlsm" + cFileList( 2 ) = "vba-project.xlsb" + + ' both documents import the same modules + dim cTestModuleList( MODULE_COUNT ) + cTestModuleList( 1 ) = "MyChartModule" + cTestModuleList( 2 ) = "MyCodeModule" + cTestModuleList( 3 ) = "MyPrivateClassModule" + cTestModuleList( 4 ) = "MyPublicClassModule" + cTestModuleList( 5 ) = "MySheetModule" + cTestModuleList( 6 ) = "MyUserForm" + cTestModuleList( 7 ) = "MyWorkbookModule" + + dim cTestFile as string + dim iCurrentFile as integer + dim iCurrentModule as integer + + printlog( "Set macro security to low" ) + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_LOW ) + + printlog( "Open Tools/Options" ) + hSetExcelBasicImportMode( IMPORT_EXCEL_MACROS, EXEC_EXCEL_MACROS ) + + for iCurrentFile = 1 to FILE_COUNT + + cTestFile = gTesttoolPath & RELATIVE_PATH & cFileList( iCurrentFile ) + + printlog( "Loading document: " & cTestFile ) + hFileOpen( cTestFile ) + + for iCurrentModule = 1 to MODULE_COUNT + + printlog( "" ) + printlog( "Tryng to execute macro: " & cTestModuleList( iCurrentModule ) ) + ToolsMacro_uno + + kontext "Makro" + if ( Makro.exists( MAX_DELAY ) ) then + + if ( hSelectNodeByName( MakroAus, cTestModuleList( iCurrentModule ) ) <> MODULE_NOT_FOUND ) then + + printlog( "Execute the default macro <Test> for the current module" ) + + if ( hClickButton( Ausfuehren ) <> RC_TIMEOUT ) then + if ( iCurrentModule = THE_MODULE_THAT_BEHAVES_DIFFERENTLY ) then + ' Fuzzy matching message string + hTestMacroType2( cTestModuleList( iCurrentModule ) ) + else + ' Exact matching message string + hTestMacroType1( cTestModuleList( iCurrentModule ) ) + endif + else + warnlog( "No executable macro found for the current module / <Run> button is disabled" ) + endif + else + warnlog( "the expected macro module could not be found" ) + endif + else + warnlog( "BASIC Macro organizer did not open" ) + endif + + next iCurrentModule + + printlog( "Close the document" ) + hFileCloseAll() + + next iCurrentFile + + hSetExcelImportModeDefault() + hSetMacroSecurityAPI( GC_MACRO_SECURITY_LEVEL_DEFAULT ) + +endcase + +'******************************************************************************* + +function hTestMacroType1( cMessage as string ) as boolean + + ' exact matching + + kontext "Active" + if ( Active.exists( 2 ) ) then + if ( Active.getText() = cMessage ) then + printlog( "Correct macro has been executed" ) + hTestMacroType1() = true + else + warnlog( "Incorrect macro executed: " ) + printlog( "Expected: " & cMessage ) + printlog( "Found...: " & Active.getText() ) + hTestMacroType1() = false + endif + + Active.ok() + WaitSlot() + + else + warnlog( "Messagebox missing, macro was not executed" ) + hTestMacroType1() = false + endif + +end function + +'******************************************************************************* + +function hTestMacroType2( cMessage as string ) as boolean + + ' fuzzy matching + + dim iCurrentMessage as integer + + for iCurrentMessage = 1 to 2 + + kontext "Active" + if ( Active.exists( 2 ) ) then + if ( instr( Active.getText() , cMessage ) > 0 ) then + printlog( "Correct macro has been executed" ) + hTestMacroType2() = true + else + warnlog( "Incorrect macro executed: " ) + printlog( "Expected: " & cMessage ) + printlog( "Found...: " & Active.getText() ) + hTestMacroType2() = false + endif + + Active.ok() + WaitSlot() + + else + warnlog( "Messagebox missing, macro not executed" ) + hTestMacroType2() = false + endif + next iCurrentMessage + +end function
\ No newline at end of file diff --git a/testautomation/framework/optional/input/vba-compat/vba-application-union.xls b/testautomation/framework/optional/input/vba-compat/vba-application-union.xls Binary files differnew file mode 100755 index 000000000000..b1f1be816b7b --- /dev/null +++ b/testautomation/framework/optional/input/vba-compat/vba-application-union.xls diff --git a/testautomation/framework/optional/input/vba-compat/vba-project.xlsb b/testautomation/framework/optional/input/vba-compat/vba-project.xlsb Binary files differnew file mode 100755 index 000000000000..9fd88a8e545c --- /dev/null +++ b/testautomation/framework/optional/input/vba-compat/vba-project.xlsb diff --git a/testautomation/framework/optional/input/vba-compat/vba-project.xlsm b/testautomation/framework/optional/input/vba-compat/vba-project.xlsm Binary files differnew file mode 100755 index 000000000000..6a8896e18599 --- /dev/null +++ b/testautomation/framework/optional/input/vba-compat/vba-project.xlsm diff --git a/testautomation/framework/optional/input/vba-compat/vba-thisworkbook.xls b/testautomation/framework/optional/input/vba-compat/vba-thisworkbook.xls Binary files differnew file mode 100644 index 000000000000..f275fd9cca0e --- /dev/null +++ b/testautomation/framework/optional/input/vba-compat/vba-thisworkbook.xls diff --git a/testautomation/global/tools/includes/optional/t_treelist_tools.inc b/testautomation/global/tools/includes/optional/t_treelist_tools.inc index b459b2c0f4a0..36cfe7370901 100644..100755 --- a/testautomation/global/tools/includes/optional/t_treelist_tools.inc +++ b/testautomation/global/tools/includes/optional/t_treelist_tools.inc @@ -356,6 +356,16 @@ function hSelectNodeByName( oControl as object , _name as string ) as integer iThisNode = iCurrentNode exit for endif + + if ( instr( cNodeName, _name ) > 0 ) then + if ( instr( cNodeName, "(" ) > 0 ) then + printlog( CFN & "Node has readonly marker" ) + iThisNode = iCurrentNode + exit for + else + qaerrorlog( CFN & "Fuzzy match. This might or might not be the correct node" ) + endif + endif next iCurrentNode endcatch |