~sil2100/nux/precise_sru-1

« back to all changes in this revision

Viewing changes to tests/xtest-text-entry-compositionkeys.cpp

  • Committer: Didier Roche
  • Date: 2012-03-12 08:57:27 UTC
  • mfrom: (159.3.35)
  • Revision ID: didier.roche@canonical.com-20120312085727-9fyfwnno545c46uz
New upstream release.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * Copyright 2010 Inalogic Inc.
 
3
 *
 
4
 * This program is free software: you can redistribute it and/or modify it
 
5
 * under the terms of the GNU General Public License version 3, as published
 
6
 * by the  Free Software Foundation.
 
7
 *
 
8
 * This program is distributed in the hope that it will be useful, but
 
9
 * WITHOUT ANY WARRANTY; without even the implied warranties of
 
10
 * MERCHANTABILITY, SATISFACTORY QUALITY or FITNESS FOR A PARTICULAR
 
11
 * PURPOSE.  See the GNU General Public License for more details.
 
12
 *
 
13
 * You should have received a copy of the GNU General Public License
 
14
 * version 3 along with this program.  If not, see
 
15
 * <http://www.gnu.org/licenses/>
 
16
 *
 
17
 * Authored by: Jay Taoko <jaytaoko@inalogic.com>
 
18
 *
 
19
 */
 
20
 
 
21
#include "Nux/Nux.h"
 
22
#include "Nux/WindowThread.h"
 
23
#include "Nux/VLayout.h"
 
24
#include "Nux/TextEntry.h"
 
25
#include "Nux/InputMethodIBus.h"
 
26
#include "Nux/ProgramFramework/ProgramTemplate.h"
 
27
#include "Nux/ProgramFramework/TestView.h"
 
28
#include <X11/extensions/XTest.h>
 
29
#include <X11/keysym.h> 
 
30
#include "nux_automated_test_framework.h"
 
31
 
 
32
class TextTextEntry: public ProgramTemplate
 
33
{
 
34
public:
 
35
  TextTextEntry(const char* program_name, int window_width, int window_height, int program_life_span);
 
36
  ~TextTextEntry();
 
37
 
 
38
  virtual void UserInterfaceSetup();
 
39
 
 
40
  void TextEntryClick(nux::TextEntry* text_entry);
 
41
  void ResetEvents();
 
42
  nux::TextEntry* text_entry_;
 
43
 
 
44
  bool clicked_;
 
45
};
 
46
 
 
47
TextTextEntry::TextTextEntry(const char* program_name,
 
48
  int window_width,
 
49
  int window_height,
 
50
  int program_life_span)
 
51
  : ProgramTemplate(program_name, window_width, window_height, program_life_span)
 
52
{
 
53
  ResetEvents();
 
54
  text_entry_ = NULL;
 
55
}
 
56
 
 
57
TextTextEntry::~TextTextEntry()
 
58
{
 
59
  
 
60
}
 
61
 
 
62
void TextTextEntry::ResetEvents()
 
63
{
 
64
  clicked_ = false;
 
65
}
 
66
 
 
67
void TextTextEntry::TextEntryClick(nux::TextEntry* text_entry)
 
68
{
 
69
  if (text_entry_ == text_entry)
 
70
  {
 
71
    clicked_ = true;
 
72
  }
 
73
}
 
74
 
 
75
void TextTextEntry::UserInterfaceSetup()
 
76
{
 
77
  nux::VLayout* main_layout = new nux::VLayout(NUX_TRACKER_LOCATION);
 
78
  text_entry_ = new nux::TextEntry("", NUX_TRACKER_LOCATION);
 
79
  text_entry_->SetFontSize(76);
 
80
 
 
81
  main_layout->AddView(text_entry_, 0, nux::MINOR_POSITION_CENTER, nux::MINOR_SIZE_FULL);
 
82
  main_layout->SetSpaceBetweenChildren(10);
 
83
  main_layout->SetContentDistribution(nux::MAJOR_POSITION_CENTER);
 
84
 
 
85
  static_cast<nux::WindowThread*>(window_thread_)->SetLayout(main_layout);
 
86
  
 
87
  nux::ColorLayer background(nux::Color(0xFF4D4D4D));
 
88
  static_cast<nux::WindowThread*>(window_thread_)->SetWindowBackgroundPaintLayer(&background);
 
89
}
 
90
 
 
91
TextTextEntry* test_textentry = NULL;
 
92
 
 
93
void TestingThread(nux::NThread* thread, void* user_data)
 
94
{
 
95
  while (test_textentry->ReadyToGo() == false)
 
96
  {
 
97
    nuxDebugMsg("Waiting to start");
 
98
    nux::SleepForMilliseconds(300);
 
99
  }
 
100
 
 
101
  nux::SleepForMilliseconds(1300);
 
102
 
 
103
  nux::WindowThread* wnd_thread = static_cast<nux::WindowThread*>(user_data);
 
104
 
 
105
  NuxAutomatedTestFramework test(wnd_thread);
 
106
 
 
107
  test.Startup();
 
108
 
 
109
  test.TestReportMsg(test_textentry->text_entry_, "TextEntry created");
 
110
 
 
111
  test_textentry->ResetEvents();
 
112
  test.ViewSendMouseMotionToCenter(test_textentry->text_entry_);
 
113
 
 
114
  test.ViewSendMouseClick(0, 1);
 
115
 
 
116
  test.ViewSendCompositionKeys("`o");
 
117
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ò", "ò");
 
118
 
 
119
  test.ViewSendCompositionKeys("~o");
 
120
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõ", "òõ");
 
121
 
 
122
  test.ViewSendCompositionKeys("^o");
 
123
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõô", "òõô");
 
124
 
 
125
  test.ViewSendCompositionKeys("c=");
 
126
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõô€", "òõô€");
 
127
 
 
128
  test.ViewSendCompositionKeys("oc");
 
129
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõô€©", "òõô€©");
 
130
 
 
131
  test.ViewSendCompositionKeys("\"w");
 
132
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõô€©ẅ", "òõô€©ẅ");
 
133
 
 
134
  test.ViewSendCompositionKeys("'S");
 
135
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "òõô€©ẅŚ", "òõô€©ẅŚ");
 
136
  test.ViewSendCtrlA();
 
137
  test.ViewSendDelete();
 
138
 
 
139
  //exclamdown # INVERTED EXCLAMATION MARK
 
140
  test.ViewSendCompositionKeys("!!");
 
141
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¡", "¡");
 
142
  test.ViewSendCtrlA();
 
143
  test.ViewSendDelete();
 
144
  nux::SleepForMilliseconds(100);;
 
145
 
 
146
  //CENT SIGN
 
147
  test.ViewSendCompositionKeys("|c");
 
148
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¢", "¢");
 
149
  test.ViewSendCtrlA();
 
150
  test.ViewSendDelete();
 
151
  nux::SleepForMilliseconds(100);;
 
152
 
 
153
  //POUND SIGN
 
154
  test.ViewSendCompositionKeys("-L");
 
155
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "£", "£");
 
156
  test.ViewSendCtrlA();
 
157
  test.ViewSendDelete();
 
158
  nux::SleepForMilliseconds(100);;
 
159
 
 
160
  //currency # CURRENCY SIGN
 
161
  test.ViewSendCompositionKeys("xo");
 
162
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¤", "¤");
 
163
  test.ViewSendCtrlA();
 
164
  test.ViewSendDelete();
 
165
  nux::SleepForMilliseconds(100);;
 
166
 
 
167
  //yen # YEN SIGN
 
168
  test.ViewSendCompositionKeys("Y=");
 
169
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¥", "¥");
 
170
  test.ViewSendCtrlA();
 
171
  test.ViewSendDelete();
 
172
  nux::SleepForMilliseconds(100);;
 
173
 
 
174
   //FEMININE ORDINAL INDICATOR
 
175
  test.ViewSendCompositionKeys("^_a");
 
176
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ª", "ª");
 
177
  test.ViewSendCtrlA();
 
178
  test.ViewSendDelete();
 
179
  nux::SleepForMilliseconds(100);;
 
180
 
 
181
  //guillemotleft # LEFT-POINTING DOUBLE ANGLE QUOTATION MARK
 
182
  test.ViewSendCompositionKeys("<<");
 
183
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "«", "«");
 
184
  test.ViewSendCtrlA();
 
185
  test.ViewSendDelete();
 
186
  nux::SleepForMilliseconds(100);;
 
187
 
 
188
 //SUPERSCRIPT THREE
 
189
  test.ViewSendCompositionKeys("^3");
 
190
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "³", "³");
 
191
  test.ViewSendCtrlA();
 
192
  test.ViewSendDelete();
 
193
  nux::SleepForMilliseconds(100);;
 
194
 
 
195
  //MIDDLE DOT
 
196
  test.ViewSendCompositionKeys("..");
 
197
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "·", "·");
 
198
  test.ViewSendCtrlA();
 
199
  test.ViewSendDelete();
 
200
  nux::SleepForMilliseconds(100);;
 
201
 
 
202
  //cedilla # CEDILLA
 
203
  test.ViewSendCompositionKeys(", ");
 
204
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¸", "¸");
 
205
  test.ViewSendCtrlA();
 
206
  test.ViewSendDelete();
 
207
  nux::SleepForMilliseconds(100);;
 
208
 
 
209
  //VULGAR FRACTION THREE QUARTERS
 
210
  test.ViewSendCompositionKeys("34");
 
211
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¾", "¾");
 
212
  test.ViewSendCtrlA();
 
213
  test.ViewSendDelete();
 
214
  nux::SleepForMilliseconds(100);;
 
215
 
 
216
  //questiondown # INVERTED QUESTION MARK
 
217
  test.ViewSendCompositionKeys("??");
 
218
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "¿", "¿");
 
219
  test.ViewSendCtrlA();
 
220
  test.ViewSendDelete();
 
221
  nux::SleepForMilliseconds(100);;
 
222
 
 
223
  //LATIN CAPITAL LETTER A WITH GRAVE
 
224
  test.ViewSendCompositionKeys("`A");
 
225
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "À", "À");
 
226
  test.ViewSendCtrlA();
 
227
  test.ViewSendDelete();
 
228
  nux::SleepForMilliseconds(100);;
 
229
 
 
230
  //LATIN CAPITAL LETTER A WITH ACUTE
 
231
  test.ViewSendCompositionKeys("'A");
 
232
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Á", "Á");
 
233
  test.ViewSendCtrlA();
 
234
  test.ViewSendDelete();
 
235
  nux::SleepForMilliseconds(100);;
 
236
 
 
237
  //LATIN CAPITAL LETTER A WITH CIRCUMFLEX
 
238
  test.ViewSendCompositionKeys("^A");
 
239
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Â", "Â");
 
240
  test.ViewSendCtrlA();
 
241
  test.ViewSendDelete();
 
242
  nux::SleepForMilliseconds(100);;
 
243
 
 
244
  //LATIN CAPITAL LETTER A WITH TILDE
 
245
  test.ViewSendCompositionKeys("~A");
 
246
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Ã", "Ã");
 
247
  test.ViewSendCtrlA();
 
248
  test.ViewSendDelete();
 
249
  nux::SleepForMilliseconds(100);;
 
250
 
 
251
  //LATIN CAPITAL LETTER A WITH DIAERESIS
 
252
  test.ViewSendCompositionKeys("\"A");
 
253
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Ä", "Ä");
 
254
  test.ViewSendCtrlA();
 
255
  test.ViewSendDelete();
 
256
  nux::SleepForMilliseconds(100);;
 
257
 
 
258
  //LATIN CAPITAL LETTER A WITH RING ABOVE
 
259
  test.ViewSendCompositionKeys("oA");
 
260
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Å", "Å");
 
261
  test.ViewSendCtrlA();
 
262
  test.ViewSendDelete();
 
263
  nux::SleepForMilliseconds(100);;
 
264
 
 
265
  //AE # LATIN CAPITAL LETTER AE
 
266
  test.ViewSendCompositionKeys("AE");
 
267
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Æ", "Æ");
 
268
  test.ViewSendCtrlA();
 
269
  test.ViewSendDelete();
 
270
  nux::SleepForMilliseconds(100);;
 
271
 
 
272
  //ssharp # LATIN SMALL LETTER SHARP S
 
273
  test.ViewSendCompositionKeys("ss");
 
274
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ß", "ß");
 
275
  test.ViewSendCtrlA();
 
276
  test.ViewSendDelete();
 
277
  nux::SleepForMilliseconds(100);;
 
278
 
 
279
  //LATIN SMALL LETTER A WITH GRAVE
 
280
  test.ViewSendCompositionKeys("`a");
 
281
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "à", "à");
 
282
  test.ViewSendCtrlA();
 
283
  test.ViewSendDelete();
 
284
  nux::SleepForMilliseconds(100);;
 
285
 
 
286
  //LATIN SMALL LETTER A WITH ACUTE
 
287
  test.ViewSendCompositionKeys("'a");
 
288
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "á", "á");
 
289
  test.ViewSendCtrlA();
 
290
  test.ViewSendDelete();
 
291
  nux::SleepForMilliseconds(100);;
 
292
 
 
293
  //LATIN SMALL LETTER A WITH CIRCUMFLEX
 
294
  test.ViewSendCompositionKeys("^a");
 
295
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "â", "â");
 
296
  test.ViewSendCtrlA();
 
297
  test.ViewSendDelete();
 
298
  nux::SleepForMilliseconds(100);;
 
299
 
 
300
  //LATIN SMALL LETTER A WITH TILDE
 
301
  test.ViewSendCompositionKeys("~a");
 
302
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ã", "ã");
 
303
  test.ViewSendCtrlA();
 
304
  test.ViewSendDelete();
 
305
  nux::SleepForMilliseconds(100);;
 
306
 
 
307
  //LATIN SMALL LETTER A WITH DIAERESIS
 
308
  test.ViewSendCompositionKeys("\"a");
 
309
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ä", "ä");
 
310
  test.ViewSendCtrlA();
 
311
  test.ViewSendDelete();
 
312
  nux::SleepForMilliseconds(100);;
 
313
 
 
314
  //LATIN SMALL LETTER A WITH RING ABOVE
 
315
  test.ViewSendCompositionKeys("oa");
 
316
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "å", "å");
 
317
  test.ViewSendCtrlA();
 
318
  test.ViewSendDelete();
 
319
  nux::SleepForMilliseconds(100);;
 
320
 
 
321
  //ae # LATIN SMALL LETTER AE
 
322
  test.ViewSendCompositionKeys("ae");
 
323
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "æ", "æ");
 
324
  test.ViewSendCtrlA();
 
325
  test.ViewSendDelete();
 
326
  nux::SleepForMilliseconds(100);;
 
327
 
 
328
  //DIVISION SIGN
 
329
  test.ViewSendCompositionKeys("-:");
 
330
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "÷", "÷");
 
331
  test.ViewSendCtrlA();
 
332
  test.ViewSendDelete();
 
333
  nux::SleepForMilliseconds(100);;
 
334
 
 
335
  //LATIN CAPITAL LETTER A WITH OGONEK
 
336
  test.ViewSendCompositionKeys(";A");
 
337
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Ą", "Ą");
 
338
  test.ViewSendCtrlA();
 
339
  test.ViewSendDelete();
 
340
  nux::SleepForMilliseconds(100);;
 
341
 
 
342
  //LATIN SMALL LETTER A WITH OGONEK
 
343
  test.ViewSendCompositionKeys(";a");
 
344
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "ą", "ą");
 
345
  test.ViewSendCtrlA();
 
346
  test.ViewSendDelete();
 
347
  nux::SleepForMilliseconds(100);;
 
348
 
 
349
  //LATIN CAPITAL LETTER A WITH CARON
 
350
  test.ViewSendCompositionKeys("cA");
 
351
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "Ǎ", "Ǎ");
 
352
  test.ViewSendCtrlA();
 
353
  test.ViewSendDelete();
 
354
  nux::SleepForMilliseconds(100);
 
355
   
 
356
  //EN DASH
 
357
  test.ViewSendCompositionKeys("--.");
 
358
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "–", "–");
 
359
  test.ViewSendCtrlA();
 
360
  test.ViewSendDelete();
 
361
  nux::SleepForMilliseconds(100);
 
362
 
 
363
  //RIGHT SINGLE QUOTATION MARK
 
364
  test.ViewSendCompositionKeys(">'");
 
365
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "’", "’");
 
366
  test.ViewSendCtrlA();
 
367
  test.ViewSendDelete();
 
368
  nux::SleepForMilliseconds(100);
 
369
 
 
370
  //LEFT DOUBLE QUOTATION MARK
 
371
  test.ViewSendCompositionKeys("<\"");
 
372
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "“", "“");
 
373
  test.ViewSendCtrlA();
 
374
  test.ViewSendDelete();
 
375
  nux::SleepForMilliseconds(100);
 
376
 
 
377
  //RIGHT DOUBLE QUOTATION MARK
 
378
  test.ViewSendCompositionKeys("\">");
 
379
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "”", "”");
 
380
  test.ViewSendCtrlA();
 
381
  test.ViewSendDelete();
 
382
  nux::SleepForMilliseconds(100);
 
383
 
 
384
  //DOUBLE LOW-9 QUOTATION MARK
 
385
  test.ViewSendCompositionKeys("\",");
 
386
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "„", "„");
 
387
  test.ViewSendCtrlA();
 
388
  test.ViewSendDelete();
 
389
  nux::SleepForMilliseconds(100);
 
390
 
 
391
  //PER MILLE SIGN
 
392
  test.ViewSendCompositionKeys("%o");
 
393
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "‰", "‰");
 
394
  test.ViewSendCtrlA();
 
395
  test.ViewSendDelete();
 
396
  nux::SleepForMilliseconds(100);
 
397
 
 
398
  //SINGLE RIGHT-POINTING ANGLE QUOTATION MARK
 
399
  test.ViewSendCompositionKeys(".>");
 
400
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "›", "›");
 
401
  test.ViewSendCtrlA();
 
402
  test.ViewSendDelete();
 
403
  nux::SleepForMilliseconds(100);
 
404
 
 
405
  //EuroSign # EURO SIGN
 
406
  test.ViewSendCompositionKeys("=E");
 
407
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "€", "€");
 
408
  test.ViewSendCtrlA();
 
409
  test.ViewSendDelete();
 
410
  nux::SleepForMilliseconds(100);
 
411
 
 
412
  //REVERSED DOUBLE PRIME QUOTATION MARK
 
413
  test.ViewSendCompositionKeys("\"\\");
 
414
  test.TestReportMsg(test_textentry->text_entry_->GetText() == "〝", "〝");
 
415
  test.ViewSendCtrlA();
 
416
  test.ViewSendDelete();
 
417
  nux::SleepForMilliseconds(100);
 
418
 
 
419
  if (test.WhenDoneTerminateProgram())
 
420
  {
 
421
    wnd_thread->ExitMainLoop();
 
422
  }
 
423
  nuxDebugMsg("Exit testing thread");
 
424
}
 
425
 
 
426
int main(int argc, char** argv)
 
427
{
 
428
  int xstatus = XInitThreads();
 
429
  nuxAssertMsg(xstatus > 0, "XInitThreads has failed");
 
430
 
 
431
  test_textentry = new TextTextEntry("Text Entry: Composition Characters", 600, 200, 40000);
 
432
  test_textentry->Startup();
 
433
  test_textentry->UserInterfaceSetup();
 
434
 
 
435
  nux::SystemThread* test_thread = nux::CreateSystemThread(NULL, &TestingThread, test_textentry->GetWindowThread());
 
436
 
 
437
  test_thread->Start(test_textentry);
 
438
 
 
439
  test_textentry->Run();
 
440
 
 
441
  delete test_thread;
 
442
  delete test_textentry;
 
443
 
 
444
  return 0;
 
445
}
 
446