Files
libreoffice/testautomation/xml/optional/includes/f_xml_save_ms_ole.inc
Oliver Bolte 0ff309aa90 CWS-TOOLING: integrate CWS hde01
2009-02-03 12:12:56 +0100 tbo  r267312 : #95523#
2009-02-03 11:48:18 +0100 hde  r267309 : #i98775#
2009-02-03 10:09:02 +0100 wg  r267299 : i98572
2009-02-03 10:07:30 +0100 hde  r267298 : #i98775#
2009-02-02 13:15:48 +0100 hde  r267263 : #i96583#
2009-01-30 18:42:04 +0100 hde  r267223 : #i96583#
2009-01-30 15:40:21 +0100 hde  r267203 : #i98567#
2009-01-30 15:36:37 +0100 hde  r267202 : #i96582#
2009-01-30 15:35:52 +0100 hde  r267201 : #i96931#
2009-01-30 09:48:13 +0100 hde  r267179 : i98638
2009-01-30 09:42:39 +0100 hde  r267178 : i98638
2009-01-30 09:39:20 +0100 hde  r267177 : i98638
2009-01-30 09:36:07 +0100 hde  r267176 : i98638
2009-01-30 09:22:36 +0100 hde  r267174 : i98638
2009-01-29 15:16:09 +0100 wg  r267147 : i98606
2009-01-29 15:02:00 +0100 wg  r267145 : i98606
2009-01-29 15:01:01 +0100 wg  r267144 : i98606
2009-01-29 14:57:40 +0100 wg  r267141 : i98606
2009-01-29 14:20:52 +0100 wg  r267136 : i98606
2009-02-16 09:40:40 +00:00

258 lines
12 KiB
C++
Executable File

'encoding UTF-8 Do not remove or change this line!
'**************************************************************************
'* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
'*
'* Copyright 2008 by Sun Microsystems, Inc.
'*
'* OpenOffice.org - a multi-platform office productivity suite
'*
'* $RCSfile: f_xml_save_ms_ole.inc,v $
'*
'* $Revision: 1.2 $
'*
'* last change: $Author: rt $ $Date: 2008-07-11 07:31:08 $
'*
'* 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 : oliver.craemer@sun.com
'*
'* short description : Conversion of Microsoft OLE objects in dependency of settings in Tools::Options::Load/Save::MS_Office
'*
'************************************************************************
'*
' #1 ms_ole ' Initial routine
' #1 tXML_OLE_Conversion
' #1 subSetConversionMicrosoftOLE
'*
'\************************************************************************
testcase tXML_OLE_Conversion ( sCurrentTestDocument as STRING )
dim iIndex as INTEGER
dim sInputFile as STRING
sInputFile = convertpath ( gTesttoolpath & "xml/optional/input/framework/ms_ole/" & sCurrentTestDocument )
dim sSplitCurrentTestDocument() as STRING
sSplitCurrentTestDocument() = split ( sCurrentTestDocument , "." )
dim sCurrentFileName as STRING
sCurrentFileName = sSplitCurrentTestDocument ( 0 )
dim sCurrentExtension as STRING
sCurrentExtension = sSplitCurrentTestDocument ( 1 )
dim sCurrentOLE as STRING
sCurrentOLE = left ( sCurrentTestDocument , 3 )
dim sExtNames( 5 ) AS String
dim sCurrentExtensionOasis as STRING
select case sCurrentExtension
case ( "doc" ) : sExtNames() = hGetFilternameExtension ( "writer8" )
case ( "xls" ) : sExtNames() = hGetFilternameExtension ( "calc8" )
case ( "ppt" ) : sExtNames() = hGetFilternameExtension ( "impress8" )
end select
sCurrentExtensionOasis = " (." & sExtNames(0) & ")"
dim sCurrentFilter as STRING
select case sCurrentExtension
case ( "doc" ) : sCurrentFilter = "writer8"
case ( "xls" ) : sCurrentFilter = "calc8"
case ( "ppt" ) : sCurrentFilter = "impress8"
end select
dim sConversionSettings as STRING
dim sStorageName as STRING
sStorageName = ( gOfficePath & ConvertPath("user\work\xml_") & sCurrentFileName )
dim sOutputFile as STRING
dim sUnpackedStorageDir as STRING
dim sContentXML as STRING
dim sContentXMLObject as STRING
dim bContentXMLObjectExists as BOOLEAN
dim sRelativePathToObject as STRING
for iIndex = 1 to 4
printlog "Set desired conversion options in Tools::Options::Load/Save::MS Office"
select case iIndex
case 1 : sConversionSettings = "RESET"
case 2 : sConversionSettings = "SAVE"
case 3 : sConversionSettings = "LOAD"
case 4 : sConversionSettings = "ALL"
end select
call subSetConversionMicrosoftOLE ( sConversionSettings )
sleep(2)
sOutputFile = sStorageName & "_" & sConversionSettings & "." & sExtNames(0)
sUnpackedStorageDir = sOutputFile & "_unpacked"
'Erase storage dirctory if exists
if (dir ( sUnpackedStorageDir ) <> "" ) then
rmDir ( sUnpackedStorageDir )
if (dir ( sUnpackedStorageDir ) <> "" ) then
warnlog "Removing directory failed. Exiting test."
goto endsub
endif
endif
sContentXML = sUnpackedStorageDir & ConvertPath( "\content.xml" )
printlog "Open test document (MS format)"
call hFileOpen(sInputFile)
printlog Chr(13) & "Loading: " & sInputFile
sleep(2)
printlog "Save document in OpenDocument format"
if hFileSaveAsWithFilterKill ( sOutputFile , sCurrentFilter ) = FALSE then
warnlog "Saving the testdocument failed!"
endif
sleep(2)
printlog "Close document"
call hCloseDocument
sleep(2)
printlog "Unpack storage to obtain the XML files"
try
UnpackStorage( sOutputFile , sUnpackedStorageDir )
catch
qaErrorLog "#i52632# - Unpacking XML storage failed -> we quit this iteration"
goto skipThisIteration 'Quit only current Iteration (not testcase) on error
endcatch
printlog "Read DOM of content.xml"
SAXReadFile( sContentXML )
sleep(2)
printlog "Set the DOM pointer on element 'office:body'"
SAXSeekElement( "/" )
SAXSeekElement( "office:document-content" )
SAXSeekElement( "office:body" )
printlog "Use recursion to find XML element 'draw:object-ole' or'draw:object'"
select case sConversionSettings
case "RESET" , "SAVE"
if hXMLSeekElementInTree ( "draw:object-ole" ) = FALSE then
warnlog "Not finding the node 'draw:object-ole' is unexpected -> Check this out!"
SAXRelease
goto skipThisIteration 'Quit only current Iteration (not testcase) on error
endif
case "LOAD" , "ALL"
if hXMLSeekElementInTree ( "draw:object" ) = FALSE then
warnlog "Not finding the node 'draw:object' is unexpected -> Check this out!"
SAXRelease
goto skipThisIteration 'Quit only current Iteration (not testcase) on error
endif
end select
sRelativePathToObject = SAXGetAttributeValue( "xlink:href" )
sRelativePathToObject = Right ( sRelativePathToObject , Len ( sRelativePathToObject ) - 1 )
sContentXMLObject = sUnpackedStorageDir & ConvertPath ( sRelativePathToObject & "\content.xml" )
printlog "Check existence of objects 'content.xml' in dependency of settings in Tools::Options::Load/Save::MS_Office"
printlog "Lookup if objects 'content.xml' exists - TRUE for OASIS OLE, FALSE for MS OLE"
if (dir ( sContentXMLObject ) <> "" ) then
bContentXMLObjectExists = TRUE
else
bContentXMLObjectExists = FALSE
endif
printlog "Verify result against expectations for existence of objects 'content.xml'"
select case sConversionSettings
case "RESET" , "SAVE"
if bContentXMLObjectExists then
warnlog "+ OOPS, 'content.xml' shouldn't exist in MS OLE directory -> Check this out!"
endif
case "LOAD" , "ALL"
if bContentXMLObjectExists = FALSE then
warnlog "+ OOPS, 'content.xml' must exist in OASIS OLE directory -> Check this out!"
endif
end select
printlog "Release documents DOM"
SAXRelease
if bContentXMLObjectExists then
printlog "Read the OLE object DOM."
SAXReadFile( sContentXMLObject )
sleep(2)
printlog "Check if expected OLE object was found in 'content.xml'"
SAXSeekElement( "/" )
select case sCurrentOLE
case "mat"
SAXSeekElement( 1 )
if SAXGetElementName() <> "math:math" then
warnlog "A Math object was expected here -> Check this out!"
endif
case else
SAXSeekElement( "office:document-content" )
SAXSeekElement( "office:body" )
SAXSeekElement( 1 )
select case sCurrentOLE
case "exc"
if SAXGetElementName() <> "office:spreadsheet" then
warnlog "+ OOPS, this OLE seems to be no spreadsheet -> Check this out!"
endif
case "ppt"
if SAXGetElementName() <> "office:presentation" then
warnlog "+ OOPS, this OLE seems to be no presentation -> Check this out!"
endif
case "wor"
if SAXGetElementName() <> "office:text" then
warnlog "+ OOPS, this OLE seems to be no text -> Check this out!"
endif
end select
end select
SAXRelease
endif
skipThisIteration:
next iIndex
endcase
'
'-----------------------------------------------------------------------------
'
sub subSetConversionMicrosoftOLE ( OPTIONAL sConversionType as STRING )
'Routine to adjust the behaviour of Tools::Options::Load/Save::Microsoft Office
'Possible Keys for 'sConversionType' are:
'RESET (or omitted): Uncheck all boxes (default in a freshly installed OOo))
'ALL: Check all boxes
'LOAD: Check all boxes for loading MS OLE objects (left side), uncheck all boxes for saving
'SAVE: Check all boxes for saving MS OLE objects (right side), uncheck all boxes for loading
'For other values the subroutine will exit
if IsMissing ( sConversionType ) then
sConversionType = "RESET"
end if
dim iPosInAuswahl as INTEGER
dim iExtraToggle as INTEGER
'Determine value of 'iExtraToggle' for known keys
select case sConversionType
case "RESET" : iExtraToggle = 1
case "ALL" : iExtraToggle = 2
case "LOAD" : iExtraToggle = 3
case "SAVE" : iExtraToggle = 4
case else
warnlog "Unknown keyword for paramter -> Exit the subroutine"
qaErrorLog "Valid keywords are RESET, ALL, LOAD and SAVE!"
exit sub
end select
printlog "Invoke Tools::Options"
ToolsOptions
printlog "Go to tabpage Load/Save::Microsoft Office"
call hToolsOptions ( "LOADSAVE" , "MICROSOFTOFFICE" )
printlog "Go to top entry in listbox"
Auswahl.TypeKeys( "<PageUp>" )
printlog "Toggle (in a tricky way) to a defined state of checkboxes"
for iPosInAuswahl = 1 to 4
Auswahl.TypeKeys ( "<RIGHT>" , 2 )
while NOT Auswahl.IsChecked
Auswahl.TypeKeys ( "<Space>" )
wend
while Auswahl.IsChecked
Auswahl.TypeKeys ( "<Space>" )
wend
printlog "Toggle to desired state of boxes"
Auswahl.TypeKeys ( "<Space>" , iExtraToggle )
printlog "Go one entry down in list box"
Auswahl.TypeKeys ( "<Down>" )
printlog "Loop for all lines"
next iPosInAuswahl
printlog "Quit dialog"
Kontext "OptionenDLG"
OptionenDLG.Ok
end sub