| /**************************************************************************** |
| ** |
| ** Copyright (C) 2017 The Qt Company Ltd. |
| ** Contact: https://www.qt.io/licensing/ |
| ** |
| ** This file is part of the test suite of the Qt Toolkit. |
| ** |
| ** $QT_BEGIN_LICENSE:BSD$ |
| ** 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. |
| ** |
| ** BSD License Usage |
| ** Alternatively, you may use this file under the terms of the BSD license |
| ** as follows: |
| ** |
| ** "Redistribution and use in source and binary forms, with or without |
| ** modification, are permitted provided that the following conditions are |
| ** met: |
| ** * Redistributions of source code must retain the above copyright |
| ** notice, this list of conditions and the following disclaimer. |
| ** * Redistributions in binary form must reproduce the above copyright |
| ** notice, this list of conditions and the following disclaimer in |
| ** the documentation and/or other materials provided with the |
| ** distribution. |
| ** * Neither the name of The Qt Company Ltd nor the names of its |
| ** contributors may be used to endorse or promote products derived |
| ** from this software without specific prior written permission. |
| ** |
| ** |
| ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
| ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT |
| ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR |
| ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT |
| ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, |
| ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT |
| ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, |
| ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY |
| ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." |
| ** |
| ** $QT_END_LICENSE$ |
| ** |
| ****************************************************************************/ |
| |
| import QtQuick 2.0 |
| import QtTest 1.1 |
| |
| Item { |
| id: top |
| |
| TextInput { |
| id: emptyText |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtfamily |
| text: "Hello world!" |
| font.family: "Courier" |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtcolor |
| text: "Hello world!" |
| color: "red" |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtentry |
| text: "" |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtfunctions |
| text: "The quick brown fox" |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtclipboard |
| text: "The quick brown fox jumped over the lazy dog" |
| height: 20 |
| width: 50 |
| } |
| |
| TextInput { |
| id: txtintvalidator |
| text: "" |
| height: 20 |
| width: 50 |
| validator: IntValidator { id: iv; top: 20; bottom: 10; } |
| } |
| |
| TextInput { |
| id: txtdoublevalidator |
| text: "" |
| height: 20 |
| width: 50 |
| validator: DoubleValidator { id: dv; top: 2.0; bottom: 1.0; } |
| } |
| |
| TextInput { |
| id: txtregexpvalidator |
| text: "" |
| height: 20 |
| width: 50 |
| validator: RegExpValidator { id: rv; regExp: /[a-z]{3}/ } |
| } |
| |
| |
| |
| TestCase { |
| name: "TextInput" |
| when: windowShown |
| |
| function test_empty() { |
| compare(emptyText.text, "") |
| } |
| |
| function test_family() { |
| compare(txtfamily.font.family, "Courier") |
| txtfamily.font.family = "Helvetica"; |
| compare(txtfamily.font.family, "Helvetica") |
| } |
| |
| function test_color() { |
| compare(txtcolor.color, "#ff0000") |
| txtcolor.color = "blue"; |
| compare(txtcolor.color, "#0000ff") |
| } |
| |
| function test_textentry() { |
| txtentry.focus = true; |
| compare(txtentry.text, "") |
| keyClick(Qt.Key_H) |
| keyClick(Qt.Key_E) |
| keyClick(Qt.Key_L) |
| keyClick(Qt.Key_L) |
| keyClick(Qt.Key_O) |
| keyClick(Qt.Key_Space) |
| keyClick(Qt.Key_W) |
| keyClick(Qt.Key_O) |
| keyClick(Qt.Key_R) |
| keyClick(Qt.Key_L) |
| keyClick(Qt.Key_D) |
| compare(txtentry.text, "hello world") |
| } |
| |
| function test_select_insert() { |
| compare(txtfunctions.getText(4,9), "quick") |
| txtfunctions.select(4,9); |
| compare(txtfunctions.selectedText, "quick") |
| txtfunctions.insert(4, "very ") |
| compare(txtfunctions.text, "The very quick brown fox") |
| txtfunctions.deselect(); |
| compare(txtfunctions.selectedText, "") |
| txtfunctions.text = "Qt"; |
| txtfunctions.insert(txtfunctions.text.length, " ") |
| compare(txtfunctions.text, "Qt "); |
| txtfunctions.insert(txtfunctions.text.length, "quick") |
| compare(txtfunctions.text, "Qt quick"); |
| txtfunctions.cursorPosition = txtfunctions.text.length; |
| txtfunctions.selectWord(); |
| compare(txtfunctions.selectedText, "quick") |
| txtfunctions.selectAll(); |
| compare(txtfunctions.selectedText, "Qt quick") |
| txtfunctions.deselect(); |
| compare(txtfunctions.selectedText, "") |
| } |
| |
| function test_clipboard() { |
| if (typeof(txtclipboard.copy) !== "function" |
| || typeof(txtclipboard.paste) !== "function" |
| || typeof(txtclipboard.cut) !== "function") { |
| skip("Clipboard is not supported on this platform.") |
| } |
| txtclipboard.select(4,10); |
| txtclipboard.cut(); |
| compare(txtclipboard.text, "The brown fox jumped over the lazy dog") |
| txtclipboard.select(30,35) |
| txtclipboard.paste(); |
| compare(txtclipboard.text, "The brown fox jumped over the quick dog") |
| txtclipboard.text = "Qt "; |
| txtclipboard.cursorPosition = txtclipboard.text.length; |
| txtclipboard.paste(); |
| compare(txtclipboard.text, "Qt quick "); |
| txtclipboard.cursorPosition = txtclipboard.text.length-1; |
| txtclipboard.selectWord(); |
| compare(txtclipboard.selectedText, "quick") |
| txtclipboard.copy(); |
| txtclipboard.cursorPosition = txtclipboard.text.length; |
| txtclipboard.paste(); |
| compare(txtclipboard.text, "Qt quick quick"); |
| } |
| |
| function test_intvalidators_data() { |
| return [ |
| { |
| tag: "toolow", |
| testnumber: "5", |
| acceptable: false |
| }, |
| { |
| tag: "toohigh", |
| testnumber: "50", |
| acceptable: false |
| }, |
| { |
| tag: "onlowerbounds", |
| testnumber: "10", |
| acceptable: true |
| }, |
| { |
| tag: "onupperbounds", |
| testnumber: "20", |
| acceptable: true |
| }, |
| { |
| tag: "middle", |
| testnumber: "15", |
| acceptable: true |
| }, |
| { |
| tag: "negativemiddle", |
| testnumber: "-15", |
| acceptable: false |
| } |
| ] |
| |
| } |
| |
| function test_intvalidators(row) { |
| compare(txtintvalidator.validator.top, 20) |
| compare(txtintvalidator.validator.bottom, 10) |
| txtintvalidator.text = row.testnumber; |
| compare(txtintvalidator.acceptableInput, row.acceptable) |
| } |
| |
| function test_doublevalidators_data() { |
| return [ |
| { |
| tag: "toolow", |
| testnumber: "0.5", |
| acceptable: false |
| }, |
| { |
| tag: "toohigh", |
| testnumber: "2.5", |
| acceptable: false |
| }, |
| { |
| tag: "onlowerbounds", |
| testnumber: "1.0", |
| acceptable: true |
| }, |
| { |
| tag: "onupperbounds", |
| testnumber: "2.0", |
| acceptable: true |
| }, |
| { |
| tag: "middle", |
| testnumber: "1.5", |
| acceptable: true |
| }, |
| { |
| tag: "negativemiddle", |
| testnumber: "-1.5", |
| acceptable: false |
| } |
| ] |
| |
| } |
| |
| function test_doublevalidators(row) { |
| txtdoublevalidator.validator.locale = "C" |
| compare(txtdoublevalidator.validator.top, 2.0) |
| compare(txtdoublevalidator.validator.bottom, 1.0) |
| txtdoublevalidator.text = row.testnumber; |
| compare(txtdoublevalidator.acceptableInput, row.acceptable) |
| } |
| |
| function test_regexpvalidators_data() { |
| return [ |
| { |
| tag: "toolow", |
| testtext: "ab", |
| acceptable: false |
| }, |
| { |
| tag: "toohigh", |
| testtext: "abcd", |
| acceptable: false |
| }, |
| { |
| tag: "acceptable", |
| testtext: "abc", |
| acceptable: true |
| } |
| ] |
| |
| } |
| |
| function test_regexpvalidators(row) { |
| compare(txtregexpvalidator.validator.regExp, /[a-z]{3}/) |
| txtregexpvalidator.text = row.testtext; |
| compare(txtregexpvalidator.acceptableInput, row.acceptable) |
| } |
| } |
| } |