diff options
27 files changed, 721 insertions, 709 deletions
diff --git a/qadevOOo/prj/build.lst b/qadevOOo/prj/build.lst index e159c6a7b6cc..50d60a563c64 100644 --- a/qadevOOo/prj/build.lst +++ b/qadevOOo/prj/build.lst @@ -4,4 +4,3 @@ qa qadevOOo nmake - all qa_runner_ant_build NULL qa qadevOOo\runner nmake - all qa_make_package qa_runner_ant_build NULL qa qadevOOo\qa\unoapi nmake - all qa_qa_unoapi qa_make_package NULL -qa qadevOOo\qa\complex\junitskeleton nmake - all qa_complex_junitskel qa_make_package NULL diff --git a/qadevOOo/runner/graphical/OpenOfficeDatabaseReportExtractor.java b/qadevOOo/runner/graphical/OpenOfficeDatabaseReportExtractor.java index a0592d5ce143..c42a437028fc 100644 --- a/qadevOOo/runner/graphical/OpenOfficeDatabaseReportExtractor.java +++ b/qadevOOo/runner/graphical/OpenOfficeDatabaseReportExtractor.java @@ -373,13 +373,20 @@ public class OpenOfficeDatabaseReportExtractor extends Assurance { String sReportName = sElementNames[i]; XComponent xDoc = loadComponent(sReportName, _xNameAccess, _aPropertyList); -// util.utils.shortWait(1000); - // print? or store? - String sDocumentPathName = storeComponent(sReportName, xDoc /*, _nType*/); - aList.add(sDocumentPathName); -// util.utils.shortWait(1000); - closeComponent(xDoc); -// util.utils.shortWait(1000); + if (xDoc != null) + { + // util.utils.shortWait(1000); + // print? or store? + String sDocumentPathName = storeComponent(sReportName, xDoc /*, _nType*/); + aList.add(sDocumentPathName); + // util.utils.shortWait(1000); + closeComponent(xDoc); + // util.utils.shortWait(1000); + } + else + { + System.out.println("Leave out maybe due to errors."); + } // sBackPath contains the path where to find the extracted ODB Document } } diff --git a/qadevOOo/runner/org/openoffice/Runner.java b/qadevOOo/runner/org/openoffice/Runner.java index f6397deb3e2b..ca995bc9b4f4 100644 --- a/qadevOOo/runner/org/openoffice/Runner.java +++ b/qadevOOo/runner/org/openoffice/Runner.java @@ -184,7 +184,7 @@ public class Runner public static boolean run(String... args) { - System.out.println("OOoRunner Main() version from 20100922 (yyyymmdd)"); + System.out.println("OOoRunner Main() version from 20101118 (yyyymmdd)"); setStartTime(getTime()); diff --git a/testautomation/extensions/optional/includes/online_update.inc b/testautomation/extensions/optional/includes/online_update.inc index 24739132beaa..ce3da2df0622 100644 --- a/testautomation/extensions/optional/includes/online_update.inc +++ b/testautomation/extensions/optional/includes/online_update.inc @@ -82,7 +82,7 @@ testcase tExtensionUpdate kontext "ExtensionUpdate" if ( ExtensionUpdate.exists() ) then printlog( "Close update-dialog. Good." ) - ExtensionUpdate.cancel() + ExtensionUpdate.close() else warnlog( "Extension update dialog is missing" ) endif diff --git a/testautomation/extensions/optional/includes/publisher.inc b/testautomation/extensions/optional/includes/publisher.inc index 739b28edaef8..4fec6ab1bab2 100644 --- a/testautomation/extensions/optional/includes/publisher.inc +++ b/testautomation/extensions/optional/includes/publisher.inc @@ -155,7 +155,7 @@ testcase tExtensionPublisher warnlog( "Update list for extensions is stalled (expected: 7), " & _ "found: " & AvailableUpdatesList.getItemCount() ) kontext "ExtensionUpdate" - ExtensionUpdate.cancel() + ExtensionUpdate.close() ExtensionUpdate.notExists( 2 ) kontext "PackageManager" PackageManager.cancel() @@ -258,7 +258,7 @@ testcase tExtensionPublisher endif kontext "ExtensionUpdate" - ExtensionUpdate.cancel() + ExtensionUpdate.close() ExtensionUpdate.notExists( 2 ) else warnlog( "Extension Update dialog is not open" ) diff --git a/testautomation/extensions/required/includes/e_update.inc b/testautomation/extensions/required/includes/e_update.inc index e563b5ae3a45..22fe13395413 100644 --- a/testautomation/extensions/required/includes/e_update.inc +++ b/testautomation/extensions/required/includes/e_update.inc @@ -44,7 +44,7 @@ testcase tExtensionManagerResources() dim iFilterItems as integer const MAX_ITERATIONS = 50 - const FILTER_ITEMS = 9 ' This is the number of filters/extension types we know + const FILTER_ITEMS = 10 ' This is the number of filters/extension types we know printlog( "Ressource test for the Extension Manager UI" ) ToolsPackageManager @@ -76,6 +76,16 @@ testcase tExtensionManagerResources() warnlog( "The file type filter list is incorrect" ) printlog( "Expected: " & FILTER_ITEMS ) printlog( "Found...: " & iFilterItems ) + '0: All files (*.*) + '1: Configuration Data + '2: Configuration Schema + '3: Extension + '4: UNO Components + '5: UNO Dynamic Library Component + '6: UNO Java Component + '7: UNO Java Type Library + '8: UNO Python Component + '9: UNO RDB Type Library else printlog( "The number of filters in Add Extensions Dialog is ok" ) endif @@ -91,7 +101,7 @@ testcase tExtensionManagerResources() kontext "ExtensionUpdate" if ( ExtensionUpdate.exists( 2 ) ) then call dialogtest( ExtensionUpdate ) - ExtensionUpdate.cancel() + ExtensionUpdate.close() ExtensionUpdate.notExists( 3 ) else warnlog( "Extenson Update dialog did not open" ) diff --git a/testautomation/framework/optional/includes/f_usage_tracking.inc b/testautomation/framework/optional/includes/f_usage_tracking.inc index ef20c2a2f1e5..c52ae61c0945 100644 --- a/testautomation/framework/optional/includes/f_usage_tracking.inc +++ b/testautomation/framework/optional/includes/f_usage_tracking.inc @@ -100,7 +100,7 @@ testcase tUsageTracking3 kontext "Active" if ( Active.exists( 2 ) ) then - qaerrorlog( "Messagebox not required as control should not be enabled (see #i97340#)" ) + warnlog( "Messagebox not required as control should not be enabled (see #i97340#)" ) Active.ok() kontext "TextImport" diff --git a/testautomation/global/required/includes/g_option.inc b/testautomation/global/required/includes/g_option.inc index 2f7b6aa33ac2..0c40d3c3d08e 100644 --- a/testautomation/global/required/includes/g_option.inc +++ b/testautomation/global/required/includes/g_option.inc @@ -756,7 +756,7 @@ testcase tToolsOptionsImprovementProgram Active.ok() else if ( NOT bImportDialogHasBeenDisplayed ) then - qaerrorlog( "#i97340# Show Data button enabled but no logged data found" ) + warnlog( "#i97340# Show Data button enabled but no logged data found" ) endif endif @@ -767,8 +767,13 @@ testcase tToolsOptionsImprovementProgram endif Kontext "OptionenDlg" - OptionenDlg.cancel() - + if OptionenDlg.Exists then + OptionenDlg.cancel() + endif + + if GetDocumentCount = 1 then + Call hCloseDocument + endif else ' hDeleteFile() returns FALSE if the file is still present for some weird reason ' We should warn about this because the test breaks at a later point then. diff --git a/testautomation/global/win/edia_p_s.win b/testautomation/global/win/edia_p_s.win index da1f30a7f696..7cd8e58ed94e 100755 --- a/testautomation/global/win/edia_p_s.win +++ b/testautomation/global/win/edia_p_s.win @@ -114,91 +114,91 @@ Currency sym:WIZARDS_HID_DLGDEPOT_LSTMARKETS OKButton sym:WIZARDS_HID_DLGDEPOT_0_CMDGOON_HISTORY CancelButton sym:WIZARDS_HID_DLGDEPOT_0_CMDCANCEL_HISTORY -*Printing .HelpId:vcl:PrintDialog:Dialog -PreviewWindow .HelpId:vcl:PrintDialog:Preview -PreviewPageNumber .HelpId:vcl:PrintDialog:PageEdit -ScrollBackward .HelpId:vcl:PrintDialog:BackwardBtn -ScrollForward .HelpId:vcl:PrintDialog:ForwardBtn -Print .HelpId:vcl:PrintDialog:OK -Cancel .HelpId:vcl:PrintDialog:Cancel +*Printing .HelpID:vcl:PrintDialog:Dialog +PreviewWindow .HelpID:vcl:PrintDialog:Preview +PreviewPageNumber .HelpID:vcl:PrintDialog:PageEdit +ScrollBackward .HelpID:vcl:PrintDialog:BackwardBtn +ScrollForward .HelpID:vcl:PrintDialog:ForwardBtn +Print .HelpID:vcl:PrintDialog:OK +Cancel .HelpID:vcl:PrintDialog:Cancel -PrintingTabControl .HelpId:vcl:PrintDialog:TabPages -TabPrintGeneral .HelpId:vcl:PrintDialog:JobPage -TabApplication .HelpId:vcl:PrintDialog:TabPage:10 -TabLayout .HelpId:vcl:PrintDialog:NUpPage -TabOptions .HelpId:vcl:PrintDialog:OptPage - -*TabPrintGeneral .HelpId:vcl:PrintDialog:JobPage -PrinterList .HelpId:vcl:PrintDialog:JobPage:PrinterList -NumberOfCopies .HelpId:vcl:PrintDialog:JobPage:Copies -Collate .HelpId:vcl:PrintDialog:JobPage:Collate -PrintNotes .HelpId:vcl:PrintDialog:PrintAnnotationMode:ListBox -AllPages .HelpId:vcl:PrintDialog:PrintContent:RadioButton:0 -AllSlides .HelpId:vcl:PrintDialog:PrintContent:RadioButton:0 -AllSheets .HelpId:vcl:PrintDialog:PrintContent:RadioButton:0 -Pages .HelpId:vcl:PrintDialog:PrintContent:RadioButton:1 -Slides .HelpId:vcl:PrintDialog:PrintContent:RadioButton:1 -SelectedSheets .HelpId:vcl:PrintDialog:PrintContent:RadioButton:1 -PrintAllPages .HelpId:vcl:PrintDialog:PrintRange:RadioButton:0 -PrintPages .HelpId:vcl:PrintDialog:PrintRange:RadioButton:1 -PageRange .HelpId:vcl:PrintDialog:PageRange:Edit -Selection .HelpId:vcl:PrintDialog:PrintContent:RadioButton:2 -SelectedCells .HelpId:vcl:PrintDialog:PrintContent:RadioButton:2 -Details .HelpId:vcl:PrintDialog:JobPage:DetailsBtn -Properties .HelpId:vcl:PrintDialog:JobPage:Properties -PageCount .HelpId:vcl:PrintDialog:NumPagesText -PartsToPrint .HelpId:vcl:PrintDialog:PageContentType:ListBox -SlidesPerPage .HelpId:vcl:PrintDialog:SlidesPerPage:ListBox -ArrangeSlides .HelpId:vcl:PrintDialog:SlidesPerPageOrder:ListBox - -*TabApplication .HelpId:vcl:PrintDialog:TabPage:10 -PrintPageBackground .HelpId:vcl:PrintDialog:PrintPageBackground:CheckBox -PrintGraphicsAndDiagrams .HelpId:vcl:PrintDialog:PrintTablesGraphicsAndDiagrams:CheckBox -PrintPicturesAndObjects .HelpId:vcl:PrintDialog:PrintPicturesAndObjects:CheckBox -PrintHiddenText .HelpId:vcl:PrintDialog:PrintHiddenText:CheckBox -PrintTextPlaceholder .HelpId:vcl:PrintDialog:PrintTextPlaceholder:CheckBox -PrintFormControls .HelpId:vcl:PrintDialog:PrintControls:CheckBox -PrintTextInBlack .HelpId:vcl:PrintDialog:PrintBlackFonts:CheckBox -PrintBlankPages .HelpId:vcl:PrintDialog:PrintEmptyPages:CheckBox -IncludeEmptyPages .HelpId:vcl:PrintDialog:IsIncludeEmptyPages:CheckBox -SlideName .HelpId:vcl:PrintDialog:IsPrintName:CheckBox -DateAndTime .HelpId:vcl:PrintDialog:IsPrintDateTime:CheckBox -HiddenPages .HelpId:vcl:PrintDialog:IsPrintHidden:CheckBox -TilePaper .HelpId:vcl:PrintDialog:PageOptions:RadioButton:3 -OriginalColors .HelpId:vcl:PrintDialog:Quality:RadioButton:0 -Grayscale .HelpId:vcl:PrintDialog:Quality:RadioButton:1 -BlackAndWhite .HelpId:vcl:PrintDialog:Quality:RadioButton:2 -MultiplePages .HelpId:vcl:PrintDialog:PageOptions:RadioButton:2 -TitleRow .HelpId:vcl:PrintDialog:TitleRow:CheckBox -FormulaText .HelpId:vcl:PrintDialog:FormulaText:CheckBox -Borders .HelpId:vcl:PrintDialog:Border:CheckBox -OriginalSize .HelpId:vcl:PrintDialog:PageOptions:RadioButton:0 -OriginalSizeMath .HelpId:vcl:PrintDialog:PrintFormat:RadioButton:0 -FitToPage .HelpId:vcl:PrintDialog:PageOptions:RadioButton:1 -FitToPageMath .HelpId:vcl:PrintDialog:PrintFormat:RadioButton:1 -Scaling .HelpId:vcl:PrintDialog:PrintFormat:RadioButton:2 -ScalingFactor .HelpId:vcl:PrintDialog:PrintScale:NumericField - -*TabLayout .HelpId:vcl:PrintDialog:NUpPage -PagesPerSheet .HelpId:vcl:PrintDialog:NUpPage:PagesPerSheet -NumberOfPages .HelpId:vcl:PrintDialog:NUpPage:PagesPerSheetBox -NumberOfColumns .HelpId:vcl:PrintDialog:NUpPage:ColumnsBox -NumberOfRows .HelpId:vcl:PrintDialog:NUpPage:RowsBox -BorderAroundPages .HelpId:vcl:PrintDialog:NUpPage:BorderBox -Brochure .HelpId:vcl:PrintDialog:NUpPage:Brochure -DistanceBetweenPages .HelpId:vcl:PrintDialog:NUpPage:PageMarginBox -MarginToSheetBorder .HelpId:vcl:PrintDialog:NUpPage:SheetMarginBox -PaperOrientation .HelpId:vcl:PrintDialog:NUpPage:OrientationBox -PrintOrder .HelpId:vcl:PrintDialog:NUpPage:OrderBox -IncludePages .HelpId:vcl:PrintDialog:PrintLeftRightPages:ListBox -PrintBrochureRTL .HelpId:vcl:PrintDialog:PrintProspectRTL:ListBox -BrochurePageSides .HelpId:vcl:PrintDialog:PrintProspectInclude:ListBox - -*TabOptions .HelpId:vcl:PrintDialog:OptPage -PrintToFile .HelpId:vcl:PrintDialog:OptPage:ToFile -PrintAsSingleJobs .HelpId:vcl:PrintDialog:OptPage:SingleJobs -PrintReverse .HelpId:vcl:PrintDialog:OptPage:Reverse -PaperTrayFromPrefs .HelpId:vcl:PrintDialog:PrintPaperFromSetup:CheckBox +PrintingTabControl .HelpID:vcl:PrintDialog:TabPages +TabPrintGeneral .HelpID:vcl:PrintDialog:JobPage +TabApplication .HelpID:vcl:PrintDialog:TabPage:AppPage +TabLayout .HelpID:vcl:PrintDialog:NUpPage +TabOptions .HelpID:vcl:PrintDialog:OptPage + +*TabPrintGeneral .HelpID:vcl:PrintDialog:JobPage +PrinterList .HelpID:vcl:PrintDialog:JobPage:PrinterList +NumberOfCopies .HelpID:vcl:PrintDialog:JobPage:Copies +Collate .HelpID:vcl:PrintDialog:JobPage:Collate +PrintNotes .HelpID:vcl:PrintDialog:PrintAnnotationMode:FixedText +AllPages .HelpID:vcl:PrintDialog:PrintContent:RadioButton:0 +AllSlides .HelpID:vcl:PrintDialog:PrintContent:RadioButton:0 +AllSheets .HelpID:vcl:PrintDialog:PrintContent:RadioButton:0 +Pages .HelpID:vcl:PrintDialog:PrintContent:RadioButton:1 +Slides .HelpID:vcl:PrintDialog:PrintContent:RadioButton:1 +SelectedSheets .HelpID:vcl:PrintDialog:PrintContent:RadioButton:1 +PrintAllPages .HelpID:vcl:PrintDialog:PrintRange:RadioButton:0 +PrintPages .HelpID:vcl:PrintDialog:PrintRange:RadioButton:1 +PageRange .HelpID:vcl:PrintDialog:PageRange:Edit +Selection .HelpID:vcl:PrintDialog:PrintContent:RadioButton:2 +SelectedCells .HelpID:vcl:PrintDialog:PrintContent:RadioButton:2 +Details .HelpID:vcl:PrintDialog:JobPage:DetailsBtn +Properties .HelpID:vcl:PrintDialog:JobPage:Properties +PageCount .HelpID:vcl:PrintDialog:NumPagesText +PartsToPrint .HelpID:vcl:PrintDialog:PageContentType:ListBox +SlidesPerPage .HelpID:vcl:PrintDialog:SlidesPerPage:ListBox +ArrangeSlides .HelpID:vcl:PrintDialog:SlidesPerPageOrder:ListBox + +*TabApplication .HelpID:vcl:PrintDialog:TabPage:AppPage +PrintPageBackground .HelpID:vcl:PrintDialog:PrintPageBackground:CheckBox +PrintGraphicsAndDiagrams .HelpID:vcl:PrintDialog:PrintTablesGraphicsAndDiagrams:CheckBox +PrintPicturesAndObjects .HelpID:vcl:PrintDialog:PrintPicturesAndObjects:CheckBox +PrintHiddenText .HelpID:vcl:PrintDialog:PrintHiddenText:CheckBox +PrintTextPlaceholder .HelpID:vcl:PrintDialog:PrintTextPlaceholder:CheckBox +PrintFormControls .HelpID:vcl:PrintDialog:PrintControls:CheckBox +PrintTextInBlack .HelpID:vcl:PrintDialog:PrintBlackFonts:CheckBox +PrintBlankPages .HelpID:vcl:PrintDialog:PrintEmptyPages:CheckBox +IncludeEmptyPages .HelpID:vcl:PrintDialog:IsIncludeEmptyPages:CheckBox +SlideName .HelpID:vcl:PrintDialog:IsPrintName:CheckBox +DateAndTime .HelpID:vcl:PrintDialog:IsPrintDateTime:CheckBox +HiddenPages .HelpID:vcl:PrintDialog:IsPrintHidden:CheckBox +TilePaper .HelpID:vcl:PrintDialog:PageOptions:RadioButton:3 +OriginalColors .HelpID:vcl:PrintDialog:Quality:RadioButton:0 +Grayscale .HelpID:vcl:PrintDialog:Quality:RadioButton:1 +BlackAndWhite .HelpID:vcl:PrintDialog:Quality:RadioButton:2 +MultiplePages .HelpID:vcl:PrintDialog:PageOptions:RadioButton:2 +TitleRow .HelpID:vcl:PrintDialog:TitleRow:CheckBox +FormulaText .HelpID:vcl:PrintDialog:FormulaText:CheckBox +Borders .HelpID:vcl:PrintDialog:Border:CheckBox +OriginalSize .HelpID:vcl:PrintDialog:PageOptions:RadioButton:0 +OriginalSizeMath .HelpID:vcl:PrintDialog:PrintFormat:RadioButton:0 +FitToPage .HelpID:vcl:PrintDialog:PageOptions:RadioButton:1 +FitToPageMath .HelpID:vcl:PrintDialog:PrintFormat:RadioButton:1 +Scaling .HelpID:vcl:PrintDialog:PrintFormat:RadioButton:2 +ScalingFactor .HelpID:vcl:PrintDialog:PrintScale:NumericField + +*TabLayout .HelpID:vcl:PrintDialog:NUpPage +PagesPerSheet .HelpID:vcl:PrintDialog:NUpPage:PagesPerSheet +NumberOfPages .HelpID:vcl:PrintDialog:NUpPage:PagesPerSheetBox +NumberOfColumns .HelpID:vcl:PrintDialog:NUpPage:ColumnsBox +NumberOfRows .HelpID:vcl:PrintDialog:NUpPage:RowsBox +BorderAroundPages .HelpID:vcl:PrintDialog:NUpPage:BorderBox +Brochure .HelpID:vcl:PrintDialog:NUpPage:Brochure +DistanceBetweenPages .HelpID:vcl:PrintDialog:NUpPage:PageMarginBox +MarginToSheetBorder .HelpID:vcl:PrintDialog:NUpPage:SheetMarginBox +PaperOrientation .HelpID:vcl:PrintDialog:NUpPage:OrientationBox +PrintOrder .HelpID:vcl:PrintDialog:NUpPage:OrderBox +IncludePages .HelpID:vcl:PrintDialog:PrintLeftRightPages:ListBox +PrintBrochureRTL .HelpID:vcl:PrintDialog:PrintProspectRTL:ListBox +BrochurePageSides .HelpID:vcl:PrintDialog:PrintProspectInclude:ListBox + +*TabOptions .HelpID:vcl:PrintDialog:OptPage +PrintToFile .HelpID:vcl:PrintDialog:OptPage:ToFile +PrintAsSingleJobs .HelpID:vcl:PrintDialog:OptPage:SingleJobs +PrintReverse .HelpID:vcl:PrintDialog:OptPage:ToReverse +PaperTrayFromPrefs .HelpID:vcl:PrintDialog:PrintPaperFromSetup:CheckBox *PurchaseStarOffice sym:TAB_HID_LICENSING_DIALOG TabPurchase sym:TAB_HID_TP_PURCHASE diff --git a/testautomation/graphics/optional/includes/global/g_arrangealign.inc b/testautomation/graphics/optional/includes/global/g_arrangealign.inc index 1023ab88fd0a..929f139ed1ef 100644 --- a/testautomation/graphics/optional/includes/global/g_arrangealign.inc +++ b/testautomation/graphics/optional/includes/global/g_arrangealign.inc @@ -41,15 +41,15 @@ testcase tiDatei_Fuer_Anordnen_Erstellen call hNewDocument if gApplication = "DRAW" then kontext "DocumentDraw" - DocumentDraw.UseMenu else kontext "DocumentImpress" DocumentImpress.UseMenu + hMenuSelectNr(4) + hMenuSelectNr(13) + call sSelectEmptyLayout end if - hMenuSelectNr(4) - hMenuSelectNr(13) - call sSelectEmptyLayout '/// new document ///' + if Dir(Datei)<>"" then app.Kill(Datei) ' kill old file printlog "create 3 overlapping objects " for Zaehler = 1 to 3 diff --git a/testautomation/graphics/optional/includes/global/g_character.inc b/testautomation/graphics/optional/includes/global/g_character.inc index 8d58263c74d4..a1ee4285036b 100644 --- a/testautomation/graphics/optional/includes/global/g_character.inc +++ b/testautomation/graphics/optional/includes/global/g_character.inc @@ -404,35 +404,35 @@ testcase tSetFormatCharacter Call hNewDocument printlog "activate all languages in options " - '///+ Tools->Options " + printlog " Tools->Options " ToolsOptions - '///+ select tabpage 'Languages' from set 'Language Settings' " + printlog " select tabpage 'Languages' from set 'Language Settings' " hToolsOptions("LANGUAGESETTINGS","Languages") kontext "TabSprachen" - '///+ save state and check checkbox 'Asian languages support' " + printlog " save state and check checkbox 'Asian languages support' " printlog "if the language is Asian, skip this part " printlog "iSprache = " + iSprache if bAsianLan = FALSE then bAsian = Aktivieren.isEnabled Aktivieren.check endif - '///+ save state and check checkbox 'Complex text layout (CTL) support' " + printlog " save state and check checkbox 'Complex text layout (CTL) support' " bComplex = ComplexScriptEnabled.isEnabled ComplexScriptEnabled.check - '///+ close dialog 'Options' with OK " + printlog "close dialog 'Options' with OK " Kontext "ExtrasOptionenDlg" ExtrasOptionenDlg.OK printlog "get count of languages " - '///+ Format->Character " + printlog " Format->Character " FormatCharacter sleep 1 Kontext - '///+ switch to tabpage 'Font' " + printlog "switch to tabpage 'Font' " Messagebox.SetPage TabFont kontext "TabFont" sleep 1 - '///+ get count of languages for Western/Asian/CTL fonts " + printlog " get count of languages for Western/Asian/CTL fonts " iWest = LanguageWest.getItemCount iAsian = LanguageEast.getItemCount iComplex = LanguageCTL.getItemCount diff --git a/testautomation/graphics/optional/includes/global/g_clipboard.inc b/testautomation/graphics/optional/includes/global/g_clipboard.inc index 70b387581329..d43c49610c26 100644 --- a/testautomation/graphics/optional/includes/global/g_clipboard.inc +++ b/testautomation/graphics/optional/includes/global/g_clipboard.inc @@ -136,7 +136,6 @@ testcase tiEditUndo else warnlog "File is missing." endif - Call hCloseDocument printlog "Close document" Call hCloseDocument @@ -259,14 +258,14 @@ testcase tiEditClipboard printlog "Get values for position variables" Ueber_Text_4 = fGetPositionX() Sleep 1 - printlog "<b> Edit->Copy </b>" + printlog " Edit->Copy" EditCopy - '///+ Type Key [Deletee]" + printlog " Type Key [Delete]" hTypeKeys "<DELETE>" - '///+ <i> Edit->Paste </i>" + printlog "Edit->Paste" EditPaste sleep 1 - '///+ Edit->Select All" + printlog "Edit->Select All" EditSelectAll sTemp = fGetPositionX() printlog "TabPositionAndSize: comparing position with original position" diff --git a/testautomation/graphics/optional/includes/global/g_line.inc b/testautomation/graphics/optional/includes/global/g_line.inc index 2a6d5b315f89..eb672b3b9716 100644 --- a/testautomation/graphics/optional/includes/global/g_line.inc +++ b/testautomation/graphics/optional/includes/global/g_line.inc @@ -325,7 +325,7 @@ ZentriertLinks.Check TabLinienenden.Cancel sleep 2 - '///New part for line + 'New part for line 'EditSelectAll printlog "Select all objects in document" 'sleep 2 'hTypeKeys "<DELETE>" printlog "Delete objects" diff --git a/testautomation/graphics/optional/includes/global/g_tables.inc b/testautomation/graphics/optional/includes/global/g_tables.inc index 10774ab43d76..c3c8f99c551c 100644 --- a/testautomation/graphics/optional/includes/global/g_tables.inc +++ b/testautomation/graphics/optional/includes/global/g_tables.inc @@ -40,6 +40,9 @@ dim iItemIndex AS integer 'Counter for/next testcase tiInsertTableUsingMenu +qaerrorlog "#i116013# No table toolbar when inserting table via insert/table" +goto endsub + printlog "Inserting table into doc using the menu." Call hNewDocument printlog "Switching between Draw/Impress" @@ -60,6 +63,7 @@ testcase tiInsertTableUsingMenu Kontext "InsertTableImpress" if InsertTableImpress.Exists then printlog "InsertTable Dialog is up." + InsertTableImpress.OK else warnlog "InsertTableDialog did not come up!" endif @@ -125,6 +129,9 @@ endcase 'tiInsertTableUsingMenu testcase tiInsertTableUsingButton +qaerrorlog "#i116013# No table toolbar when inserting table via insert/table" +goto endsub + printlog " Inserting table using the button in standard toolbar." Call hNewDocument printlog "Open New Document." @@ -204,6 +211,9 @@ endcase 'tiInsertTableUsingToolbarbutton '------------------------------------------------------------------------------- testcase tiTableObjectBar +qaerrorlog "#i116013# No table toolbar when inserting table via insert/table" +goto endsub + printlog "Testing TableObjectBar." printlog "Inserting table into doc using the menu." Call hNewDocument @@ -244,6 +254,7 @@ testcase tiTableObjectBar printlog "Table bar visible." else warnlog "Table bar is not up!" + ViewToolbarsTable endif printlog "Checking LinienStil." diff --git a/testautomation/graphics/optional/includes/global/g_tools.inc b/testautomation/graphics/optional/includes/global/g_tools.inc index 9faee3508c1b..e8e918b95cbb 100644 --- a/testautomation/graphics/optional/includes/global/g_tools.inc +++ b/testautomation/graphics/optional/includes/global/g_tools.inc @@ -459,11 +459,16 @@ endcase 'tiToolsHyphenation2 '------------------------------------------------------------------------------- testcase tToolsMacro +qaerrorlog( "#i116017# - [Automation]: TypeKeys executes wrong commands" ) + goto endsub + + Dim i as integer Dim j as integer Dim Zaehler as integer Dim ZaehlerListe as integer + printlog "New document" Call hNewDocument ToolsMacro @@ -474,7 +479,9 @@ testcase tToolsMacro Zaehler=MakroAus.GetItemCount MakroAus.typeKeys "<end>" for i = 1 to Zaehler - MakroAus.typeKeys "<+><up>" + MakroAus.typeKeys "<+>" + sleep 1 + MakroAus.typeKeys "<up>" next i next j Zaehler=MakroAus.GetItemCount diff --git a/testautomation/graphics/optional/includes/impress/i_pengine.inc b/testautomation/graphics/optional/includes/impress/i_pengine.inc index aed79a6ce827..2374ff28f572 100644 --- a/testautomation/graphics/optional/includes/impress/i_pengine.inc +++ b/testautomation/graphics/optional/includes/impress/i_pengine.inc @@ -210,7 +210,6 @@ testcase tSlideShowInteraction setStartCurrentPage(FALSE) printlog "Set "start with current page to OFF" printlog "call 'Insert->Slide' three times and name the slides 2, 3, 4 and create a rectangle on it " - '///+ we now have 4 slides ?! :-)" for i = 2 to 4 InsertSlide sleep 2 diff --git a/testautomation/graphics/optional/includes/impress/i_slidelayer.inc b/testautomation/graphics/optional/includes/impress/i_slidelayer.inc index 724aaa8b70a4..508394144663 100644 --- a/testautomation/graphics/optional/includes/impress/i_slidelayer.inc +++ b/testautomation/graphics/optional/includes/impress/i_slidelayer.inc @@ -49,23 +49,23 @@ testcase tiInsertExpandSlide ViewWorkspaceOutlineView Sleep 1 Kontext "DocumentImpressOutlineView" - '///+ create a slide with some levels...and some more slides with just one level... " - '///+ it should look like this: " - '///+-------------------------------------------------- " - '///+ Slide 1" - '///+ - A " - '///+ - - B" - '///+ - - - C" - '///+ - - - - D" - '///+ - - - - - - F" - '///+ - B" - '///+ - C" - '///+ - D" - '///+ Slide 2 " - '///+ Slide 3 " - '///+ Slide 4 " - '///+ Slide 5 " - '///+-------------------------------------------------- " + 'create a slide with some levels...and some more slides with just one level... " + 'it should look like this: " + '-------------------------------------------------- " + 'Slide 1" + ' - A " + '- - B" + ' - - - C" + ' - - - - D" + ' - - - - - - F" + ' - B" + ' - C" + ' - D" + ' Slide 2 " + ' Slide 3 " + ' Slide 4 " + ' Slide 5 " + '-------------------------------------------------- " DocumentImpressOutlineView.TypeKeys "Slide 1" for i = 1 to 6 DocumentImpressOutlineView.TypeKeys "<return><tab>" diff --git a/testautomation/graphics/optional/includes/impress/i_slideshow.inc b/testautomation/graphics/optional/includes/impress/i_slideshow.inc index 2c51a83a509a..da96b13cc47d 100644 --- a/testautomation/graphics/optional/includes/impress/i_slideshow.inc +++ b/testautomation/graphics/optional/includes/impress/i_slideshow.inc @@ -1092,7 +1092,7 @@ testcase tSlideShowSlideTransition select case i case 1: printlog " click button 'Automatic Transition' " if (TransitionAutomaticallyAfter.IsEnabled) then - '///+ - + + Check Time '1' OR " + printlog " Check Time '1' OR " sTemp = TransitionAutomaticallyAfterTime.GetText if (sTemp <> TimerValue) then Warnlog " Time is different :-( is: '" + sTemp + "' should be: '" + TimerValue + "'" '"00:00:01" @@ -1101,11 +1101,11 @@ testcase tSlideShowSlideTransition Warnlog " button 'Automatic Transition' not pressed ?" end if case 2: if (TransitionAutomaticallyAfter.IsChecked <> FALSE) then - '///+ - + check button 'SemiAutomatic Transition' OR " + printlog " check button 'SemiAutomatic Transition' OR " Warnlog " button 'Automatic Transition' is pressed ?" end if case 3: if (TransitionAutomaticallyAfter.IsChecked <> FALSE) then - '///+ - + click button 'Manual Transition' " + printlog "click button 'Manual Transition' " Warnlog " button 'Automatic Transition' is pressed ?" end if end select diff --git a/testautomation/graphics/optional/includes/impress/i_slideshow3.inc b/testautomation/graphics/optional/includes/impress/i_slideshow3.inc index 07ac2f0d9def..52858e22e7cf 100644 --- a/testautomation/graphics/optional/includes/impress/i_slideshow3.inc +++ b/testautomation/graphics/optional/includes/impress/i_slideshow3.inc @@ -560,7 +560,7 @@ testcase tExtrasPraesentationseinstellungen printlog " Check state of navigator ! Expected: closed" Kontext "Navigator" if Navigator.exists then - '///+ Close Navigator !" + printlog " Close Navigator !" Navigator.Close Warnlog "Navigator: Should have been closed. Closing now." else diff --git a/testautomation/graphics/required/includes/global/id_opt_1.inc b/testautomation/graphics/required/includes/global/id_opt_1.inc index dcb6c38795bb..35874fe0495f 100644 --- a/testautomation/graphics/required/includes/global/id_opt_1.inc +++ b/testautomation/graphics/required/includes/global/id_opt_1.inc @@ -84,13 +84,17 @@ testcase tToolsOptionsDrawGeneral (sApplication as string) Tabulatorabstand.SetText (sTabAbstand) if (gApplication = "DRAW") then + printlog "Index Zeichnungsmasstab= " & iZeichnungsmasstab + printlog "Zeichnungsmasstab Item Count= " & (Zeichnungsmasstab.GetItemCount) If ( Zeichnungsmasstab.GetItemCount <> iZeichnungsmasstab ) Then - Zeichnungsmasstab.Select (Zeichnungsmasstab.GetItemCount) _ - Else Zeichnungsmasstab.Select (1) - iTemp2 = Zeichnungsmasstab.GetSelIndex - if irgendwas(6) Then SetzenAufKreis.UnCheck Else SetzenAufKreis.Check + Zeichnungsmasstab.Select (Zeichnungsmasstab.GetItemCount) + Else + Zeichnungsmasstab.Select (1) endif - else ' IMPRESS + iTemp2 = Zeichnungsmasstab.GetSelIndex + printlog "iTemp2= " & iTemp2 + if irgendwas(6) Then SetzenAufKreis.UnCheck Else SetzenAufKreis.Check + else ' IMPRESS if irgendwas(7) Then MitAutopilotStarten.UnCheck Else MitAutopilotStarten.Check if irgendwas(8) Then MitAktuellerSeite.UnCheck Else MitAktuellerSeite.Check if irgendwas(9) Then AlleAbsatzabstaendeAddieren.UnCheck Else AlleAbsatzabstaendeAddieren.Check @@ -110,7 +114,7 @@ testcase tToolsOptionsDrawGeneral (sApplication as string) Kontext "ExtrasOptionenDlg" ExtrasOptionenDlg.OK - printlog "Office quit - start" + printlog "-------> Office quit - start" ExitRestartTheOffice printlog "opening new doc to get the Options" @@ -127,6 +131,8 @@ testcase tToolsOptionsDrawGeneral (sApplication as string) If ( irgendwas(5) = ObjekteImmerVerschiebbar.IsChecked ) Then WarnLog "Objects Always Movable state changed" if (gApplication = "DRAW") then + printlog "Index Zeichnungsmasstab= " & (Zeichnungsmasstab.GetSelIndex) + printlog "iTemp2= " & iTemp2 If ( Zeichnungsmasstab.GetSelIndex <> iTemp2 ) Then WarnLog "Drawing Scale state changed BUG #97391 is:"+Zeichnungsmasstab.GetSelIndex+"; should: "+iTemp2 If ( irgendwas(6) = SetzenAufKreis.IsChecked ) Then WarnLog "'Do not disort objects in curve' state changed" else ' IMPRESS diff --git a/testautomation/writer/optional/includes/textframes/w_textframes2.inc b/testautomation/writer/optional/includes/textframes/w_textframes2.inc index 4fca2bdbddb6..466b0c99ab15 100644 --- a/testautomation/writer/optional/includes/textframes/w_textframes2.inc +++ b/testautomation/writer/optional/includes/textframes/w_textframes2.inc @@ -868,7 +868,7 @@ testcase tTextframes_28 printlog "Insert a frame" Call fInsertFrame(30, 30, 60, 60) - + Sleep 2 printlog "Naming the frame" Call fFormatFrame("TabZusaetze") ObjektName.SetText sFrameName1 @@ -885,7 +885,7 @@ testcase tTextframes_28 printlog "Insert another frame" Call fInsertFrame(50, 50, 80, 80) - + Sleep 2 printlog "Naming the frame" Call fFormatFrame("TabZusaetze") ObjektName.SetText sFrameName2 diff --git a/testautomation/writer/required/includes/w_007_.inc b/testautomation/writer/required/includes/w_007_.inc index 20b468c9605c..466328026d9b 100644 --- a/testautomation/writer/required/includes/w_007_.inc +++ b/testautomation/writer/required/includes/w_007_.inc @@ -910,6 +910,7 @@ testcase tToolsUpdate Call wTypeKeys ("Dieser Text ist zur Aktualisierung") printlog " Insert / Indexes" InsertIndexes + sleep 1 Kontext "Active" if ( Active.Exists( 2 ) ) then diff --git a/testautomation/writer/tools/includes/w_tool6.inc b/testautomation/writer/tools/includes/w_tool6.inc index 33ddca87709e..9bc7ed688d9b 100644 --- a/testautomation/writer/tools/includes/w_tool6.inc +++ b/testautomation/writer/tools/includes/w_tool6.inc @@ -38,6 +38,10 @@ sub wOfficeRestart FileExit "SynchronMode", TRUE Call hStartTheOffice + + ' Open new document + Call hNewDocument + end sub '-------------------------------------------------------------- diff --git a/testtools/prj/build.lst b/testtools/prj/build.lst index 775075aa83f0..a76ac598f95c 100644 --- a/testtools/prj/build.lst +++ b/testtools/prj/build.lst @@ -1,4 +1,4 @@ -tt testtools : cpputools io remotebridges stoc javaunohelper pyuno cli_ure offapi ure NULL +tt testtools : cpputools io remotebridges stoc javaunohelper pyuno cli_ure offapi ure LIBXSLT:libxslt NULL tt testtools\inc nmake - all tt_inc NULL tt testtools\source\bridgetest nmake - all tt_bridgetest tt_bridgetest_idl tt_inc NULL tt testtools\source\bridgetest\cli nmake - w,vc7 tt_cli tt_bridgetest tt_bridgetest_idl tt_inc NULL diff --git a/testtools/source/bridgetest/bridgetest.cxx b/testtools/source/bridgetest/bridgetest.cxx index 70cec6b74abf..8b25bc3b4e9a 100644 --- a/testtools/source/bridgetest/bridgetest.cxx +++ b/testtools/source/bridgetest/bridgetest.cxx @@ -346,37 +346,6 @@ static sal_Bool performRecursiveCallTest( const Reference < XBridgeTest > & xLBT return sal_True; } -static sal_Bool performQueryForUnknownType( const Reference< XBridgeTest > & xLBT ) -{ - sal_Bool bRet = sal_True; - // use this when you want to test querying for unknown types - // currently (not supported by the java remote bridge ) - { - // test queryInterface for an unknown type - typelib_TypeDescriptionReference *pTypeRef = 0; - OUString aName( RTL_CONSTASCII_USTRINGPARAM( "foo.MyInterface" ) ); - typelib_typedescriptionreference_new( - &pTypeRef, typelib_TypeClass_INTERFACE, aName.pData); - try - { - Any a = xLBT->queryInterface( Type( pTypeRef ) ); - bRet = check( a == Any( ), "got an foo.MyInterface, but didn't expect to get one" ); - } - catch( com::sun::star::uno::RuntimeException & ) - { - fprintf( - stderr, - "tried to query for an interface reference of an unknown type " - "but got a runtime exception. This should work for native bridges " - "but isn't implemented for Java remote bridge\n" - "Note: All subsequent tests may fail now as the remote bridge is broken\n" - "QueryForUnknownType" ); - } - typelib_typedescriptionreference_release( pTypeRef ); - } - return bRet; -} - class MyClass : public osl::DebugBase<MyClass>, public OWeakObject { public: @@ -411,549 +380,545 @@ static sal_Bool performTest( const Reference<XBridgeTest > & xLBT, bool noCurrentContext ) { - check( xLBT.is(), "### no test interface!" ); + check(xLBT.is(), "### no test interface!"); bool bRet = true; - if (xLBT.is()) - { - // this data is never ever granted access to by calls other than equals(), assign()! + if (xLBT.is()) { + // this data is never ever granted access to by calls other than + // equals(), assign()! TestData aData; // test against this data - - Reference<XInterface > xI( new MyClass ); - - assign( (TestElement &)aData, - sal_True, '@', 17, 0x1234, 0xfedc, 0x12345678, 0xfedcba98, - SAL_CONST_INT64(0x123456789abcdef0), - SAL_CONST_UINT64(0xfedcba9876543210), - (float)17.0815, 3.1415926359, TestEnum_LOLA, - OUSTR(STRING_TEST_CONSTANT), xI, - Any( &xI, ::getCppuType( (const Reference<XInterface > *)0 ) ) ); - - bRet = check( aData.Any == xI, "### unexpected any!" ) && bRet; - bRet = check( !(aData.Any != xI), "### unexpected any!" ) && bRet; - - aData.Sequence.realloc( 2 ); - aData.Sequence[ 0 ] = *(const TestElement *)&aData; - // aData.Sequence[ 1 ] is empty - - // aData complete - //================================================================================ - - // this is a manually copy of aData for first setting... + Reference< XInterface > xI(new MyClass); + assign( + (TestElement &) aData, true, '@', 17, 0x1234, 0xFEDC, 0x12345678, + 0xFEDCBA98, SAL_CONST_INT64(0x123456789ABCDEF0), + SAL_CONST_UINT64(0xFEDCBA9876543210), 17.0815f, 3.1415926359, + TestEnum_LOLA, OUSTR(STRING_TEST_CONSTANT), xI, + Any(&xI, getCppuType((Reference< XInterface > const *) 0))); + bRet &= check(aData.Any == xI, "### unexpected any!"); + bRet &= check(!(aData.Any != xI), "### unexpected any!"); + aData.Sequence.realloc(2); + aData.Sequence[0] = *(TestElement const *) &aData; + // aData.Sequence[1] is empty + // aSetData is a manually copy of aData for first setting: TestData aSetData; - - assign( (TestElement &)aSetData, - aData.Bool, aData.Char, aData.Byte, aData.Short, aData.UShort, - aData.Long, aData.ULong, aData.Hyper, aData.UHyper, aData.Float, aData.Double, - aData.Enum, aData.String, xI, - Any( &xI, ::getCppuType( (const Reference<XInterface > *)0 ) ) ); - - aSetData.Sequence.realloc( 2 ); - aSetData.Sequence[ 0 ] = *(const TestElement *)&aSetData; - // aSetData.Sequence[ 1 ] is empty - + assign( + (TestElement &) aSetData, aData.Bool, aData.Char, aData.Byte, + aData.Short, aData.UShort, aData.Long, aData.ULong, aData.Hyper, + aData.UHyper, aData.Float, aData.Double, aData.Enum, aData.String, + xI, Any(&xI, getCppuType((Reference< XInterface > const *) 0))); + aSetData.Sequence.realloc(2); + aSetData.Sequence[0] = *(TestElement const *) &aSetData; + // aSetData.Sequence[1] is empty xLBT->setValues( - aSetData.Bool, aSetData.Char, aSetData.Byte, aSetData.Short, aSetData.UShort, - aSetData.Long, aSetData.ULong, aSetData.Hyper, aSetData.UHyper, aSetData.Float, aSetData.Double, - aSetData.Enum, aSetData.String, aSetData.Interface, aSetData.Any, aSetData.Sequence, aSetData ); - + aSetData.Bool, aSetData.Char, aSetData.Byte, aSetData.Short, + aSetData.UShort, aSetData.Long, aSetData.ULong, aSetData.Hyper, + aSetData.UHyper, aSetData.Float, aSetData.Double, aSetData.Enum, + aSetData.String, aSetData.Interface, aSetData.Any, + aSetData.Sequence, aSetData); { - TestData aRet, aRet2; - xLBT->getValues( - aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, - aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, aRet.Double, - aRet.Enum, aRet.String, aRet.Interface, aRet.Any, aRet.Sequence, aRet2 ); - - bRet = check( equals( aData, aRet ) && equals( aData, aRet2 ) , "getValues test") && bRet; - - // set last retrieved values - TestData aSV2ret = xLBT->setValues2( - aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, - aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, aRet.Double, - aRet.Enum, aRet.String, aRet.Interface, aRet.Any, aRet.Sequence, aRet2 ); - // check inout sequence order - // => inout sequence parameter was switched by test objects - TestElement temp = aRet.Sequence[ 0 ]; - aRet.Sequence[ 0 ] = aRet.Sequence[ 1 ]; - aRet.Sequence[ 1 ] = temp; - - bRet = check( - equals( aData, aSV2ret ) && equals( aData, aRet2 ), - "getValues2 test") && bRet; + TestData aRet; + TestData aRet2; + xLBT->getValues( + aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, + aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, + aRet.Double, aRet.Enum, aRet.String, aRet.Interface, aRet.Any, + aRet.Sequence, aRet2); + bRet &= check( + equals(aData, aRet) && equals(aData, aRet2), "getValues test"); + // Set last retrieved values: + TestData aSV2ret( + xLBT->setValues2( + aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, + aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, + aRet.Double, aRet.Enum, aRet.String, aRet.Interface, + aRet.Any, aRet.Sequence, aRet2)); + // Check inout sequence order (=> inout sequence parameter was + // switched by test objects): + TestElement temp(aRet.Sequence[0]); + aRet.Sequence[0] = aRet.Sequence[1]; + aRet.Sequence[1] = temp; + bRet &= check( + equals(aData, aSV2ret) && equals(aData, aRet2), + "getValues2 test"); } { - TestData aRet, aRet2; - TestData aGVret = xLBT->getValues( - aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, - aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, aRet.Double, - aRet.Enum, aRet.String, aRet.Interface, aRet.Any, aRet.Sequence, aRet2 ); - - bRet = check( equals( aData, aRet ) && equals( aData, aRet2 ) && equals( aData, aGVret ), "getValues test" ) && bRet; - - // set last retrieved values - xLBT->setBool( aRet.Bool ); - xLBT->setChar( aRet.Char ); - xLBT->setByte( aRet.Byte ); - xLBT->setShort( aRet.Short ); - xLBT->setUShort( aRet.UShort ); - xLBT->setLong( aRet.Long ); - xLBT->setULong( aRet.ULong ); - xLBT->setHyper( aRet.Hyper ); - xLBT->setUHyper( aRet.UHyper ); - xLBT->setFloat( aRet.Float ); - xLBT->setDouble( aRet.Double ); - xLBT->setEnum( aRet.Enum ); - xLBT->setString( aRet.String ); - xLBT->setInterface( aRet.Interface ); - xLBT->setAny( aRet.Any ); - xLBT->setSequence( aRet.Sequence ); - xLBT->setStruct( aRet2 ); + TestData aRet; + TestData aRet2; + TestData aGVret( + xLBT->getValues( + aRet.Bool, aRet.Char, aRet.Byte, aRet.Short, aRet.UShort, + aRet.Long, aRet.ULong, aRet.Hyper, aRet.UHyper, aRet.Float, + aRet.Double, aRet.Enum, aRet.String, aRet.Interface, + aRet.Any, aRet.Sequence, aRet2)); + bRet &= check( + (equals(aData, aRet) && equals(aData, aRet2) && + equals(aData, aGVret)), + "getValues test"); + // Set last retrieved values: + xLBT->setBool(aRet.Bool); + xLBT->setChar(aRet.Char); + xLBT->setByte(aRet.Byte); + xLBT->setShort(aRet.Short); + xLBT->setUShort(aRet.UShort); + xLBT->setLong(aRet.Long); + xLBT->setULong(aRet.ULong); + xLBT->setHyper(aRet.Hyper); + xLBT->setUHyper(aRet.UHyper); + xLBT->setFloat(aRet.Float); + xLBT->setDouble(aRet.Double); + xLBT->setEnum(aRet.Enum); + xLBT->setString(aRet.String); + xLBT->setInterface(aRet.Interface); + xLBT->setAny(aRet.Any); + xLBT->setSequence(aRet.Sequence); + xLBT->setStruct(aRet2); } { - TestData aRet, aRet2; - aRet.Hyper = xLBT->getHyper(); - aRet.UHyper = xLBT->getUHyper(); - aRet.Float = xLBT->getFloat(); - aRet.Double = xLBT->getDouble(); - aRet.Byte = xLBT->getByte(); - aRet.Char = xLBT->getChar(); - aRet.Bool = xLBT->getBool(); - aRet.Short = xLBT->getShort(); - aRet.UShort = xLBT->getUShort(); - aRet.Long = xLBT->getLong(); - aRet.ULong = xLBT->getULong(); - aRet.Enum = xLBT->getEnum(); - aRet.String = xLBT->getString(); - aRet.Interface = xLBT->getInterface(); - aRet.Any = xLBT->getAny(); - aRet.Sequence = xLBT->getSequence(); - aRet2 = xLBT->getStruct(); - - bRet = check( equals( aData, aRet ) && equals( aData, aRet2 ) , "struct comparison test") && bRet; - - { - SmallStruct aIn(1, 2); - SmallStruct aOut = xLBT->echoSmallStruct(aIn); - bRet = check( memcmp(&aIn, &aOut, sizeof(SmallStruct)) == 0, "small struct test" ) && bRet; - } - { - MediumStruct aIn(1, 2, 3, 4); - MediumStruct aOut = xLBT->echoMediumStruct(aIn); - bRet = check( memcmp(&aIn, &aOut, sizeof(MediumStruct)) == 0, "medium struct test" ) && bRet; - } - { - BigStruct aIn(1, 2, 3, 4, 5, 6, 7, 8); - BigStruct aOut = xLBT->echoBigStruct(aIn); - bRet = check( memcmp(&aIn, &aOut, sizeof(BigStruct)) == 0, "big struct test" ) && bRet; - } - { - AllFloats aIn(1.1f, 2.2f, 3.3f, 4.4f); - AllFloats aOut = xLBT->echoAllFloats(aIn); - bRet = check( memcmp(&aIn, &aOut, sizeof(AllFloats)) == 0, "all floats struct test" ) && bRet; - } - { - sal_Int32 i2 = xLBT->testPPCAlignment( 0, 0, 0, 0, 0xbeaf ); - bRet = check( i2 == 0xbeaf, "ppc-style alignment test" ) && bRet; - } - - // Test extended attributes that raise exceptions: - try { - xLBT->getRaiseAttr1(); - bRet &= check(false, "getRaiseAttr1 did not throw"); - } catch (RuntimeException &) { - } catch (...) { - bRet &= check(false, "getRaiseAttr1 threw wrong type"); - } - try { - xLBT->setRaiseAttr1(0); - bRet &= check(false, "setRaiseAttr1 did not throw"); - } catch (IllegalArgumentException &) { - } catch (...) { - bRet &= check(false, "setRaiseAttr1 threw wrong type"); - } - try { - xLBT->getRaiseAttr2(); - bRet &= check(false, "getRaiseAttr2 did not throw"); - } catch (IllegalArgumentException &) { - } catch (...) { - bRet &= check(false, "getRaiseAttr2 threw wrong type"); - } - - // Test instantiated polymorphic struct types: - { - bRet &= check( - xLBT->transportPolyBoolean(TestPolyStruct< sal_Bool >(true)).member, - "transportPolyBoolean"); - TestPolyStruct< sal_Int64 > tps1(12345); - xLBT->transportPolyHyper(tps1); - bRet &= check(tps1.member == 12345, "transportPolyHyper"); - Sequence< Any > seq(2); - seq[0] <<= static_cast< sal_uInt32 >(33); - seq[1] <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ABC")); - TestPolyStruct< Sequence< Any > > tps2(seq); - TestPolyStruct< Sequence< Any > > tps3; - xLBT->transportPolySequence(tps2, tps3); - bRet &= check( - tps3.member.getLength() == 2, "transportPolySequence, length"); - sal_uInt32 v0 = sal_uInt32(); - tps3.member[0] >>= v0; - bRet &= check(v0 == 33, "transportPolySequence, element 0"); - rtl::OUString v1; - tps3.member[1] >>= v1; - bRet &= check( - v1.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ABC")), - "transportPolySequence, element 1"); - bRet &= check(xLBT->getNullPolyLong().member == 0, "getNullPolyLong"); - bRet &= check( - xLBT->getNullPolyString().member.getLength() == 0, - "getNullPolyString"); - bRet &= check( - xLBT->getNullPolyType().member == Type(), "getNullPolyType"); - Any nullAny(xLBT->getNullPolyAny().member); - bRet &= check( - (((nullAny.getValueTypeName() - == rtl::OUString( - RTL_CONSTASCII_USTRINGPARAM("com.sun.star.uno.XInterface"))) - && !static_cast< Reference< XInterface > const * >( - nullAny.getValue())->is()) - || nullAny == Any()), - "getNullPolyAny"); - bRet &= check( - xLBT->getNullPolySequence().member.getLength() == 0, - "getNullPolySequence"); - bRet &= check( - xLBT->getNullPolyEnum().member == TestEnum_TEST, "getNullPolyEnum"); - bRet &= check( - xLBT->getNullPolyBadEnum().member == TestBadEnum_M, - "getNullPolyBadEnum"); - bRet &= check( - xLBT->getNullPolyStruct().member.member == 0, "getNullPolyStruct"); - bRet &= check( - !xLBT->getNullPolyInterface().member.is(), "getNullPolyInterface"); - } - - // any test - bRet = check( performAnyTest( xLBT , aData ) , "any test" ) && bRet; - - // sequence of call test - bRet = check( performSequenceOfCallTest( xLBT ) , "sequence of call test" ) && bRet; - - // recursive call test - bRet = check( performRecursiveCallTest( xLBT ) , "recursive test" ) && bRet; - - bRet = (equals( aData, aRet ) && equals( aData, aRet2 )) && bRet ; - - // multiple inheritance test - bRet &= checkEmpty( - testtools::bridgetest::testMulti(xLBT->getMulti()), "remote multi"); - bRet &= checkEmpty( - xLBT->testMulti(new testtools::bridgetest::Multi), "local multi"); + TestData aRet; + aRet.Hyper = xLBT->getHyper(); + aRet.UHyper = xLBT->getUHyper(); + aRet.Float = xLBT->getFloat(); + aRet.Double = xLBT->getDouble(); + aRet.Byte = xLBT->getByte(); + aRet.Char = xLBT->getChar(); + aRet.Bool = xLBT->getBool(); + aRet.Short = xLBT->getShort(); + aRet.UShort = xLBT->getUShort(); + aRet.Long = xLBT->getLong(); + aRet.ULong = xLBT->getULong(); + aRet.Enum = xLBT->getEnum(); + aRet.String = xLBT->getString(); + aRet.Interface = xLBT->getInterface(); + aRet.Any = xLBT->getAny(); + aRet.Sequence = xLBT->getSequence(); + TestData aRet2(xLBT->getStruct()); + bRet &= check( + equals(aData, aRet) && equals(aData, aRet2), + "struct comparison test"); + { + SmallStruct aIn(1, 2); + SmallStruct aOut(xLBT->echoSmallStruct(aIn)); + bRet &= check( + memcmp(&aIn, &aOut, sizeof(SmallStruct)) == 0, + "small struct test"); + } + { + MediumStruct aIn(1, 2, 3, 4); + MediumStruct aOut(xLBT->echoMediumStruct(aIn)); + bRet &= check( + memcmp(&aIn, &aOut, sizeof(MediumStruct)) == 0, + "medium struct test"); + } + { + BigStruct aIn(1, 2, 3, 4, 5, 6, 7, 8); + BigStruct aOut(xLBT->echoBigStruct(aIn)); + bRet &= check( + memcmp(&aIn, &aOut, sizeof(BigStruct)) == 0, + "big struct test"); + } + { + AllFloats aIn(1.1f, 2.2f, 3.3f, 4.4f); + AllFloats aOut(xLBT->echoAllFloats(aIn)); + bRet &= check( + memcmp(&aIn, &aOut, sizeof(AllFloats)) == 0, + "all floats struct test"); + } + { + sal_Int32 i2 = xLBT->testPPCAlignment(0, 0, 0, 0, 0xBEAF); + bRet &= check(i2 == 0xBEAF, "ppc-style alignment test"); + } + // Test extended attributes that raise exceptions: + try { + xLBT->getRaiseAttr1(); + bRet &= check(false, "getRaiseAttr1 did not throw"); + } catch (RuntimeException &) { + } catch (...) { + bRet &= check(false, "getRaiseAttr1 threw wrong type"); + } + try { + xLBT->setRaiseAttr1(0); + bRet &= check(false, "setRaiseAttr1 did not throw"); + } catch (IllegalArgumentException &) { + } catch (...) { + bRet &= check(false, "setRaiseAttr1 threw wrong type"); + } + try { + xLBT->getRaiseAttr2(); + bRet &= check(false, "getRaiseAttr2 did not throw"); + } catch (IllegalArgumentException &) { + } catch (...) { + bRet &= check(false, "getRaiseAttr2 threw wrong type"); + } + // Test instantiated polymorphic struct types: + { + bRet &= check( + (xLBT->transportPolyBoolean( + TestPolyStruct< sal_Bool >(true)). + member), + "transportPolyBoolean"); + TestPolyStruct< sal_Int64 > tps1(12345); + xLBT->transportPolyHyper(tps1); + bRet &= check(tps1.member == 12345, "transportPolyHyper"); + Sequence< Any > seq(2); + seq[0] <<= static_cast< sal_uInt32 >(33); + seq[1] <<= rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("ABC")); + TestPolyStruct< Sequence< Any > > tps2(seq); + TestPolyStruct< Sequence< Any > > tps3; + xLBT->transportPolySequence(tps2, tps3); + bRet &= check( + tps3.member.getLength() == 2, + "transportPolySequence, length"); + sal_uInt32 v0 = sal_uInt32(); + tps3.member[0] >>= v0; + bRet &= check(v0 == 33, "transportPolySequence, element 0"); + rtl::OUString v1; + tps3.member[1] >>= v1; + bRet &= check( + v1.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ABC")), + "transportPolySequence, element 1"); + bRet &= check( + xLBT->getNullPolyLong().member == 0, "getNullPolyLong"); + bRet &= check( + xLBT->getNullPolyString().member.getLength() == 0, + "getNullPolyString"); + bRet &= check( + xLBT->getNullPolyType().member == Type(), + "getNullPolyType"); + Any nullAny(xLBT->getNullPolyAny().member); + bRet &= check( + (((nullAny.getValueTypeName() == + rtl::OUString( + RTL_CONSTASCII_USTRINGPARAM( + "com.sun.star.uno.XInterface"))) && + !static_cast< Reference< XInterface > const * >( + nullAny.getValue())->is()) + || nullAny == Any()), + "getNullPolyAny"); + bRet &= check( + xLBT->getNullPolySequence().member.getLength() == 0, + "getNullPolySequence"); + bRet &= check( + xLBT->getNullPolyEnum().member == TestEnum_TEST, + "getNullPolyEnum"); + bRet &= check( + xLBT->getNullPolyBadEnum().member == TestBadEnum_M, + "getNullPolyBadEnum"); + bRet &= check( + xLBT->getNullPolyStruct().member.member == 0, + "getNullPolyStruct"); + bRet &= check( + !xLBT->getNullPolyInterface().member.is(), + "getNullPolyInterface"); + } + // Any test: + bRet &= check(performAnyTest(xLBT , aData), "any test"); + // Sequence of call test: + bRet &= check( + performSequenceOfCallTest(xLBT), "sequence of call test"); + // Recursive call test: + bRet &= check(performRecursiveCallTest(xLBT), "recursive test"); + bRet &= check( + equals(aData, aRet) && equals(aData, aRet2), + "recursive test results"); + // Multiple inheritance test: + bRet &= checkEmpty( + testtools::bridgetest::testMulti(xLBT->getMulti()), + "remote multi"); + bRet &= checkEmpty( + xLBT->testMulti(new testtools::bridgetest::Multi), + "local multi"); } - } { - Reference<XBridgeTest2> xBT2(xLBT, UNO_QUERY); - if ( ! xBT2.is()) - return bRet; - - // perform sequence tests (XBridgeTest2) - // create the sequence which are compared with the results - sal_Bool _arBool[] = {sal_True, sal_False, sal_True}; - sal_Unicode _arChar[] = {0x0065, 0x0066, 0x0067}; - sal_Int8 _arByte[] = { 1, 2, -1 }; - sal_Int16 _arShort[] = { -0x8000, 1, 0x7fff }; - sal_uInt16 _arUShort[] = {0 , 1, 0xffff}; - sal_Int32 _arLong[] = {0x80000000, 1, 0x7fffffff}; - sal_uInt32 _arULong[] = {0, 1, 0xffffffff}; - sal_Int64 _arHyper[] = { - SAL_CONST_INT64(0x8000000000000000), 1, - SAL_CONST_INT64(0x7fffffffffffffff)}; - sal_uInt64 _arUHyper[] = {0, 1, SAL_CONST_UINT64(0xffffffffffffffff)}; - float _arFloat[] = {1.1f, 2.2f, 3.3f}; - double _arDouble[] = {1.11, 2.22, 3.33}; - OUString _arString[] = { - OUString(RTL_CONSTASCII_USTRINGPARAM("String 1")), - OUString(RTL_CONSTASCII_USTRINGPARAM("String 2")), - OUString(RTL_CONSTASCII_USTRINGPARAM("String 3")) - }; - - sal_Bool _aBool = sal_True; - sal_Int32 _aInt = 0xbabebabe; - float _aFloat = 3.14f; - Any _any1(&_aBool, getCppuBooleanType()); - Any _any2(&_aInt, getCppuType((sal_Int32*) 0)); - Any _any3(&_aFloat, getCppuType((float*) 0)); - Any _arAny[] = { _any1, _any2, _any3}; - - Reference<XInterface> _arObj[3]; - _arObj[0] = new OWeakObject(); - _arObj[1] = new OWeakObject(); - _arObj[2] = new OWeakObject(); - - TestEnum _arEnum[] = {TestEnum_ONE, TestEnum_TWO, TestEnum_CHECK}; - - TestElement _arStruct[3]; - assign( _arStruct[0], sal_True, '@', 17, 0x1234, 0xfedc, 0x12345678, 0xfedcba98, - SAL_CONST_INT64(0x123456789abcdef0), - SAL_CONST_UINT64(0xfedcba9876543210), - 17.0815f, 3.1415926359, + Reference< XBridgeTest2 > xBT2(xLBT, UNO_QUERY); + if (!xBT2.is()) { + return bRet; + } + // Perform sequence tests (XBridgeTest2); create the sequence which is + // compared with the results: + sal_Bool _arBool[] = { true, false, true }; + sal_Unicode _arChar[] = { 0x0065, 0x0066, 0x0067 }; + sal_Int8 _arByte[] = { 1, 2, -1 }; + sal_Int16 _arShort[] = { -0x8000, 1, 0x7FFF }; + sal_uInt16 _arUShort[] = { 0 , 1, 0xFFFF }; + sal_Int32 _arLong[] = { 0x80000000, 1, 0x7FFFFFFF }; + sal_uInt32 _arULong[] = { 0, 1, 0xFFFFFFFF }; + sal_Int64 _arHyper[] = { + SAL_CONST_INT64(0x8000000000000000), 1, + SAL_CONST_INT64(0x7FFFFFFFFFFFFFFF) }; + sal_uInt64 _arUHyper[] = { 0, 1, SAL_CONST_UINT64(0xFFFFFFFFFFFFFFFF) }; + float _arFloat[] = { 1.1f, 2.2f, 3.3f }; + double _arDouble[] = { 1.11, 2.22, 3.33 }; + OUString _arString[] = { + OUString(RTL_CONSTASCII_USTRINGPARAM("String 1")), + OUString(RTL_CONSTASCII_USTRINGPARAM("String 2")), + OUString(RTL_CONSTASCII_USTRINGPARAM("String 3")) }; + sal_Bool _aBool = true; + sal_Int32 _aInt = 0xBABEBABE; + float _aFloat = 3.14f; + Any _any1(&_aBool, getCppuBooleanType()); + Any _any2(&_aInt, getCppuType((sal_Int32 *) 0)); + Any _any3(&_aFloat, getCppuType((float *) 0)); + Any _arAny[] = { _any1, _any2, _any3 }; + Reference< XInterface > _arObj[3]; + _arObj[0] = new OWeakObject(); + _arObj[1] = new OWeakObject(); + _arObj[2] = new OWeakObject(); + TestEnum _arEnum[] = { TestEnum_ONE, TestEnum_TWO, TestEnum_CHECK }; + TestElement _arStruct[3]; + assign( + _arStruct[0], true, '@', 17, 0x1234, 0xFEDC, 0x12345678, 0xFEDCBA98, + SAL_CONST_INT64(0x123456789ABCDEF0), + SAL_CONST_UINT64(0xFEDCBA9876543210), 17.0815f, 3.1415926359, TestEnum_LOLA, OUSTR(STRING_TEST_CONSTANT), _arObj[0], - Any( &_arObj[0], ::getCppuType( (const Reference<XInterface > *)0 ) ) ); - assign( _arStruct[1], sal_True, 'A', 17, 0x1234, 0xfedc, 0x12345678, 0xfedcba98, - SAL_CONST_INT64(0x123456789abcdef0), - SAL_CONST_UINT64(0xfedcba9876543210), - 17.0815f, 3.1415926359, + Any(&_arObj[0], getCppuType((Reference< XInterface > const *) 0))); + assign( + _arStruct[1], true, 'A', 17, 0x1234, 0xFEDC, 0x12345678, 0xFEDCBA98, + SAL_CONST_INT64(0x123456789ABCDEF0), + SAL_CONST_UINT64(0xFEDCBA9876543210), 17.0815f, 3.1415926359, TestEnum_TWO, OUSTR(STRING_TEST_CONSTANT), _arObj[1], - Any( &_arObj[1], ::getCppuType( (const Reference<XInterface > *)0 ) ) ); - assign( _arStruct[2], sal_True, 'B', 17, 0x1234, 0xfedc, 0x12345678, 0xfedcba98, - SAL_CONST_INT64(0x123456789abcdef0), - SAL_CONST_UINT64(0xfedcba9876543210), - 17.0815f, 3.1415926359, + Any(&_arObj[1], getCppuType((Reference< XInterface > const *) 0))); + assign( + _arStruct[2], true, 'B', 17, 0x1234, 0xFEDC, 0x12345678, 0xFEDCBA98, + SAL_CONST_INT64(0x123456789ABCDEF0), + SAL_CONST_UINT64(0xFEDCBA9876543210), 17.0815f, 3.1415926359, TestEnum_CHECK, OUSTR(STRING_TEST_CONSTANT), _arObj[2], - Any( &_arObj[2], ::getCppuType( (const Reference<XInterface > *)0 ) ) ); - - { - Sequence<sal_Bool> arBool(_arBool, 3); - Sequence<sal_Unicode> arChar( _arChar, 3); - Sequence<sal_Int8> arByte(_arByte, 3); - Sequence<sal_Int16> arShort(_arShort, 3); - Sequence<sal_uInt16> arUShort(_arUShort, 3); - Sequence<sal_Int32> arLong(_arLong, 3); - Sequence<sal_uInt32> arULong(_arULong, 3); - Sequence<sal_Int64> arHyper(_arHyper, 3); - Sequence<sal_uInt64> arUHyper(_arUHyper, 3); - Sequence<float> arFloat(_arFloat, 3); - Sequence<double> arDouble(_arDouble, 3); - Sequence<OUString> arString(_arString, 3); - Sequence<Any> arAny(_arAny, 3); - Sequence<Reference<XInterface> > arObject(_arObj, 3); - Sequence<TestEnum> arEnum(_arEnum, 3); - Sequence<TestElement> arStruct(_arStruct, 3); - Sequence<Sequence<sal_Int32> > _arSeqLong2[3]; - for (int j = 0; j < 3; j++) - { - Sequence<sal_Int32> _arSeqLong[3]; - for (int i = 0; i < 3; i++) - { - _arSeqLong[i] = Sequence<sal_Int32>(_arLong, 3); - } - - _arSeqLong2[j] = Sequence< Sequence<sal_Int32> > (_arSeqLong, 3); - } - - Sequence<Sequence<Sequence<sal_Int32> > > arLong3( _arSeqLong2, 3); - Sequence<Sequence<sal_Int32> > seqSeqRet = xBT2->setDim2(arLong3[0]); - bRet = check( seqSeqRet == arLong3[0], "sequence test") && bRet; - Sequence<Sequence<Sequence<sal_Int32> > > seqSeqRet2 = xBT2->setDim3(arLong3); - bRet = check( seqSeqRet2 == arLong3, "sequence test") && bRet; - Sequence<Any> seqAnyRet = xBT2->setSequenceAny(arAny); - bRet = check( seqAnyRet == arAny, "sequence test") && bRet; - Sequence<sal_Bool> seqBoolRet = xBT2->setSequenceBool(arBool); - bRet = check( seqBoolRet == arBool, "sequence test") && bRet; - Sequence<sal_Int8> seqByteRet = xBT2->setSequenceByte(arByte); - bRet = check( seqByteRet == arByte, "sequence test") && bRet; - Sequence<sal_Unicode> seqCharRet = xBT2->setSequenceChar(arChar); - bRet = check( seqCharRet == arChar, "sequence test") && bRet; - Sequence<sal_Int16> seqShortRet = xBT2->setSequenceShort(arShort); - bRet = check( seqShortRet == arShort, "sequence test") && bRet; - Sequence<sal_Int32> seqLongRet = xBT2->setSequenceLong(arLong); - bRet = check( seqLongRet == arLong, "sequence test") && bRet; - Sequence<sal_Int64> seqHyperRet = xBT2->setSequenceHyper(arHyper); - bRet = check( seqHyperRet == arHyper, "sequence test") && bRet; - Sequence<float> seqFloatRet = xBT2->setSequenceFloat(arFloat); - bRet = check( seqFloatRet == arFloat, "sequence test") && bRet; - Sequence<double> seqDoubleRet = xBT2->setSequenceDouble(arDouble); - bRet = check( seqDoubleRet == arDouble, "sequence test") && bRet; - Sequence<TestEnum> seqEnumRet = xBT2->setSequenceEnum(arEnum); - bRet = check( seqEnumRet == arEnum, "sequence test") && bRet; - Sequence<sal_uInt16> seqUShortRet = xBT2->setSequenceUShort(arUShort); - bRet = check( seqUShortRet == arUShort, "sequence test") && bRet; - Sequence<sal_uInt32> seqULongRet = xBT2->setSequenceULong(arULong); - bRet = check( seqULongRet == arULong, "sequence test") && bRet; - Sequence<sal_uInt64> seqUHyperRet = xBT2->setSequenceUHyper(arUHyper); - bRet = check( seqUHyperRet == arUHyper, "sequence test") && bRet; - Sequence<Reference<XInterface> > seqObjectRet = xBT2->setSequenceXInterface(arObject); - bRet = check( seqObjectRet == arObject, "sequence test") && bRet; - Sequence<OUString> seqStringRet = xBT2->setSequenceString(arString); - bRet = check( seqStringRet == arString, "sequence test") && bRet; - Sequence<TestElement> seqStructRet = xBT2->setSequenceStruct(arStruct); - bRet = check( seqStructRet == arStruct, "sequence test") && bRet; - - Sequence<sal_Bool> arBoolTemp = cloneSequence(arBool); - Sequence<sal_Unicode> arCharTemp = cloneSequence(arChar); - Sequence<sal_Int8> arByteTemp = cloneSequence(arByte); - Sequence<sal_Int16> arShortTemp = cloneSequence(arShort); - Sequence<sal_uInt16> arUShortTemp = cloneSequence(arUShort); - Sequence<sal_Int32> arLongTemp = cloneSequence(arLong); - Sequence<sal_uInt32> arULongTemp = cloneSequence(arULong); - Sequence<sal_Int64> arHyperTemp = cloneSequence(arHyper); - Sequence<sal_uInt64> arUHyperTemp = cloneSequence(arUHyper); - Sequence<float> arFloatTemp = cloneSequence(arFloat); - Sequence<double> arDoubleTemp = cloneSequence(arDouble); - Sequence<TestEnum> arEnumTemp = cloneSequence(arEnum); - Sequence<OUString> arStringTemp = cloneSequence(arString); - Reference<XInterface> _xint; - Sequence<Reference<XInterface> > arObjectTemp = cloneSequence(arObject); - Sequence<Any> arAnyTemp = cloneSequence(arAny); - Sequence<Sequence<sal_Int32> > arLong2Temp(arLong3[0]); - Sequence<Sequence<Sequence<sal_Int32> > > arLong3Temp(arLong3); - - xBT2->setSequencesInOut(arBoolTemp, arCharTemp, arByteTemp, arShortTemp, - arUShortTemp, arLongTemp,arULongTemp, arHyperTemp, - arUHyperTemp, arFloatTemp, arDoubleTemp, - arEnumTemp, arStringTemp, arObjectTemp, arAnyTemp, - arLong2Temp, arLong3Temp); - bRet = check( - arBoolTemp == arBool && - arCharTemp == arChar && - arByteTemp == arByte && - arShortTemp == arShort && - arUShortTemp == arUShort && - arLongTemp == arLong && - arULongTemp == arULong && - arHyperTemp == arHyper && - arUHyperTemp == arUHyper && - arFloatTemp == arFloat && - arDoubleTemp == arDouble && - arEnumTemp == arEnum && - arStringTemp == arString && - arObjectTemp == arObject && - arAnyTemp == arAny && - arLong2Temp == arLong3[0] && - arLong3Temp == arLong3, "sequence test") && bRet; - - Sequence<sal_Bool> arBoolOut; - Sequence<sal_Unicode> arCharOut; - Sequence<sal_Int8> arByteOut; - Sequence<sal_Int16> arShortOut; - Sequence<sal_uInt16> arUShortOut; - Sequence<sal_Int32> arLongOut; - Sequence<sal_uInt32> arULongOut; - Sequence<sal_Int64> arHyperOut; - Sequence<sal_uInt64> arUHyperOut; - Sequence<float> arFloatOut; - Sequence<double> arDoubleOut; - Sequence<TestEnum> arEnumOut; - Sequence<OUString> arStringOut; - Sequence<Reference<XInterface> > arObjectOut; - Sequence<Any> arAnyOut; - Sequence<Sequence<sal_Int32> > arLong2Out; - Sequence<Sequence<Sequence<sal_Int32> > > arLong3Out; - xBT2->setSequencesOut(arBoolOut, arCharOut, arByteOut, arShortOut, - arUShortOut, arLongOut,arULongOut, arHyperOut, - arUHyperOut, arFloatOut, arDoubleOut, - arEnumOut, arStringOut, arObjectOut, arAnyOut, - arLong2Out, arLong3Out); - bRet = check( - arBoolOut == arBool && - arCharOut == arChar && - arByteOut == arByte && - arShortOut == arShort && - arUShortOut == arUShort && - arLongOut == arLong && - arULongOut == arULong && - arHyperOut == arHyper && - arUHyperOut == arUHyper && - arFloatOut == arFloat && - arDoubleOut == arDouble && - arEnumOut == arEnum && - arStringOut == arString && - arObjectOut == arObject && - arAnyOut == arAny && - arLong2Out == arLong3[0] && - arLong3Out == arLong3, "sequence test") && bRet; - } - { - //test with empty sequences - Sequence<Sequence<sal_Int32> > arLong2; - Sequence<Sequence<sal_Int32> > seqSeqRet = xBT2->setDim2(arLong2); - bRet = check( seqSeqRet == arLong2, "sequence test") && bRet; - Sequence<Sequence<Sequence<sal_Int32> > > arLong3; - Sequence<Sequence<Sequence<sal_Int32> > > seqSeqRet2 = xBT2->setDim3( - arLong3); - bRet = check( seqSeqRet2 == arLong3, "sequence test") && bRet; - Sequence<Any> arAny; - Sequence<Any> seqAnyRet = xBT2->setSequenceAny(arAny); - bRet = check( seqAnyRet == arAny, "sequence test") && bRet; - Sequence<sal_Bool> arBool; - Sequence<sal_Bool> seqBoolRet = xBT2->setSequenceBool(arBool); - bRet = check( seqBoolRet == arBool, "sequence test") && bRet; - Sequence<sal_Int8> arByte; - Sequence<sal_Int8> seqByteRet = xBT2->setSequenceByte(arByte); - bRet = check( seqByteRet == arByte, "sequence test") && bRet; - Sequence<sal_Unicode> arChar; - Sequence<sal_Unicode> seqCharRet = xBT2->setSequenceChar(arChar); - bRet = check( seqCharRet == arChar, "sequence test") && bRet; - Sequence<sal_Int16> arShort; - Sequence<sal_Int16> seqShortRet = xBT2->setSequenceShort(arShort); - bRet = check( seqShortRet == arShort, "sequence test") && bRet; - Sequence<sal_Int32> arLong; - Sequence<sal_Int32> seqLongRet = xBT2->setSequenceLong(arLong); - bRet = check( seqLongRet == arLong, "sequence test") && bRet; - Sequence<sal_Int64> arHyper; - Sequence<sal_Int64> seqHyperRet = xBT2->setSequenceHyper(arHyper); - bRet = check( seqHyperRet == arHyper, "sequence test") && bRet; - Sequence<float> arFloat; - Sequence<float> seqFloatRet = xBT2->setSequenceFloat(arFloat); - bRet = check( seqFloatRet == arFloat, "sequence test") && bRet; - Sequence<double> arDouble; - Sequence<double> seqDoubleRet = xBT2->setSequenceDouble(arDouble); - bRet = check( seqDoubleRet == arDouble, "sequence test") && bRet; - Sequence<TestEnum> arEnum; - Sequence<TestEnum> seqEnumRet = xBT2->setSequenceEnum(arEnum); - bRet = check( seqEnumRet == arEnum, "sequence test") && bRet; - Sequence<sal_uInt16> arUShort; - Sequence<sal_uInt16> seqUShortRet = xBT2->setSequenceUShort(arUShort); - bRet = check( seqUShortRet == arUShort, "sequence test") && bRet; - Sequence<sal_uInt32> arULong; - Sequence<sal_uInt32> seqULongRet = xBT2->setSequenceULong(arULong); - bRet = check( seqULongRet == arULong, "sequence test") && bRet; - Sequence<sal_uInt64> arUHyper; - Sequence<sal_uInt64> seqUHyperRet = xBT2->setSequenceUHyper(arUHyper); - bRet = check( seqUHyperRet == arUHyper, "sequence test") && bRet; - Sequence<Reference<XInterface> > arObject; - Sequence<Reference<XInterface> > seqObjectRet = - xBT2->setSequenceXInterface(arObject); - bRet = check( seqObjectRet == arObject, "sequence test") && bRet; - Sequence<OUString> arString; - Sequence<OUString> seqStringRet = xBT2->setSequenceString(arString); - bRet = check( seqStringRet == arString, "sequence test") && bRet; - Sequence<TestElement> arStruct; - Sequence<TestElement> seqStructRet = xBT2->setSequenceStruct(arStruct); - bRet = check( seqStructRet == arStruct, "sequence test") && bRet; - } - // Issue #i60341# shows that the most interesting case is were Java calls - // the constructors; however, since this client is currently not available - // in Java, while the server is, the logic is reversed here: - try { - xBT2->testConstructorsService(xContext); - } catch (BadConstructorArguments &) { - bRet = false; - } - if (!noCurrentContext) { - if (!(new testtools::bridgetest::CurrentContextChecker)->perform( - xBT2->getCurrentContextChecker(), 0, 1)) + Any(&_arObj[2], getCppuType((Reference< XInterface > const *) 0))); { - bRet = false; + Sequence<sal_Bool> arBool(_arBool, 3); + Sequence<sal_Unicode> arChar( _arChar, 3); + Sequence<sal_Int8> arByte(_arByte, 3); + Sequence<sal_Int16> arShort(_arShort, 3); + Sequence<sal_uInt16> arUShort(_arUShort, 3); + Sequence<sal_Int32> arLong(_arLong, 3); + Sequence<sal_uInt32> arULong(_arULong, 3); + Sequence<sal_Int64> arHyper(_arHyper, 3); + Sequence<sal_uInt64> arUHyper(_arUHyper, 3); + Sequence<float> arFloat(_arFloat, 3); + Sequence<double> arDouble(_arDouble, 3); + Sequence<OUString> arString(_arString, 3); + Sequence<Any> arAny(_arAny, 3); + Sequence<Reference<XInterface> > arObject(_arObj, 3); + Sequence<TestEnum> arEnum(_arEnum, 3); + Sequence<TestElement> arStruct(_arStruct, 3); + Sequence<Sequence<sal_Int32> > _arSeqLong2[3]; + for (int j = 0; j != 3; ++j) { + Sequence< sal_Int32 > _arSeqLong[3]; + for (int i = 0; i != 3; ++i) { + _arSeqLong[i] = Sequence< sal_Int32 >(_arLong, 3); + } + _arSeqLong2[j] = Sequence< Sequence< sal_Int32 > >( + _arSeqLong, 3); + } + Sequence< Sequence< Sequence< sal_Int32> > > arLong3( + _arSeqLong2, 3); + Sequence< Sequence< sal_Int32 > > seqSeqRet( + xBT2->setDim2(arLong3[0])); + bRet &= check(seqSeqRet == arLong3[0], "sequence test"); + Sequence< Sequence< Sequence< sal_Int32 > > > seqSeqRet2( + xBT2->setDim3(arLong3)); + bRet &= check(seqSeqRet2 == arLong3, "sequence test"); + Sequence< Any > seqAnyRet(xBT2->setSequenceAny(arAny)); + bRet &= check(seqAnyRet == arAny, "sequence test"); + Sequence< sal_Bool > seqBoolRet(xBT2->setSequenceBool(arBool)); + bRet &= check(seqBoolRet == arBool, "sequence test"); + Sequence< sal_Int8 > seqByteRet(xBT2->setSequenceByte(arByte)); + bRet &= check(seqByteRet == arByte, "sequence test"); + Sequence< sal_Unicode > seqCharRet(xBT2->setSequenceChar(arChar)); + bRet &= check(seqCharRet == arChar, "sequence test"); + Sequence< sal_Int16 > seqShortRet(xBT2->setSequenceShort(arShort)); + bRet &= check(seqShortRet == arShort, "sequence test"); + Sequence< sal_Int32 > seqLongRet(xBT2->setSequenceLong(arLong)); + bRet &= check(seqLongRet == arLong, "sequence test"); + Sequence< sal_Int64 > seqHyperRet(xBT2->setSequenceHyper(arHyper)); + bRet &= check(seqHyperRet == arHyper, "sequence test"); + Sequence< float > seqFloatRet(xBT2->setSequenceFloat(arFloat)); + bRet &= check(seqFloatRet == arFloat, "sequence test"); + Sequence< double > seqDoubleRet(xBT2->setSequenceDouble(arDouble)); + bRet &= check(seqDoubleRet == arDouble, "sequence test"); + Sequence< TestEnum > seqEnumRet(xBT2->setSequenceEnum(arEnum)); + bRet &= check(seqEnumRet == arEnum, "sequence test"); + Sequence< sal_uInt16 > seqUShortRet( + xBT2->setSequenceUShort(arUShort)); + bRet &= check(seqUShortRet == arUShort, "sequence test"); + Sequence< sal_uInt32 > seqULongRet(xBT2->setSequenceULong(arULong)); + bRet &= check(seqULongRet == arULong, "sequence test"); + Sequence< sal_uInt64 > seqUHyperRet( + xBT2->setSequenceUHyper(arUHyper)); + bRet &= check(seqUHyperRet == arUHyper, "sequence test"); + Sequence< Reference< XInterface > > seqObjectRet( + xBT2->setSequenceXInterface(arObject)); + bRet &= check(seqObjectRet == arObject, "sequence test"); + Sequence< OUString > seqStringRet( + xBT2->setSequenceString(arString)); + bRet &= check(seqStringRet == arString, "sequence test"); + Sequence< TestElement > seqStructRet( + xBT2->setSequenceStruct(arStruct)); + bRet &= check(seqStructRet == arStruct, "sequence test"); + Sequence< sal_Bool > arBoolTemp(cloneSequence(arBool)); + Sequence< sal_Unicode > arCharTemp(cloneSequence(arChar)); + Sequence< sal_Int8 > arByteTemp(cloneSequence(arByte)); + Sequence< sal_Int16 > arShortTemp(cloneSequence(arShort)); + Sequence< sal_uInt16 > arUShortTemp(cloneSequence(arUShort)); + Sequence< sal_Int32 > arLongTemp(cloneSequence(arLong)); + Sequence< sal_uInt32 > arULongTemp(cloneSequence(arULong)); + Sequence< sal_Int64 > arHyperTemp(cloneSequence(arHyper)); + Sequence< sal_uInt64 > arUHyperTemp(cloneSequence(arUHyper)); + Sequence< float > arFloatTemp(cloneSequence(arFloat)); + Sequence< double > arDoubleTemp(cloneSequence(arDouble)); + Sequence< TestEnum > arEnumTemp(cloneSequence(arEnum)); + Sequence< OUString > arStringTemp(cloneSequence(arString)); + Sequence< Reference< XInterface > > arObjectTemp( + cloneSequence(arObject)); + Sequence< Any > arAnyTemp(cloneSequence(arAny)); + Sequence< Sequence< sal_Int32 > > arLong2Temp(arLong3[0]); + Sequence< Sequence< Sequence< sal_Int32 > > > arLong3Temp(arLong3); + xBT2->setSequencesInOut( + arBoolTemp, arCharTemp, arByteTemp, arShortTemp, arUShortTemp, + arLongTemp,arULongTemp, arHyperTemp, arUHyperTemp, arFloatTemp, + arDoubleTemp, arEnumTemp, arStringTemp, arObjectTemp, arAnyTemp, + arLong2Temp, arLong3Temp); + bRet &= check( + (arBoolTemp == arBool && arCharTemp == arChar && + arByteTemp == arByte && arShortTemp == arShort && + arUShortTemp == arUShort && arLongTemp == arLong && + arULongTemp == arULong && arHyperTemp == arHyper && + arUHyperTemp == arUHyper && arFloatTemp == arFloat && + arDoubleTemp == arDouble && arEnumTemp == arEnum && + arStringTemp == arString && arObjectTemp == arObject && + arAnyTemp == arAny && arLong2Temp == arLong3[0] && + arLong3Temp == arLong3), + "sequence test"); + Sequence< sal_Bool > arBoolOut; + Sequence< sal_Unicode > arCharOut; + Sequence< sal_Int8 > arByteOut; + Sequence< sal_Int16 > arShortOut; + Sequence< sal_uInt16 > arUShortOut; + Sequence< sal_Int32 > arLongOut; + Sequence< sal_uInt32 > arULongOut; + Sequence< sal_Int64 > arHyperOut; + Sequence< sal_uInt64 > arUHyperOut; + Sequence< float > arFloatOut; + Sequence< double > arDoubleOut; + Sequence< TestEnum > arEnumOut; + Sequence< OUString > arStringOut; + Sequence< Reference< XInterface > > arObjectOut; + Sequence< Any > arAnyOut; + Sequence< Sequence< sal_Int32 > > arLong2Out; + Sequence< Sequence< Sequence< sal_Int32 > > > arLong3Out; + xBT2->setSequencesOut( + arBoolOut, arCharOut, arByteOut, arShortOut, arUShortOut, + arLongOut,arULongOut, arHyperOut, arUHyperOut, arFloatOut, + arDoubleOut, arEnumOut, arStringOut, arObjectOut, arAnyOut, + arLong2Out, arLong3Out); + bRet &= check( + (arBoolOut == arBool && arCharOut == arChar && + arByteOut == arByte && arShortOut == arShort && + arUShortOut == arUShort && arLongOut == arLong && + arULongOut == arULong && arHyperOut == arHyper && + arUHyperOut == arUHyper && arFloatOut == arFloat && + arDoubleOut == arDouble && arEnumOut == arEnum && + arStringOut == arString && arObjectOut == arObject && + arAnyOut == arAny && arLong2Out == arLong3[0] && + arLong3Out == arLong3), + "sequence test"); } - if (!(new testtools::bridgetest::CurrentContextChecker)->perform( - xBT2->getCurrentContextChecker(), 0, 2)) { - bRet = false; + // Test with empty sequences: + Sequence< Sequence< sal_Int32 > > arLong2; + Sequence< Sequence< sal_Int32 > > seqSeqRet(xBT2->setDim2(arLong2)); + bRet &= check(seqSeqRet == arLong2, "sequence test"); + Sequence< Sequence< Sequence< sal_Int32 > > > arLong3; + Sequence< Sequence< Sequence< sal_Int32 > > > seqSeqRet2( + xBT2->setDim3(arLong3)); + bRet &= check(seqSeqRet2 == arLong3, "sequence test"); + Sequence< Any > arAny; + Sequence< Any > seqAnyRet(xBT2->setSequenceAny(arAny)); + bRet &= check(seqAnyRet == arAny, "sequence test"); + Sequence< sal_Bool > arBool; + Sequence< sal_Bool > seqBoolRet(xBT2->setSequenceBool(arBool)); + bRet &= check(seqBoolRet == arBool, "sequence test"); + Sequence< sal_Int8 > arByte; + Sequence< sal_Int8 > seqByteRet(xBT2->setSequenceByte(arByte)); + bRet &= check(seqByteRet == arByte, "sequence test"); + Sequence< sal_Unicode > arChar; + Sequence< sal_Unicode > seqCharRet(xBT2->setSequenceChar(arChar)); + bRet &= check(seqCharRet == arChar, "sequence test"); + Sequence< sal_Int16 > arShort; + Sequence< sal_Int16 > seqShortRet(xBT2->setSequenceShort(arShort)); + bRet &= check(seqShortRet == arShort, "sequence test"); + Sequence< sal_Int32 > arLong; + Sequence< sal_Int32 > seqLongRet(xBT2->setSequenceLong(arLong)); + bRet &= check(seqLongRet == arLong, "sequence test"); + Sequence< sal_Int64 > arHyper; + Sequence< sal_Int64 > seqHyperRet(xBT2->setSequenceHyper(arHyper)); + bRet &= check(seqHyperRet == arHyper, "sequence test"); + Sequence< float > arFloat; + Sequence< float > seqFloatRet(xBT2->setSequenceFloat(arFloat)); + bRet &= check(seqFloatRet == arFloat, "sequence test"); + Sequence< double > arDouble; + Sequence< double > seqDoubleRet(xBT2->setSequenceDouble(arDouble)); + bRet &= check(seqDoubleRet == arDouble, "sequence test"); + Sequence< TestEnum > arEnum; + Sequence< TestEnum > seqEnumRet(xBT2->setSequenceEnum(arEnum)); + bRet &= check(seqEnumRet == arEnum, "sequence test"); + Sequence< sal_uInt16 > arUShort; + Sequence< sal_uInt16 > seqUShortRet( + xBT2->setSequenceUShort(arUShort)); + bRet &= check(seqUShortRet == arUShort, "sequence test"); + Sequence< sal_uInt32 > arULong; + Sequence< sal_uInt32 > seqULongRet(xBT2->setSequenceULong(arULong)); + bRet &= check(seqULongRet == arULong, "sequence test"); + Sequence< sal_uInt64 > arUHyper; + Sequence< sal_uInt64 > seqUHyperRet( + xBT2->setSequenceUHyper(arUHyper)); + bRet &= check(seqUHyperRet == arUHyper, "sequence test"); + Sequence< Reference< XInterface > > arObject; + Sequence< Reference< XInterface > > seqObjectRet( + xBT2->setSequenceXInterface(arObject)); + bRet &= check(seqObjectRet == arObject, "sequence test"); + Sequence< OUString > arString; + Sequence< OUString > seqStringRet( + xBT2->setSequenceString(arString)); + bRet &= check(seqStringRet == arString, "sequence test"); + Sequence< TestElement > arStruct; + Sequence< TestElement > seqStructRet( + xBT2->setSequenceStruct(arStruct)); + bRet &= check(seqStructRet == arStruct, "sequence test"); } - if (!(new testtools::bridgetest::CurrentContextChecker)->perform( - xBT2->getCurrentContextChecker(), 1, 2)) - { + // Issue #i60341# shows that the most interesting case is were Java + // calls the constructors; however, since this client is currently not + // available in Java, while the server is, the logic is reversed here: + try { + xBT2->testConstructorsService(xContext); + } catch (BadConstructorArguments &) { bRet = false; } - if (!(new testtools::bridgetest::CurrentContextChecker)->perform( - xBT2->getCurrentContextChecker(), 1, 3)) - { - bRet = false; + if (!noCurrentContext) { + if (!(new testtools::bridgetest::CurrentContextChecker)->perform( + xBT2->getCurrentContextChecker(), 0, 1)) + { + bRet = false; + } + if (!(new testtools::bridgetest::CurrentContextChecker)->perform( + xBT2->getCurrentContextChecker(), 0, 2)) + { + bRet = false; + } + if (!(new testtools::bridgetest::CurrentContextChecker)->perform( + xBT2->getCurrentContextChecker(), 1, 2)) + { + bRet = false; + } + if (!(new testtools::bridgetest::CurrentContextChecker)->perform( + xBT2->getCurrentContextChecker(), 1, 3)) + { + bRet = false; + } } } - } return bRet; } + static sal_Bool raiseOnewayException( const Reference < XBridgeTest > & xLBT ) { sal_Bool bReturn = sal_True; @@ -1247,7 +1212,6 @@ sal_Int32 TestBridgeImpl::run( const Sequence< OUString > & rArgs ) bRet = check( raiseException( xLBT ) , "exception test" )&& bRet; bRet = check( raiseOnewayException( xLBT ), "oneway exception test" ) && bRet; - bRet = performQueryForUnknownType( xLBT ) && bRet; if (! bRet) { throw RuntimeException( diff --git a/testtools/source/bridgetest/cppobj.cxx b/testtools/source/bridgetest/cppobj.cxx index 4c8d690aab06..d4d06cb39a3f 100644 --- a/testtools/source/bridgetest/cppobj.cxx +++ b/testtools/source/bridgetest/cppobj.cxx @@ -159,7 +159,7 @@ public: {} virtual ~Test_Impl() { - OSL_TRACE( "> scalar Test_Impl dtor <\n" ); + OSL_TRACE( "> scalar Test_Impl dtor <" ); } void SAL_CALL acquire() throw () diff --git a/testtools/source/bridgetest/currentcontextchecker.cxx b/testtools/source/bridgetest/currentcontextchecker.cxx index 3da2d74e9d2b..e7e4ec858b7b 100644 --- a/testtools/source/bridgetest/currentcontextchecker.cxx +++ b/testtools/source/bridgetest/currentcontextchecker.cxx @@ -50,8 +50,8 @@ namespace { namespace css = ::com::sun::star; -static char const key[] = "testtools.bridgetest.Key"; -static char const value[] = "good"; +static char const KEY[] = "testtools.bridgetest.Key"; +static char const VALUE[] = "good"; class CurrentContext: public ::osl::DebugBase< CurrentContext >, @@ -77,8 +77,8 @@ CurrentContext::~CurrentContext() {} css::uno::Any CurrentContext::getValueByName(::rtl::OUString const & Name) throw (css::uno::RuntimeException) { - return Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(key)) - ? css::uno::makeAny(::rtl::OUString::createFromAscii(value)) + return Name.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(KEY)) + ? css::uno::makeAny(::rtl::OUString::createFromAscii(VALUE)) : css::uno::Any(); } @@ -115,13 +115,13 @@ bool testtools::bridgetest::CurrentContextChecker::performCheck( return false; } css::uno::Any a( - context->getValueByName(::rtl::OUString::createFromAscii(key))); + context->getValueByName(::rtl::OUString::createFromAscii(KEY))); if (a.getValueType() != ::cppu::UnoType< ::rtl::OUString >::get()) { return false; } ::rtl::OUString s; OSL_VERIFY(a >>= s); - return s.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(value)); + return s.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM(VALUE)); } else { return other->perform( this, setSteps >= 0 ? setSteps - 1 : -1, checkSteps - 1); |