New keywords implemented.
[qa-tools:qtuitest-mbt-adapter.git] / src / keyword.h
1 /*
2  * This file is part of qtuitest-mbt-adapter
3  *
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  *
6  * Contact: Riku Halonen <riku.halonen@nokia.com>
7  *
8  * This program is free software; you can redistribute it and/or
9  * modify it under the terms of the GNU Lesser General Public License
10  * version 2.1 as published by the Free Software Foundation.
11  *
12  * This library is distributed in the hope that it will be useful, but
13  * WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15  * Lesser General Public License for more details.
16  *
17  * You should have received a copy of the GNU Lesser General Public
18  * License along with this library; if not, write to the Free Software
19  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
20  * 02110-1301 USA
21  *
22  */
23
24 #ifndef KEYWORD_H
25 #define KEYWORD_H
26
27 // System includes.
28 #include <QStringList>
29 #include "qsystemtest.h"
30
31 struct keywordResult {
32     bool pass;
33     QString msg;
34
35 } typedef Result;
36
37 class Keyword : public QObject
38 {
39     Q_OBJECT
40 public:
41     Keyword() { m_result.pass = true; m_result.msg = QString(); m_canFail = true;}
42     ~Keyword() {}
43
44     void setKeyword(const QString &name) { m_kwName = name; }
45     void setArguments(const QStringList &args) { m_arguments = args; }
46     void setResult(const Result &result) { m_result = result; }
47     void setCanFail(bool canFail) { m_canFail = canFail; }
48
49     QString keyword() const { return m_kwName; }
50     QStringList arguments() const { return m_arguments; }
51     Result result() const { return m_result; }
52     bool canFail() { return m_canFail; }
53
54 private:
55     QString m_kwName;
56     QStringList m_arguments;
57     Result m_result;
58     bool m_canFail;
59 };
60
61 class KeywordController : public QSystemTest
62 {
63     Q_OBJECT
64 public:
65     KeywordController();
66     ~KeywordController();
67
68     int delay() const { return m_delay; }
69     void setDelay(int delay) { m_delay = delay; }
70
71     // From QSystemTest
72     virtual bool fail(const QString&);
73     virtual void processCommandLine(QStringList &arguments);
74
75     Keyword* createKeyword(const QString &str_Keyword) const;
76     bool executeKeyword(Keyword &kw);
77     QStringList validKeywords() const;
78
79 public slots:
80     // Activation and navigation keywords.
81     bool kw_Activate(const QStringList&);
82
83     // Property modifying keywords.
84     bool kw_EnterText(const QStringList&);
85     bool kw_SetProperty(const QStringList&);
86
87     // Navigation keywords.
88     bool kw_Select(const QStringList&);
89     bool kw_SelectIndex(const QStringList&);
90     bool kw_SelectMenu(const QStringList&);
91     bool kw_SelectTabBar(const QStringList&);
92
93     // Key simulation keywords.
94     bool kw_KeyPress(const QStringList&);
95     bool kw_KeyClick(const QStringList&);
96     bool kw_KeyClickSequence(const QStringList&);
97     bool kw_KeyClickHold(const QStringList&);
98     bool kw_KeyRelease(const QStringList&);
99
100     // Mouse/ touchscreen simulation keywords.
101     bool kw_MouseClick(const QStringList&);
102     bool kw_Tap(const QStringList&);
103
104     bool kw_MouseClickRelative(const QStringList&);
105     bool kw_TapRelative(const QStringList&);
106
107     bool kw_MouseClickHold(const QStringList&);
108     bool kw_TapHold(const QStringList&);
109
110     bool kw_MouseClickHoldRelative(const QStringList&);
111     bool kw_TapHoldRelative(const QStringList&);
112
113     bool kw_MousePress(const QStringList&);
114     bool kw_TapDown(const QStringList&);
115
116     bool kw_MousePressRelative(const QStringList&);
117     bool kw_TapDownRelative(const QStringList&);
118
119     bool kw_MouseRelease(const QStringList&);
120     bool kw_TapRelease(const QStringList&);
121
122     bool kw_MouseReleaseRelative(const QStringList&);
123     bool kw_TapReleaseRelative(const QStringList&);
124
125     // Verification keywords.
126     bool kw_VerifyText(const QStringList&);
127     bool kw_VerifyTitle(const QStringList&);
128     bool kw_VerifyProperty(const QStringList&);
129     bool kw_WaitForText(const QStringList&);
130
131     // Application management keywords
132     bool kw_StartApplication(const QStringList&);
133
134     // Support keywords.
135     bool kw_Wait(const QStringList&);
136
137 protected:
138     virtual void timerEvent(QTimerEvent *event);
139
140 private:
141     // Support methods.
142     int enumConstantToInteger(const QString&, const QString&);
143
144 private:
145     Keyword *m_current;
146     QStringList m_validKeywords;
147     int m_delay;
148     bool m_verificationTimeout;
149     int m_verificationTimerId;
150 };
151
152 #endif // KEYWORD_H