############################################################################ # # Copyright (C) 2016 The Qt Company Ltd. # Contact: https://www.qt.io/licensing/ # # This file is part of Qt Creator. # # Commercial License Usage # Licensees holding valid commercial Qt licenses may use this file in # accordance with the commercial license agreement provided with the # Software or, alternatively, in accordance with the terms contained in # a written agreement between you and The Qt Company. For licensing terms # and conditions see https://www.qt.io/terms-conditions. For further # information use the contact form at https://www.qt.io/contact-us. # # GNU General Public License Usage # Alternatively, this file may be used under the terms of the GNU # General Public License version 3 as published by the Free Software # Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT # included in the packaging of this file. Please review the following # information to ensure the GNU General Public License requirements will # be met: https://www.gnu.org/licenses/gpl-3.0.html. # ############################################################################ 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()