tests/auto/q3accel/tst_q3accel.cpp
changeset 0 1918ee327afb
child 4 3b1da2848fc7
equal deleted inserted replaced
-1:000000000000 0:1918ee327afb
       
     1 /****************************************************************************
       
     2 **
       
     3 ** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
       
     4 ** All rights reserved.
       
     5 ** Contact: Nokia Corporation (qt-info@nokia.com)
       
     6 **
       
     7 ** This file is part of the test suite of the Qt Toolkit.
       
     8 **
       
     9 ** $QT_BEGIN_LICENSE:LGPL$
       
    10 ** No Commercial Usage
       
    11 ** This file contains pre-release code and may not be distributed.
       
    12 ** You may use this file in accordance with the terms and conditions
       
    13 ** contained in the Technology Preview License Agreement accompanying
       
    14 ** this package.
       
    15 **
       
    16 ** GNU Lesser General Public License Usage
       
    17 ** Alternatively, this file may be used under the terms of the GNU Lesser
       
    18 ** General Public License version 2.1 as published by the Free Software
       
    19 ** Foundation and appearing in the file LICENSE.LGPL included in the
       
    20 ** packaging of this file.  Please review the following information to
       
    21 ** ensure the GNU Lesser General Public License version 2.1 requirements
       
    22 ** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
       
    23 **
       
    24 ** In addition, as a special exception, Nokia gives you certain additional
       
    25 ** rights.  These rights are described in the Nokia Qt LGPL Exception
       
    26 ** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
       
    27 **
       
    28 ** If you have questions regarding the use of this file, please contact
       
    29 ** Nokia at qt-info@nokia.com.
       
    30 **
       
    31 **
       
    32 **
       
    33 **
       
    34 **
       
    35 **
       
    36 **
       
    37 **
       
    38 ** $QT_END_LICENSE$
       
    39 **
       
    40 ****************************************************************************/
       
    41 
       
    42 
       
    43 #include <QtTest/QtTest>
       
    44 #include <qapplication.h>
       
    45 #include <q3accel.h>
       
    46 #include <qtextedit.h>
       
    47 #include <qmainwindow.h>
       
    48 #include <qstatusbar.h>
       
    49 #include <qstring.h>
       
    50 
       
    51 class AccelForm;
       
    52 QT_FORWARD_DECLARE_CLASS(QTextEdit)
       
    53 QT_FORWARD_DECLARE_CLASS(QMainWindow)
       
    54 
       
    55 //TESTED_CLASS=
       
    56 //TESTED_FILES=
       
    57 
       
    58 class tst_Q3Accel : public QObject
       
    59 {
       
    60     Q_OBJECT
       
    61 public:
       
    62     tst_Q3Accel();
       
    63     virtual ~tst_Q3Accel();
       
    64 
       
    65 
       
    66 public slots:
       
    67     void accelTrig1() { currentResult = Accel1Triggered; }
       
    68     void accelTrig2() { currentResult = Accel2Triggered; }
       
    69     void ambig1() { currentResult = Ambiguous; ambigResult = Accel1Triggered; }
       
    70     void ambig2() { currentResult = Ambiguous; ambigResult = Accel2Triggered; }
       
    71     void statusMessage( const QString& message ) { sbText = message; }
       
    72 
       
    73 public slots:
       
    74     void initTestCase();
       
    75 private slots:
       
    76     void number_data();
       
    77     void number();
       
    78     void text_data();
       
    79     void text();
       
    80     void disabledItems();
       
    81     void ambiguousItems();
       
    82     void unicodeCompare();
       
    83     void unicodeCompose();
       
    84 
       
    85 protected:
       
    86     static int toButtons( int key );
       
    87     void defElements();
       
    88     void sendKeyEvents( int k1, QChar c1 = 0, int k2 = 0, QChar c2 = 0, int k3 = 0, QChar c3 = 0, int k4 = 0, QChar c4 = 0 );
       
    89     void testElement();
       
    90 
       
    91     enum Action {
       
    92         SetupAccel,
       
    93         TestAccel,
       
    94         ClearAll
       
    95     } currentAction;
       
    96 
       
    97     enum Widget {
       
    98         NoWidget,
       
    99         Accel1,
       
   100         Accel2
       
   101     };
       
   102 
       
   103     enum Result {
       
   104         NoResult,
       
   105         Accel1Triggered,
       
   106         Accel2Triggered,
       
   107         Ambiguous
       
   108     } currentResult;
       
   109 
       
   110     QMainWindow *mainW;
       
   111     Q3Accel *accel1;
       
   112     Q3Accel *accel2;
       
   113     QTextEdit *edit;
       
   114     QString sbText;
       
   115     Result ambigResult;
       
   116 };
       
   117 
       
   118 // copied from qkeysequence.cpp
       
   119 const QString MacCtrl = QString(QChar(0x2318));
       
   120 const QString MacMeta = QString(QChar(0x2303));
       
   121 const QString MacAlt = QString(QChar(0x2325));
       
   122 const QString MacShift = QString(QChar(0x21E7));
       
   123 
       
   124 tst_Q3Accel::tst_Q3Accel(): mainW( 0 )
       
   125 {
       
   126 }
       
   127 
       
   128 tst_Q3Accel::~tst_Q3Accel()
       
   129 {
       
   130     delete mainW;
       
   131 }
       
   132 
       
   133 void tst_Q3Accel::initTestCase()
       
   134 {
       
   135     currentResult = NoResult;
       
   136     mainW = new QMainWindow(0);
       
   137     mainW->setObjectName("main window");
       
   138     mainW->setFixedSize( 100, 100 );
       
   139     accel1 = new Q3Accel(mainW, "test_accel1" );
       
   140     accel2 = new Q3Accel(mainW, "test_accel2" );
       
   141     edit   = new QTextEdit(mainW);
       
   142     edit->setObjectName("test_edit");
       
   143     connect( accel1, SIGNAL(activated(int)), this, SLOT(accelTrig1()) );
       
   144     connect( accel2, SIGNAL(activated(int)), this, SLOT(accelTrig2()) );
       
   145     connect( accel1, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig1()) );
       
   146     connect( accel2, SIGNAL(activatedAmbiguously(int)), this, SLOT(ambig2()) );
       
   147     mainW->setCentralWidget( edit );
       
   148     connect( mainW->statusBar(), SIGNAL(messageChanged(const QString&)),
       
   149              this, SLOT(statusMessage(const QString&)) );
       
   150     qApp->setMainWidget( mainW );
       
   151     mainW->show();
       
   152 }
       
   153 
       
   154 int tst_Q3Accel::toButtons( int key )
       
   155 {
       
   156     int result = 0;
       
   157     if ( key & Qt::SHIFT )
       
   158         result |= Qt::ShiftModifier;
       
   159     if ( key & Qt::CTRL )
       
   160         result |= Qt::ControlModifier;
       
   161     if ( key & Qt::META )
       
   162         result |= Qt::MetaModifier;
       
   163     if ( key & Qt::ALT )
       
   164         result |= Qt::AltModifier;
       
   165     return result;
       
   166 }
       
   167 
       
   168 void tst_Q3Accel::defElements()
       
   169 {
       
   170     QTest::addColumn<int>("theAction");
       
   171     QTest::addColumn<int>("theTestWidget");
       
   172     QTest::addColumn<QString>("theString");
       
   173     QTest::addColumn<int>("the1Key");
       
   174     QTest::addColumn<int>("the1Char");
       
   175     QTest::addColumn<int>("the2Key");
       
   176     QTest::addColumn<int>("the2Char");
       
   177     QTest::addColumn<int>("the3Key");
       
   178     QTest::addColumn<int>("the3Char");
       
   179     QTest::addColumn<int>("the4Key");
       
   180     QTest::addColumn<int>("the4Char");
       
   181     QTest::addColumn<int>("theResult");
       
   182 }
       
   183 
       
   184 void tst_Q3Accel::number()
       
   185 {
       
   186     testElement();
       
   187 }
       
   188 void tst_Q3Accel::text()
       
   189 {
       
   190     testElement();
       
   191 }
       
   192 // ------------------------------------------------------------------
       
   193 // Number Elements --------------------------------------------------
       
   194 // ------------------------------------------------------------------
       
   195 void tst_Q3Accel::number_data()
       
   196 {
       
   197     defElements();
       
   198 
       
   199     // Clear all
       
   200     QTest::newRow( "N00 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   201 
       
   202     //===========================================
       
   203     // [Shift + key] on non-shift accels testing
       
   204     //===========================================
       
   205 
       
   206     /* Testing Single Sequences
       
   207        Shift + Qt::Key_M    on  Qt::Key_M
       
   208                Qt::Key_M    on  Qt::Key_M
       
   209        Shift + Qt::Key_Plus on  Qt::Key_Pluss
       
   210                Qt::Key_Plus on  Qt::Key_Pluss
       
   211     */
       
   212     QTest::newRow( "N001 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   213         << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   214     QTest::newRow( "N001:Shift + M - [M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   215         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   216     QTest::newRow( "N001:M - [M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   217         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   218 
       
   219     QTest::newRow( "N001 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   220         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   221     QTest::newRow( "N001:Shift + + [+]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   222         << int(Qt::SHIFT) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   223     QTest::newRow( "N001:+ [+]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   224         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   225 
       
   226     QTest::newRow( "N001 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   227 
       
   228     /* Testing Single Sequences
       
   229        Shift + Qt::Key_M    on  Shift + Qt::Key_M
       
   230                Qt::Key_M    on  Shift + Qt::Key_M
       
   231        Shift + Qt::Key_Plus on  Shift + Qt::Key_Pluss
       
   232                Qt::Key_Plus on  Shift + Qt::Key_Pluss
       
   233     */
       
   234     QTest::newRow( "N002 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   235         << int(Qt::SHIFT) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   236     QTest::newRow( "N002:Shift + M - [Shift + M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   237         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   238     QTest::newRow( "N002:M - [Shift + M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   239         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   240 
       
   241     QTest::newRow( "N002 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   242         << int(Qt::SHIFT) + int(Qt::Key_Plus) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   243     QTest::newRow( "N002:Shift + + [Shift + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   244         << int(Qt::SHIFT) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   245     QTest::newRow( "N002:+ [Shift + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   246         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   247 
       
   248     QTest::newRow( "N002 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   249 
       
   250     /* Testing Single Sequences
       
   251        Shift + Qt::Key_F1   on  Qt::Key_F1
       
   252                Qt::Key_F1   on  Qt::Key_F1
       
   253     */
       
   254     QTest::newRow( "N003 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   255         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   256     QTest::newRow( "N003:Shift + F1 - [F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   257         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   258     QTest::newRow( "N003:F1 - [F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   259         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   260 
       
   261     QTest::newRow( "N003 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   262 
       
   263     /* Testing Single Sequences
       
   264        Shift + Qt::Key_F1   on  Shift + Qt::Key_F1
       
   265                Qt::Key_F1   on  Shift + Qt::Key_F1
       
   266     */
       
   267     QTest::newRow( "N004 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   268         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   269     QTest::newRow( "N004:Shift + F1 - [Shift + F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   270         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   271     QTest::newRow( "N004:F1 - [Shift + F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   272         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   273 
       
   274     QTest::newRow( "N004 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   275 
       
   276     /* Testing Single Sequences
       
   277                Qt::Key_BackTab  on  Qt::Key_Tab
       
   278        Shift + Qt::Key_Tab      on  Qt::Key_Tab
       
   279                Qt::Key_Tab      on  Qt::Key_Tab
       
   280     */
       
   281     QTest::newRow( "N005 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   282         << int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   283     QTest::newRow( "N005:BackTab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   284         << int(Qt::Key_BackTab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   285     QTest::newRow( "N005:Shift + Tab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   286         << int(Qt::SHIFT) + Qt::Key_Tab << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   287     QTest::newRow( "N005:Tab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   288         << int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   289 
       
   290     QTest::newRow( "N005 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   291 
       
   292     /* Testing Single Sequences
       
   293                Qt::Key_BackTab  on  Shift + Qt::Key_Tab
       
   294        Shift + Qt::Key_Tab      on  Shift + Qt::Key_Tab
       
   295                Qt::Key_Tab      on  Shift + Qt::Key_Tab
       
   296     */
       
   297     QTest::newRow( "N006 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   298         << int(Qt::SHIFT) + int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   299     QTest::newRow( "N006:BackTab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   300         << int(Qt::SHIFT) + int(Qt::Key_BackTab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   301     QTest::newRow( "N006:Shift + Tab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   302         << int(Qt::SHIFT) + int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   303     QTest::newRow( "N006:Tab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   304         << int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   305 
       
   306     QTest::newRow( "N006 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   307 
       
   308 
       
   309     //===========================================
       
   310     // [Shift + key] and [key] on accels with
       
   311     // and without modifiers
       
   312     //===========================================
       
   313 
       
   314     /* Testing Single Sequences
       
   315        Qt::Key_F1
       
   316        Shift + Qt::Key_F1
       
   317     */
       
   318     QTest::newRow( "N007 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   319         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   320     QTest::newRow( "N007 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   321         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   322     QTest::newRow( "N007:F1" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   323         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   324     QTest::newRow( "N007:Shift + F1" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   325         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   326 
       
   327     QTest::newRow( "N007 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   328 
       
   329     /* Testing Single Sequences
       
   330        Qt::Key_M
       
   331        Shift + Qt::Key_M
       
   332        Ctrl  + Qt::Key_M
       
   333        Alt   + Qt::Key_M
       
   334     */
       
   335     QTest::newRow( "N01 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   336         << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   337     QTest::newRow( "N02 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   338         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   339     QTest::newRow( "N03 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   340         << int(Qt::CTRL) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   341     QTest::newRow( "N04 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   342         << int(Qt::ALT) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   343 
       
   344 
       
   345     QTest::newRow( "N:Qt::Key_M" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   346         << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   347     QTest::newRow( "N:Shift + Qt::Key_M" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   348         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   349     QTest::newRow( "N:Ctrl + Qt::Key_M" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   350         << int(Qt::CTRL) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   351     QTest::newRow( "N:Alt + Qt::Key_M" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   352         << int(Qt::ALT) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   353 
       
   354     /* Testing Single Sequence Ambiguity
       
   355        Qt::Key_M on accel2
       
   356     */
       
   357     QTest::newRow( "N05 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   358         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   359     QTest::newRow( "N:int(Qt::Key_M) on int(Accel2)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   360         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Ambiguous);
       
   361 
       
   362     /* Testing Single Specialkeys
       
   363        int(Qt::Key_aring)
       
   364        int(Qt::Key_Aring)
       
   365        UNICODE_ACCEL + int(Qt::Key_K)
       
   366     */
       
   367     QTest::newRow( "N06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   368         << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   369     QTest::newRow( "N08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   370         << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   371 
       
   372     QTest::newRow( "N:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   373         << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   374     QTest::newRow( "N:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   375         << int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   376     QTest::newRow( "N:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   377         << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   378     QTest::newRow( "N:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   379         << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   380 
       
   381     // Clear all
       
   382     QTest::newRow( "N09 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   383 
       
   384     /* Testing Multiple Sequences
       
   385        int(Qt::Key_M)
       
   386        int(Qt::Key_I), int(Qt::Key_M)
       
   387        Shift+int(Qt::Key_I), int(Qt::Key_M)
       
   388     */
       
   389     QTest::newRow( "N10 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   390         << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   391     QTest::newRow( "N11 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("")
       
   392         << int(Qt::Key_I) << 0 << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   393     QTest::newRow( "N12 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("")
       
   394         << int(Qt::SHIFT) + int(Qt::Key_I) << 0 << int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   395 
       
   396     QTest::newRow( "N:int(Qt::Key_M) (2)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   397         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   398     QTest::newRow( "N:int(Qt::Key_I), int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   399         << int(Qt::Key_I) << int('i') << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   400     QTest::newRow( "N:Shift+int(Qt::Key_I), int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   401         << int(Qt::SHIFT) + int(Qt::Key_I) << int('I') << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   402 }
       
   403 
       
   404 // ------------------------------------------------------------------
       
   405 // Text Elements ----------------------------------------------------
       
   406 // ------------------------------------------------------------------
       
   407 void tst_Q3Accel::text_data()
       
   408 {
       
   409     defElements();
       
   410     // Clear all
       
   411     QTest::newRow( "T00 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   412 
       
   413     //===========================================
       
   414     // [Shift + key] on non-shift accels testing
       
   415     //===========================================
       
   416 
       
   417     /* Testing Single Sequences
       
   418        Shift + int(Qt::Key_M)    on  int(Qt::Key_M)
       
   419                int(Qt::Key_M)    on  int(Qt::Key_M)
       
   420        Shift + int(Qt::Key_Plus) on  Qt::Key_Pluss
       
   421                int(Qt::Key_Plus) on  Qt::Key_Pluss
       
   422     */
       
   423     QTest::newRow( "T001 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("M")
       
   424         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   425     QTest::newRow( "T001:Shift + M - [M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   426         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   427     QTest::newRow( "T001:M - [M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   428         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   429 
       
   430     QTest::newRow( "T001 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("+")
       
   431         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   432     QTest::newRow( "T001:Shift + + [+]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   433         << int(Qt::SHIFT) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   434     QTest::newRow( "T001:+ [+]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   435         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   436 
       
   437     QTest::newRow( "T001 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   438 
       
   439     /* Testing Single Sequences
       
   440        Shift + int(Qt::Key_M)    on  Shift + int(Qt::Key_M)
       
   441                int(Qt::Key_M)    on  Shift + int(Qt::Key_M)
       
   442        Shift + int(Qt::Key_Plus) on  Shift + Qt::Key_Pluss
       
   443                int(Qt::Key_Plus) on  Shift + Qt::Key_Pluss
       
   444        Shift + Ctrl + int(Qt::Key_Plus) on  Ctrl + Qt::Key_Pluss
       
   445                Ctrl + int(Qt::Key_Plus) on  Ctrl + Qt::Key_Pluss
       
   446     */
       
   447     QTest::newRow( "T002 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Shift+M")
       
   448         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   449     QTest::newRow( "T002:Shift + M - [Shift + M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   450         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   451     QTest::newRow( "T002:M - [Shift + M]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   452         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   453 
       
   454     QTest::newRow( "T002 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("Shift++")
       
   455         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   456     QTest::newRow( "T002:Shift + + [Shift + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   457         << int(Qt::SHIFT) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   458     QTest::newRow( "T002:+ [Shift + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   459         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   460 
       
   461     QTest::newRow( "T002 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   462 
       
   463     /* Testing Single Sequences
       
   464        Shift + Ctrl + int(Qt::Key_Plus) on  Ctrl + int(Qt::Key_Plus)
       
   465                Ctrl + int(Qt::Key_Plus) on  Ctrl + int(Qt::Key_Plus)
       
   466                       int(Qt::Key_Plus) on  Ctrl + int(Qt::Key_Plus)
       
   467     */
       
   468     QTest::newRow( "T002b - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Ctrl++")
       
   469         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   470     QTest::newRow( "T002b:Shift + Ctrl + + [Ctrl + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   471         << int(Qt::SHIFT) + int(Qt::CTRL) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   472     QTest::newRow( "T002b:Ctrl + [Ctrl + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   473         << int(Qt::CTRL) + int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   474     QTest::newRow( "T002b: + [Ctrl + +]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   475         << int(Qt::Key_Plus) << int('+') << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   476 
       
   477     /* Testing Single Sequences
       
   478        Shift + int(Qt::Key_F1)   on  int(Qt::Key_F1)
       
   479                int(Qt::Key_F1)   on  int(Qt::Key_F1)
       
   480     */
       
   481     QTest::newRow( "T003 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("F1")
       
   482         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   483     QTest::newRow( "T003:Shift + F1 - [F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   484         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   485     QTest::newRow( "T003:F1 - [F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   486         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   487 
       
   488     QTest::newRow( "T003 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   489 
       
   490     /* Testing Single Sequences
       
   491        Shift + int(Qt::Key_F1)   on  Shift + int(Qt::Key_F1)
       
   492                int(Qt::Key_F1)   on  Shift + int(Qt::Key_F1)
       
   493     */
       
   494     QTest::newRow( "T004 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Shift+F1")
       
   495         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   496     QTest::newRow( "T004:Shift + F1 - [Shift + F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   497         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   498     QTest::newRow( "T004:F1 - [Shift + F1]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   499         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   500 
       
   501     QTest::newRow( "T004 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   502 
       
   503     /* Testing Single Sequences
       
   504                int(Qt::Key_BackTab)  on  int(Qt::Key_Tab)
       
   505        Shift + int(Qt::Key_Tab)      on  int(Qt::Key_Tab)
       
   506                int(Qt::Key_Tab)      on  int(Qt::Key_Tab)
       
   507     */
       
   508     QTest::newRow( "T005 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Tab")
       
   509         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   510     QTest::newRow( "T005:BackTab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   511         << int(Qt::Key_BackTab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   512     QTest::newRow( "T005:Shift + Tab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   513         << int(Qt::SHIFT) + int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   514     QTest::newRow( "T005:Tab - [Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   515         << int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   516 
       
   517     QTest::newRow( "N005 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   518 
       
   519     /* Testing Single Sequences
       
   520                int(Qt::Key_BackTab)  on  Shift + int(Qt::Key_Tab)
       
   521        Shift + int(Qt::Key_Tab)      on  Shift + int(Qt::Key_Tab)
       
   522                int(Qt::Key_Tab)      on  Shift + int(Qt::Key_Tab)
       
   523     */
       
   524     QTest::newRow( "T006 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Shift+Tab")
       
   525         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   526     QTest::newRow( "T006:BackTab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   527         << int(Qt::SHIFT) + int(Qt::Key_BackTab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   528     QTest::newRow( "T006:Shift + Tab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   529         << int(Qt::SHIFT) + int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   530     QTest::newRow( "T006:Tab - [Shift + Tab]" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   531         << int(Qt::Key_Tab) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   532 
       
   533     QTest::newRow( "T006 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   534 
       
   535     //===========================================
       
   536     // [Shift + key] and [key] on accels with
       
   537     // and without modifiers
       
   538     //===========================================
       
   539 
       
   540     /* Testing Single Sequences
       
   541        int(Qt::Key_F1)
       
   542        Shift + int(Qt::Key_F1)
       
   543     */
       
   544     QTest::newRow( "T007 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("F1")
       
   545         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   546     QTest::newRow( "T007 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("Shift+F1")
       
   547         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   548     QTest::newRow( "T007:F1" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   549         << int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   550     QTest::newRow( "T007:Shift + F1" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   551         << int(Qt::SHIFT) + int(Qt::Key_F1) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   552 
       
   553     QTest::newRow( "T005 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   554 
       
   555     /* Testing Single Sequences
       
   556        int(Qt::Key_M)
       
   557        Shift + int(Qt::Key_M)
       
   558        Ctrl  + int(Qt::Key_M)
       
   559        Alt   + int(Qt::Key_M)
       
   560     */
       
   561     QTest::newRow( "T01 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("M")
       
   562         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   563     QTest::newRow( "T02 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("Shift+M")
       
   564         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   565     QTest::newRow( "T03 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Ctrl+M")
       
   566         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   567     QTest::newRow( "T04 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("Alt+M")
       
   568         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   569 
       
   570 
       
   571     QTest::newRow( "T:int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   572         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   573     QTest::newRow( "T:Shift + int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   574         << int(Qt::SHIFT) + int(Qt::Key_M) << int('M') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   575     QTest::newRow( "T:Ctrl + int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   576         << int(Qt::CTRL) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   577     QTest::newRow( "T:Alt + int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   578         << int(Qt::ALT) + int(Qt::Key_M) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   579 
       
   580     /* Testing Single Sequence Ambiguity
       
   581        int(Qt::Key_M) on accel2
       
   582     */
       
   583     QTest::newRow( "T05 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("M")
       
   584         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   585     QTest::newRow( "T:int(Qt::Key_M) on int(Accel2)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   586         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Ambiguous);
       
   587 
       
   588     /* Testing Single Specialkeys
       
   589        int(Qt::Key_aring)
       
   590        int(Qt::Key_Aring)
       
   591        UNICODE_ACCEL + int(Qt::Key_K)
       
   592     */
       
   593     /* see comments above on the #ifdef'ery */
       
   594     QTest::newRow( "T06 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("\x0E5")
       
   595         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   596     QTest::newRow( "T08 - sA2" ) << int(SetupAccel) << int(Accel1) << QString("K")
       
   597         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   598 
       
   599     QTest::newRow( "T:int(Qt::Key_aring)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   600         << int(Qt::Key_aring) << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   601     QTest::newRow( "T:int(Qt::Key_aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   602         << int(Qt::Key_unknown) << 0xE5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   603     QTest::newRow( "T:int(Qt::Key_Aring) - Text Form" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   604         << int(Qt::Key_unknown) << 0xC5 << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   605     QTest::newRow( "T:UNICODE_ACCEL + int(Qt::Key_K)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   606         << int(Qt::UNICODE_ACCEL) + int(Qt::Key_K) << int('k') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   607 
       
   608     // Clear all
       
   609     QTest::newRow( "T09 - clear" ) << int(ClearAll) <<0<<QString("")<<0<<0<<0<<0<<0<<0<<0<<0<<0;
       
   610 
       
   611     /* Testing Multiple Sequences
       
   612        int(Qt::Key_M)
       
   613        int(Qt::Key_I), int(Qt::Key_M)
       
   614        Shift+int(Qt::Key_I), int(Qt::Key_M)
       
   615     */
       
   616     QTest::newRow( "T10 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("M")
       
   617         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   618     QTest::newRow( "T11 - sA2" ) << int(SetupAccel) << int(Accel2) << QString("I, M")
       
   619         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   620     QTest::newRow( "T12 - sA1" ) << int(SetupAccel) << int(Accel1) << QString("Shift+I, M")
       
   621         << 0 << 0 << 0 << 0 << 0 << 0 << 0 << 0 << int(NoResult);
       
   622 
       
   623     QTest::newRow( "T:int(Qt::Key_M) (2)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   624         << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   625     QTest::newRow( "T:int(Qt::Key_I), int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   626         << int(Qt::Key_I) << int('i') << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << int(Accel2Triggered);
       
   627     QTest::newRow( "T:Shift+int(Qt::Key_I), int(Qt::Key_M)" ) << int(TestAccel) << int(NoWidget) << QString("")
       
   628         << int(Qt::SHIFT) + int(Qt::Key_I) << int('I') << int(Qt::Key_M) << int('m') << 0 << 0 << 0 << 0 << int(Accel1Triggered);
       
   629 }
       
   630 
       
   631 // ------------------------------------------------------------------
       
   632 // Disabled Elements ------------------------------------------------
       
   633 // ------------------------------------------------------------------
       
   634 void tst_Q3Accel::disabledItems()
       
   635 {
       
   636     accel1->setEnabled( TRUE );
       
   637     accel2->setEnabled( TRUE );
       
   638 
       
   639     /* Testing Disabled Accel
       
   640        Qt::Key_M          on A1
       
   641        Shift + Qt::Key_M  on A1
       
   642        Qt::Key_M          on A2 (disabled)
       
   643        Shift + Qt::Key_M  on A2 (disabled)
       
   644     */
       
   645     accel1->clear();
       
   646     accel2->clear();
       
   647     accel1->insertItem( QKeySequence("M") );
       
   648     accel1->insertItem( QKeySequence("Shift+M") );
       
   649     accel2->insertItem( QKeySequence("M") );
       
   650     accel2->insertItem( QKeySequence("Shift+M") );
       
   651     accel2->setEnabled( FALSE );
       
   652     currentResult = NoResult;
       
   653     sendKeyEvents( Qt::Key_M, 'm' );
       
   654     QCOMPARE( currentResult, Accel1Triggered );
       
   655     currentResult = NoResult;
       
   656     sendKeyEvents( Qt::SHIFT+Qt::Key_M, 'M' );
       
   657     QCOMPARE( currentResult, Accel1Triggered );
       
   658     accel2->setEnabled( TRUE ); //PS!
       
   659 
       
   660     /* Testing Disabled Accel
       
   661        Qt::Key_M          on A1
       
   662        Shift + Qt::Key_M  on A1 (disabled)
       
   663        Qt::Key_M          on A2 (disabled)
       
   664        Shift + Qt::Key_M  on A2
       
   665     */
       
   666     accel1->clear();
       
   667     accel2->clear();
       
   668     accel1->insertItem( QKeySequence("M") );
       
   669     int i1 = accel1->insertItem( QKeySequence("Shift+M") );
       
   670     int i2 = accel2->insertItem( QKeySequence("M") );
       
   671     accel2->insertItem( QKeySequence("Shift+M") );
       
   672     accel1->setItemEnabled( i1, FALSE );
       
   673     accel2->setItemEnabled( i2, FALSE );
       
   674     currentResult = NoResult;
       
   675     sendKeyEvents( Qt::Key_M, 'm' );
       
   676     QCOMPARE( currentResult, Accel1Triggered );
       
   677     currentResult = NoResult;
       
   678     sendKeyEvents( Qt::SHIFT+Qt::Key_M, 'M' );
       
   679     QCOMPARE( currentResult, Accel2Triggered );
       
   680 
       
   681     /* Testing Disabled Accel Items
       
   682        Qt::Key_F5          on A1
       
   683        Shift + Qt::Key_F5  on A2 (disabled)
       
   684     */
       
   685     accel1->clear();
       
   686     accel2->clear();
       
   687     i1 = accel1->insertItem( QKeySequence("F5") );
       
   688     i2 = accel2->insertItem( QKeySequence("Shift+F5") );
       
   689     accel1->setItemEnabled( i1, TRUE );
       
   690     accel2->setItemEnabled( i2, FALSE );
       
   691     currentResult = NoResult;
       
   692     sendKeyEvents( Qt::Key_F5, 0 );
       
   693     QCOMPARE( currentResult, Accel1Triggered );
       
   694     currentResult = NoResult;
       
   695     sendKeyEvents( Qt::SHIFT+Qt::Key_F5, 0 );
       
   696     QCOMPARE( currentResult, NoResult );
       
   697 
       
   698     /* Testing Disabled Accel
       
   699        Qt::Key_F5          on A1
       
   700        Shift + Qt::Key_F5  on A2 (disabled)
       
   701     */
       
   702     accel1->clear();
       
   703     accel2->clear();
       
   704     i1 = accel1->insertItem( QKeySequence("F5") );
       
   705     i2 = accel2->insertItem( QKeySequence("Shift+F5") );
       
   706     accel1->setEnabled( TRUE );
       
   707     accel2->setEnabled( FALSE );
       
   708     currentResult = NoResult;
       
   709     sendKeyEvents( Qt::Key_F5, 0 );
       
   710     QCOMPARE( currentResult, Accel1Triggered );
       
   711     currentResult = NoResult;
       
   712     sendKeyEvents( Qt::SHIFT+Qt::Key_F5, 0 );
       
   713     QCOMPARE( currentResult, NoResult );
       
   714 
       
   715 
       
   716 
       
   717     /* Testing Disabled Accel, and the corresponding statusbar feedback
       
   718        Ctrl + Qt::Key_K, Ctrl + Qt::Key_L on A1
       
   719        Ctrl + Qt::Key_K, Ctrl + Qt::Key_M on A2 (disabled)
       
   720     */
       
   721     accel1->clear();
       
   722     accel2->clear();
       
   723     i1 = accel1->insertItem( QKeySequence("Ctrl+K, Ctrl+L") );
       
   724     i2 = accel2->insertItem( QKeySequence("Ctrl+K, Ctrl+M") );
       
   725     accel1->setItemEnabled( i1, TRUE );
       
   726     accel2->setItemEnabled( i2, FALSE );
       
   727     currentResult = NoResult;
       
   728     sendKeyEvents( Qt::CTRL+Qt::Key_K, 0 );
       
   729     sendKeyEvents( Qt::CTRL+Qt::Key_Q, 0 );
       
   730     QCOMPARE( currentResult, NoResult );
       
   731 #ifndef Q_WS_MAC
       
   732     QCOMPARE( sbText, QString("Ctrl+K, Ctrl+Q not defined") );
       
   733 #else
       
   734     QCOMPARE(sbText, MacCtrl + "K, " + MacCtrl + "Q not defined");
       
   735 #endif
       
   736     currentResult = NoResult;
       
   737     sendKeyEvents( Qt::CTRL+Qt::Key_K, 0 );
       
   738     sendKeyEvents( Qt::CTRL+Qt::Key_M, 0 );
       
   739     QCOMPARE( currentResult, NoResult );
       
   740     QCOMPARE(sbText, QString());
       
   741     currentResult = NoResult;
       
   742     sendKeyEvents( Qt::CTRL+Qt::Key_K, 0 );
       
   743     sendKeyEvents( Qt::CTRL+Qt::Key_L, 0 );
       
   744     QCOMPARE( currentResult, Accel1Triggered );
       
   745     QCOMPARE(sbText, QString());
       
   746 
       
   747     accel1->setEnabled( TRUE );
       
   748     accel2->setEnabled( TRUE );
       
   749 }
       
   750 
       
   751 // ------------------------------------------------------------------
       
   752 // Ambiguous Elements -----------------------------------------------
       
   753 // ------------------------------------------------------------------
       
   754 void tst_Q3Accel::ambiguousItems()
       
   755 {
       
   756     accel1->setEnabled( TRUE );
       
   757     accel2->setEnabled( TRUE );
       
   758 
       
   759     /* Testing Disabled Accel
       
   760        Qt::Key_M  on A1
       
   761        Qt::Key_M  on A2
       
   762     */
       
   763     accel1->clear();
       
   764     accel2->clear();
       
   765     accel1->insertItem( QKeySequence("M") );
       
   766     accel2->insertItem( QKeySequence("M") );
       
   767     currentResult = NoResult;
       
   768     sendKeyEvents( Qt::Key_M, 'm' );
       
   769     QCOMPARE( currentResult, Ambiguous );
       
   770     QCOMPARE( ambigResult, Accel1Triggered );
       
   771     currentResult = NoResult;
       
   772     sendKeyEvents( Qt::Key_M, 'm' );
       
   773     QCOMPARE( currentResult, Ambiguous );
       
   774     QCOMPARE( ambigResult, Accel2Triggered );
       
   775     currentResult = NoResult;
       
   776     sendKeyEvents( Qt::Key_M, 'm' );
       
   777     QCOMPARE( currentResult, Ambiguous );
       
   778     QCOMPARE( ambigResult, Accel1Triggered );
       
   779 
       
   780     accel1->setEnabled( TRUE );
       
   781     accel2->setEnabled( TRUE );
       
   782 }
       
   783 
       
   784 // ------------------------------------------------------------------
       
   785 // Unicode and non-unicode Elements ---------------------------------
       
   786 // ------------------------------------------------------------------
       
   787 void tst_Q3Accel::unicodeCompare()
       
   788 {
       
   789     accel1->setEnabled( TRUE );
       
   790     accel2->setEnabled( TRUE );
       
   791 
       
   792     QKeySequence ks1("Ctrl+M");
       
   793     QKeySequence ks2( Qt::CTRL+Qt::Key_M );
       
   794     accel1->clear();
       
   795     accel2->clear();
       
   796     accel1->insertItem( ks1 );
       
   797     accel2->insertItem( ks2 );
       
   798     currentResult = NoResult;
       
   799     sendKeyEvents( Qt::CTRL+Qt::Key_M, 0 );
       
   800     QCOMPARE( currentResult, Ambiguous );
       
   801     // They _are_ ambiguous, so the QKeySequence operator==
       
   802     // should indicate the same
       
   803     QVERIFY( ks1 == ks2 );
       
   804     QVERIFY( !(ks1 != ks2) );
       
   805 }
       
   806 
       
   807 // ------------------------------------------------------------------
       
   808 // Unicode composed keys using keypad, and number accels ------------
       
   809 // ------------------------------------------------------------------
       
   810 void tst_Q3Accel::unicodeCompose()
       
   811 {
       
   812     accel1->setEnabled( TRUE );
       
   813     accel2->setEnabled( TRUE );
       
   814 
       
   815 #if 0
       
   816 //#if QT_VERSION >= 0x30200
       
   817     accel1->clear();
       
   818     accel2->clear();
       
   819     accel1->insertItem( META+Qt::Key_9 );
       
   820     edit->setFocus();
       
   821     currentResult = NoResult;
       
   822 
       
   823     // Turn on unicode composing, and
       
   824     // compose a smileyface. ( 9786 = 0x263A )
       
   825     QApplication::setMetaComposedUnicode();
       
   826     QChar ch1( '9' );
       
   827     QChar ch2( '7' );
       
   828     QChar ch3( '8' );
       
   829     QChar ch4( '6' );
       
   830     QString s1( ch1 );
       
   831     QString s2( ch2 );
       
   832     QString s3( ch3 );
       
   833     QString s4( ch4 );
       
   834     QKeyEvent k1a( QEvent::AccelOverride, Qt::Key_9, ch1.row() ? 0 : ch1.cell(), Qt::MetaModifier + Qt::KeypadModifier, s1 );
       
   835     QKeyEvent k1p( QEvent::KeyPress, Qt::Key_9, ch1.row() ? 0 : ch1.cell(), Qt::MetaModifier + Qt::KeypadModifier, s1 );
       
   836     QKeyEvent k1r( QEvent::KeyRelease, Qt::Key_9, ch1.row() ? 0 : ch1.cell(), Qt::MetaModifier + Qt::KeypadModifier, s1 );
       
   837     QKeyEvent k2a( QEvent::AccelOverride, Qt::Key_7, ch2.row() ? 0 : ch2.cell(), Qt::MetaModifier + Qt::KeypadModifier, s2 );
       
   838     QKeyEvent k2p( QEvent::KeyPress, Qt::Key_7, ch2.row() ? 0 : ch2.cell(), Qt::MetaModifier + Qt::KeypadModifier, s2 );
       
   839     QKeyEvent k2r( QEvent::KeyRelease, Qt::Key_7, ch2.row() ? 0 : ch2.cell(), Qt::MetaModifier + Qt::KeypadModifier, s2 );
       
   840     QKeyEvent k3a( QEvent::AccelOverride, Qt::Key_8, ch3.row() ? 0 : ch3.cell(), Qt::MetaModifier + Qt::KeypadModifier, s3 );
       
   841     QKeyEvent k3p( QEvent::KeyPress, Qt::Key_8, ch3.row() ? 0 : ch3.cell(), Qt::MetaModifier + Qt::KeypadModifier, s3 );
       
   842     QKeyEvent k3r( QEvent::KeyRelease, Qt::Key_8, ch3.row() ? 0 : ch3.cell(), Qt::MetaModifier + Qt::KeypadModifier, s3 );
       
   843     QKeyEvent k4a( QEvent::AccelOverride, Qt::Key_6, ch4.row() ? 0 : ch4.cell(), Qt::MetaModifier + Qt::KeypadModifier, s4 );
       
   844     QKeyEvent k4p( QEvent::KeyPress, Qt::Key_6, ch4.row() ? 0 : ch4.cell(), Qt::MetaModifier + Qt::KeypadModifier, s4 );
       
   845     QKeyEvent k4r( QEvent::KeyRelease, Qt::Key_6, ch4.row() ? 0 : ch4.cell(), Qt::MetaModifier + Qt::KeypadModifier, s4 );
       
   846     QKeyEvent k5r( QEvent::KeyRelease, Qt::Key_Meta, 0, 0, "" );
       
   847     QApplication::sendEvent( edit, &k1a );
       
   848     QApplication::sendEvent( edit, &k1p );
       
   849     QApplication::sendEvent( edit, &k1r );
       
   850     QCOMPARE( currentResult, NoResult );
       
   851 
       
   852     QApplication::sendEvent( edit, &k2a );
       
   853     QApplication::sendEvent( edit, &k2p );
       
   854     QApplication::sendEvent( edit, &k2r );
       
   855     QCOMPARE( currentResult, NoResult );
       
   856 
       
   857     QApplication::sendEvent( edit, &k3a );
       
   858     QApplication::sendEvent( edit, &k3p );
       
   859     QApplication::sendEvent( edit, &k3r );
       
   860     QCOMPARE( currentResult, NoResult );
       
   861 
       
   862     QApplication::sendEvent( edit, &k4a );
       
   863     QApplication::sendEvent( edit, &k4p );
       
   864     QApplication::sendEvent( edit, &k4r );
       
   865     QCOMPARE( currentResult, NoResult );
       
   866 
       
   867     QApplication::sendEvent( edit, &k5r );
       
   868     // Unicode character is fully composed, and
       
   869     // shouldn't have triggered any accels
       
   870     QCOMPARE( currentResult, NoResult );
       
   871 
       
   872     // Verify that the unicode character indeed
       
   873     // is composed
       
   874     QVERIFY( edit->text().length() == 1 );
       
   875     QCOMPARE( (int)edit->text()[0].unicode(), 9786 );
       
   876 
       
   877     sendKeyEvents( META+Qt::Key_9, 0 );
       
   878     QCOMPARE( currentResult, Accel1Triggered );
       
   879 #else
       
   880     QSKIP( "Unicode composing non-existant in Qt 3.y.z", SkipAll);
       
   881 #endif
       
   882 }
       
   883 
       
   884 // ------------------------------------------------------------------
       
   885 // Element Testing  -------------------------------------------------
       
   886 // ------------------------------------------------------------------
       
   887 void tst_Q3Accel::testElement()
       
   888 {
       
   889 #if 0
       
   890     currentResult = NoResult;
       
   891     QFETCH( int, theAction );
       
   892     QFETCH( int, theTestWidget );
       
   893     QFETCH( QString, theString );
       
   894     QFETCH( int, the1Key );
       
   895     QFETCH( int, the1Char );
       
   896     QFETCH( int, the2Key );
       
   897     QFETCH( int, the2Char );
       
   898     QFETCH( int, the3Key );
       
   899     QFETCH( int, the3Char );
       
   900     QFETCH( int, the4Key );
       
   901     QFETCH( int, the4Char );
       
   902     QFETCH( int, theResult );
       
   903 
       
   904     Q3Accel *ac = 0;
       
   905     switch( theTestWidget ) {
       
   906     case Accel1:
       
   907         ac = accel1;
       
   908         break;
       
   909     case Accel2:
       
   910         ac = accel2;
       
   911         break;
       
   912     case NoWidget:
       
   913     default:
       
   914         ac = 0;
       
   915     }
       
   916 
       
   917     if ( theAction == ClearAll ) {
       
   918         // Clear all current accelerators
       
   919         accel1->clear();
       
   920         accel2->clear();
       
   921         QCOMPARE( TRUE, TRUE );
       
   922     } else if ( theAction == SetupAccel ) {
       
   923         // Set up accelerator for next test
       
   924         QKeySequence ks;
       
   925         if ( QString(theString).isEmpty() ) {
       
   926             ks =  QKeySequence( the1Key, the2Key, the3Key, the4Key );
       
   927         } else {
       
   928             ks = QKeySequence( theString );
       
   929         }
       
   930         ac->insertItem( ks );
       
   931         QCOMPARE( TRUE, TRUE );
       
   932     } else {
       
   933         // Send keyevents
       
   934         sendKeyEvents( the1Key, the1Char,
       
   935                        the2Key, the2Char,
       
   936                        the3Key, the3Char,
       
   937                        the4Key, the4Char );
       
   938         // Verify the result
       
   939         QCOMPARE( currentResult, theResult );
       
   940     }
       
   941 #endif
       
   942 }
       
   943 
       
   944 void tst_Q3Accel::sendKeyEvents( int k1, QChar c1, int k2, QChar c2, int k3, QChar c3, int k4, QChar c4 )
       
   945 {
       
   946     int b1 = toButtons( k1 );
       
   947     int b2 = toButtons( k2 );
       
   948     int b3 = toButtons( k3 );
       
   949     int b4 = toButtons( k4 );
       
   950     k1 &= ~Qt::MODIFIER_MASK;
       
   951     k2 &= ~Qt::MODIFIER_MASK;
       
   952     k3 &= ~Qt::MODIFIER_MASK;
       
   953     k4 &= ~Qt::MODIFIER_MASK;
       
   954     QKeyEvent ke( QEvent::Accel, k1, (Qt::KeyboardModifiers)b1, QString(c1) );
       
   955     QApplication::sendEvent( mainW, &ke );
       
   956     if ( k2 ) {
       
   957         QKeyEvent ke( QEvent::Accel, k2, k2, b2, QString(c2) );
       
   958         QApplication::sendEvent( mainW, &ke );
       
   959     }
       
   960     if ( k3 ) {
       
   961         QKeyEvent ke( QEvent::Accel, k3, k3, b3, QString(c3) );
       
   962         QApplication::sendEvent( mainW, &ke );
       
   963     }
       
   964     if ( k4 ) {
       
   965         QKeyEvent ke( QEvent::Accel, k4, k4, b4, QString(c4) );
       
   966         QApplication::sendEvent( mainW, &ke );
       
   967     }
       
   968 }
       
   969 
       
   970 QTEST_MAIN(tst_Q3Accel)
       
   971 #include "tst_q3accel.moc"