# Copyright (C) 2016 The Qt Company Ltd. # SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0 source("../shared/qmls.py") source("../../shared/suites_qtta.py") # go to proper line, make backup, type needed text def __beginTestSuggestions__(editorArea, lineText, textToType): # make source code backup to clipboard type(editorArea, "") type(editorArea, "") # place cursor to proper position and start typing if not placeCursorToLine(editorArea, lineText): return False type(editorArea, "") type(editorArea, textToType) return True # verify whether suggestions makes sense for typed textToType def verifySuggestions(textToType): popup = findObject(":popupFrame_Proposal_QListView") model = popup.model() for text in dumpItems(model): test.verify(textToType.lower() in text.lower(), "Checking whether suggestion '%s' makes sense for typed '%s'" % (text, textToType)) # restore source code from clipboard backup def __endTestSuggestions__(editorArea): type(editorArea, "") type(editorArea, "") def testSuggestionsAuto(lineText, textToType, expectedText, keyToUseSuggestion): # get editor editorArea = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget") # go to proper line, make backup, type needed text if not __beginTestSuggestions__(editorArea, lineText, textToType): return False # check if suggestions are shown if not test.verify(checkIfObjectExists(":popupFrame_Proposal_QListView"), "Verifying if suggestions in automatic mode are shown."): __endTestSuggestions__(editorArea) return False # verify proposed suggestions verifySuggestions(textToType) # test if suggestion can be selected with keyToUseSuggestion type(findObject(":popupFrame_Proposal_QListView"), keyToUseSuggestion) # get text which was written by usage of suggestion typedText = str(lineUnderCursor(editorArea)).strip() # verify if expected text is written test.compare(typedText, expectedText, "Verifying automatic suggestions usage with: " + keyToUseSuggestion + ", for text: " + textToType) __endTestSuggestions__(editorArea) return True def testSuggestionsManual(lineText, textToType, expectedText): # get editor editorArea = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget") # go to proper line, make backup, type needed text if not __beginTestSuggestions__(editorArea, lineText, textToType): return False # wait if automatic popup displayed - if yes then fail, because we are in manual mode if not test.verify(checkIfObjectExists(":popupFrame_Proposal_QListView", False), "Verifying if suggestions in manual mode are not automatically shown"): __endTestSuggestions__(editorArea) return False # test if suggestion can be invoked manually if platform.system() == "Darwin": type(editorArea, "") else: type(editorArea, "") # check if suggestions are shown if not test.verify(checkIfObjectExists(":popupFrame_Proposal_QListView"), "Verifying if suggestions in manual mode are shown manually"): __endTestSuggestions__(editorArea) return False # verify proposed suggestions verifySuggestions(textToType) # test if suggestion can be used type(findObject(":popupFrame_Proposal_QListView"), "") # get text which was written by usage of suggestion typedText = str(lineUnderCursor(editorArea)).strip() # verify if expected text is written test.compare(typedText, expectedText, "Verifying manual suggestions usage for text: " + textToType) __endTestSuggestions__(editorArea) return True def main(): if not startQtCreatorWithNewAppAtQMLEditor(tempDir(), "SampleApp"): return # add basic TextEdit item to check it afterwards codelines = ['TextEdit {', 'text: "Enter something"', 'anchors.top: parent.top', 'anchors.horizontalCenter: parent.horizontalCenter', 'anchors.topMargin: 20'] editor = waitForObject(":Qt Creator_QmlJSEditor::QmlJSTextEditorWidget") if not addTestableCodeAfterLine(editor, 'title: qsTr("Hello World")', codelines): saveAndExit() return # test "color: " suggestion usage with Enter key if not testSuggestionsAuto("TextEdit {", "col", "color:", ""): saveAndExit() return # test "color: " suggestion usage with Tab key if not testSuggestionsAuto("TextEdit {", "col", "color:", ""): saveAndExit() return # test automatic insertion (prerequisite: only one suggestion available) shortcutToSuggestions = "" if platform.system() == "Darwin": shortcutToSuggestions = "" if not testSuggestionsAuto("TextEdit {", "online", "onLineCountChanged:", shortcutToSuggestions): saveAndExit() return # change settings to manual insertion of suggestions changeAutocompleteToManual() # test manual suggestions testSuggestionsManual("TextEdit {", "col", "color:") # exit qt creator saveAndExit()