Change copyrights from Nokia to Digia
[profile/ivi/qtdeclarative.git] / tests / auto / qmltest / textinput / tst_textinput.qml
1 /****************************************************************************
2 **
3 ** Copyright (C) 2012 Digia Plc and/or its subsidiary(-ies).
4 ** Contact: http://www.qt-project.org/legal
5 **
6 ** This file is part of the test suite of the Qt Toolkit.
7 **
8 ** $QT_BEGIN_LICENSE:BSD$
9 ** You may use this file under the terms of the BSD license as follows:
10 **
11 ** "Redistribution and use in source and binary forms, with or without
12 ** modification, are permitted provided that the following conditions are
13 ** met:
14 **   * Redistributions of source code must retain the above copyright
15 **     notice, this list of conditions and the following disclaimer.
16 **   * Redistributions in binary form must reproduce the above copyright
17 **     notice, this list of conditions and the following disclaimer in
18 **     the documentation and/or other materials provided with the
19 **     distribution.
20 **   * Neither the name of Digia Plc and its Subsidiary(-ies) nor the names
21 **     of its contributors may be used to endorse or promote products derived
22 **     from this software without specific prior written permission.
23 **
24 **
25 ** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
26 ** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
27 ** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
28 ** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
29 ** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
30 ** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
31 ** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
32 ** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
33 ** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
34 ** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
35 ** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
36 **
37 ** $QT_END_LICENSE$
38 **
39 ****************************************************************************/
40
41 import QtQuick 2.0
42 import QtTest 1.0
43
44 Item {
45     id: top
46
47     TextInput {
48         id: emptyText
49         height: 20
50         width: 50
51     }
52
53     TextInput {
54         id: txtfamily
55         text: "Hello world!"
56         font.family: "Courier"
57         height: 20
58         width: 50
59     }
60
61     TextInput {
62         id: txtcolor
63         text: "Hello world!"
64         color: "red"
65         height: 20
66         width: 50
67     }
68
69     TextInput {
70         id: txtentry
71         text: ""
72         height: 20
73         width: 50
74     }
75
76     TextInput {
77         id: txtfunctions
78         text: "The quick brown fox jumped over the lazy dog"
79         height: 20
80         width: 50
81     }
82
83     TextInput {
84         id: txtintvalidator
85         text: ""
86         height: 20
87         width: 50
88         validator: IntValidator { id: iv; top: 20; bottom: 10; }
89     }
90
91     TextInput {
92         id: txtdoublevalidator
93         text: ""
94         height: 20
95         width: 50
96         validator: DoubleValidator { id: dv; top: 2.0; bottom: 1.0; }
97     }
98
99     TextInput {
100         id: txtregexpvalidator
101         text: ""
102         height: 20
103         width: 50
104         validator: RegExpValidator { id: rv; regExp: /[a-z]{3}/ }
105     }
106
107
108
109     TestCase {
110         name: "TextInput"
111         when: windowShown
112
113         function test_empty() {
114             compare(emptyText.text, "")
115         }
116
117         function test_family() {
118             compare(txtfamily.font.family, "Courier")
119             txtfamily.font.family = "Helvetica";
120             compare(txtfamily.font.family, "Helvetica")
121         }
122
123         function test_color() {
124             compare(txtcolor.color, "#ff0000")
125             txtcolor.color = "blue";
126             compare(txtcolor.color, "#0000ff")
127         }
128
129         function test_textentry() {
130             txtentry.focus = true;
131             compare(txtentry.text, "")
132             keyClick(Qt.Key_H)
133             keyClick(Qt.Key_E)
134             keyClick(Qt.Key_L)
135             keyClick(Qt.Key_L)
136             keyClick(Qt.Key_O)
137             keyClick(Qt.Key_Space)
138             keyClick(Qt.Key_W)
139             keyClick(Qt.Key_O)
140             keyClick(Qt.Key_R)
141             keyClick(Qt.Key_L)
142             keyClick(Qt.Key_D)
143             compare(txtentry.text, "hello world")
144         }
145
146         function test_functions() {
147             compare(txtfunctions.getText(4,9), "quick")
148             txtfunctions.select(4,9);
149             compare(txtfunctions.selectedText, "quick")
150             txtfunctions.deselect();
151             compare(txtfunctions.selectedText, "")
152             txtfunctions.select(4,9);
153             txtfunctions.cut();
154             compare(txtfunctions.text, "The  brown fox jumped over the lazy dog")
155             txtfunctions.text = "Qt";
156             txtfunctions.insert(txtfunctions.text.length, " ")
157             compare(txtfunctions.text, "Qt ");
158             txtfunctions.cursorPosition = txtfunctions.text.length;
159             txtfunctions.paste();
160             compare(txtfunctions.text, "Qt quick");
161             txtfunctions.cursorPosition = txtfunctions.text.length;
162             txtfunctions.selectWord();
163             compare(txtfunctions.selectedText, "quick")
164             txtfunctions.copy();
165             txtfunctions.selectAll();
166             compare(txtfunctions.selectedText, "Qt quick")
167             txtfunctions.deselect();
168             compare(txtfunctions.selectedText, "")
169             txtfunctions.paste();
170             compare(txtfunctions.text, "Qt quickquick");
171         }
172
173         function test_intvalidators_data() {
174             return [
175                 {
176                     tag: "toolow",
177                     testnumber: "5",
178                     acceptable: false
179                 },
180                 {
181                     tag: "toohigh",
182                     testnumber: "50",
183                     acceptable: false
184                 },
185                 {
186                     tag: "onlowerbounds",
187                     testnumber: "10",
188                     acceptable: true
189                 },
190                 {
191                     tag: "onupperbounds",
192                     testnumber: "20",
193                     acceptable: true
194                 },
195                 {
196                     tag: "middle",
197                     testnumber: "15",
198                     acceptable: true
199                 },
200                 {
201                     tag: "negativemiddle",
202                     testnumber: "-15",
203                     acceptable: false
204                 }
205             ]
206
207         }
208
209         function test_intvalidators(row) {
210             compare(txtintvalidator.validator.top, 20)
211             compare(txtintvalidator.validator.bottom, 10)
212             txtintvalidator.text = row.testnumber;
213             compare(txtintvalidator.acceptableInput, row.acceptable)
214         }
215
216         function test_doublevalidators_data() {
217             return [
218                 {
219                     tag: "toolow",
220                     testnumber: "0.5",
221                     acceptable: false
222                 },
223                 {
224                     tag: "toohigh",
225                     testnumber: "2.5",
226                     acceptable: false
227                 },
228                 {
229                     tag: "onlowerbounds",
230                     testnumber: "1.0",
231                     acceptable: true
232                 },
233                 {
234                     tag: "onupperbounds",
235                     testnumber: "2.0",
236                     acceptable: true
237                 },
238                 {
239                     tag: "middle",
240                     testnumber: "1.5",
241                     acceptable: true
242                 },
243                 {
244                     tag: "negativemiddle",
245                     testnumber: "-1.5",
246                     acceptable: false
247                 }
248             ]
249
250         }
251
252         function test_doublevalidators(row) {
253             compare(txtdoublevalidator.validator.top, 2.0)
254             compare(txtdoublevalidator.validator.bottom, 1.0)
255             txtdoublevalidator.text = row.testnumber;
256             compare(txtdoublevalidator.acceptableInput, row.acceptable)
257         }
258
259         function test_regexpvalidators_data() {
260             return [
261                 {
262                     tag: "toolow",
263                     testtext: "ab",
264                     acceptable: false
265                 },
266                 {
267                     tag: "toohigh",
268                     testtext: "abcd",
269                     acceptable: false
270                 },
271                 {
272                     tag: "acceptable",
273                     testtext: "abc",
274                     acceptable: true
275                 }
276             ]
277
278         }
279
280         function test_regexpvalidators(row) {
281             compare(txtregexpvalidator.validator.regExp, /[a-z]{3}/)
282             txtregexpvalidator.text = row.testtext;
283             compare(txtregexpvalidator.acceptableInput, row.acceptable)
284         }
285     }
286 }