Rework call forwarding tests
[profile/ivi/ofono-qt.git] / tests / test_ofonocallforwarding.cpp
1 /*
2  * This file is part of ofono-qt
3  *
4  * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
5  *
6  * Contact: Alexander Kanavin <alexander.kanavin@nokia.com>
7  *
8  * This library 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 #include <QtTest/QtTest>
25 #include <QtCore/QObject>
26
27 #include <ofonocallforwarding.h>
28
29 #include <QtDebug>
30
31
32 class TestOfonoCallForwarding : public QObject
33 {
34     Q_OBJECT
35
36 private slots:
37     void initTestCase()
38     {
39         m = new OfonoCallForwarding(OfonoModem::ManualSelect, "/phonesim", this);
40         QCOMPARE(m->modem()->isValid(), true);  
41
42         if (!m->modem()->powered()) {
43             m->modem()->setPowered(true);
44             QTest::qWait(5000);
45         }
46         if (!m->modem()->online()) {
47             m->modem()->setOnline(true);
48             QTest::qWait(5000);
49         }
50         QCOMPARE(m->isValid(), true);
51     }
52
53     void testOfonoCallForwarding()
54     {
55         QSignalSpy voiceUnconditionalComplete(m, SIGNAL(voiceUnconditionalComplete(bool, QString)));
56         QSignalSpy voiceBusyComplete(m, SIGNAL(voiceBusyComplete(bool, QString)));
57         QSignalSpy voiceNoReplyComplete(m, SIGNAL(voiceNoReplyComplete(bool, QString)));
58         QSignalSpy voiceNoReplyTimeoutComplete(m, SIGNAL(voiceNoReplyTimeoutComplete(bool, ushort)));
59         QSignalSpy voiceNotReachableComplete(m, SIGNAL(voiceNotReachableComplete(bool, QString)));
60
61         QSignalSpy voiceUnconditionalChanged(m, SIGNAL(voiceUnconditionalChanged(QString)));        
62         QSignalSpy voiceBusyChanged(m, SIGNAL(voiceBusyChanged(QString)));        
63         QSignalSpy voiceNoReplyChanged(m, SIGNAL(voiceNoReplyChanged(QString)));        
64         QSignalSpy voiceNoReplyTimeoutChanged(m, SIGNAL(voiceNoReplyTimeoutChanged(ushort)));        
65         QSignalSpy voiceNotReachableChanged(m, SIGNAL(voiceNotReachableChanged(QString)));        
66
67         QSignalSpy setVoiceUnconditionalFailed(m, SIGNAL(setVoiceUnconditionalFailed()));
68         QSignalSpy setVoiceBusyFailed(m, SIGNAL(setVoiceBusyFailed()));
69         QSignalSpy setVoiceNoReplyFailed(m, SIGNAL(setVoiceNoReplyFailed()));
70         QSignalSpy setVoiceNoReplyTimeoutFailed(m, SIGNAL(setVoiceNoReplyTimeoutFailed()));
71         QSignalSpy setVoiceNotReachableFailed(m, SIGNAL(setVoiceNotReachableFailed()));
72
73         QSignalSpy disableAllComplete(m, SIGNAL(disableAllComplete(bool)));
74     
75         m->requestVoiceUnconditional();
76         QTest::qWait(1000);
77         QCOMPARE(voiceUnconditionalComplete.count(), 1);
78         QVariantList list = voiceUnconditionalComplete.takeFirst();
79         QCOMPARE(list.at(0).toBool(), true);
80         QCOMPARE(list.at(1).toString(), QString(""));
81         QCOMPARE(voiceUnconditionalChanged.count(), 1); 
82         QCOMPARE(voiceUnconditionalChanged.takeFirst().at(0).toString(), QString(""));  
83         m->requestVoiceBusy();
84         QTest::qWait(1000);
85         QCOMPARE(voiceBusyComplete.count(), 1);
86         list = voiceBusyComplete.takeFirst();
87         QCOMPARE(list.at(0).toBool(), true);
88         QCOMPARE(list.at(1).toString(), QString(""));
89         QCOMPARE(voiceBusyChanged.count(), 1);  
90         QCOMPARE(voiceBusyChanged.takeFirst().at(0).toString(), QString(""));   
91         m->requestVoiceNoReply();
92         QTest::qWait(1000);
93         QCOMPARE(voiceNoReplyComplete.count(), 1);
94         list = voiceNoReplyComplete.takeFirst();
95         QCOMPARE(list.at(0).toBool(), true);
96         QCOMPARE(list.at(1).toString(), QString(""));
97         QCOMPARE(voiceNoReplyChanged.count(), 1);       
98         QCOMPARE(voiceNoReplyChanged.takeFirst().at(0).toString(), QString(""));        
99         m->requestVoiceNoReplyTimeout();
100         QTest::qWait(1000);
101         QCOMPARE(voiceNoReplyTimeoutComplete.count(), 1);
102         list = voiceNoReplyTimeoutComplete.takeFirst();
103         QCOMPARE(list.at(0).toBool(), true);
104         QCOMPARE(list.at(1).toUInt(), uint(20));
105         QCOMPARE(voiceNoReplyTimeoutChanged.count(), 1);        
106         QCOMPARE(voiceNoReplyTimeoutChanged.takeFirst().at(0).toUInt(), uint(20));
107         m->requestVoiceNotReachable();
108         QTest::qWait(1000);
109         QCOMPARE(voiceNotReachableComplete.count(), 1);
110         list = voiceNotReachableComplete.takeFirst();
111         QCOMPARE(list.at(0).toBool(), true);
112         QCOMPARE(list.at(1).toString(), QString(""));
113         QCOMPARE(voiceNotReachableChanged.count(), 1);  
114         QCOMPARE(voiceNotReachableChanged.takeFirst().at(0).toString(), QString(""));
115         
116         m->setVoiceUnconditional("abc");
117         QTest::qWait(1000);
118         QCOMPARE(setVoiceUnconditionalFailed.count(), 1);
119         setVoiceUnconditionalFailed.takeFirst();
120         m->setVoiceBusy("abc");
121         QTest::qWait(1000);
122         QCOMPARE(setVoiceBusyFailed.count(), 1);
123         setVoiceBusyFailed.takeFirst();
124         m->setVoiceNoReply("abc");
125         QTest::qWait(1000);
126         QCOMPARE(setVoiceNoReplyFailed.count(), 1);
127         setVoiceNoReplyFailed.takeFirst();
128         m->setVoiceNoReplyTimeout(-30);
129         QTest::qWait(1000);
130         QCOMPARE(setVoiceNoReplyTimeoutFailed.count(), 1);
131         setVoiceNoReplyTimeoutFailed.takeFirst();
132         m->setVoiceNotReachable("abc");
133         QTest::qWait(1000);
134         QCOMPARE(setVoiceNotReachableFailed.count(), 1);
135         setVoiceNotReachableFailed.takeFirst();
136
137         m->setVoiceBusy("12345678");
138         QTest::qWait(1000);
139         m->setVoiceNoReply("12345678");
140         QTest::qWait(1000);
141         m->setVoiceNoReplyTimeout(30);
142         QTest::qWait(1000);
143         m->setVoiceNotReachable("12345678");
144         QTest::qWait(1000);
145         m->setVoiceUnconditional("12345678");
146         QTest::qWait(1000);
147
148         m->requestVoiceUnconditional();
149         QTest::qWait(1000);
150         QCOMPARE(voiceUnconditionalComplete.count(), 1);
151         list = voiceUnconditionalComplete.takeFirst();
152         QCOMPARE(list.at(0).toBool(), true);
153         QCOMPARE(list.at(1).toString(), QString("12345678"));
154         QCOMPARE(voiceUnconditionalChanged.count(), 1); 
155         QCOMPARE(voiceUnconditionalChanged.takeFirst().at(0).toString(), QString("12345678"));  
156         m->requestVoiceBusy();
157         QTest::qWait(1000);
158         QCOMPARE(voiceBusyComplete.count(), 1);
159         list = voiceBusyComplete.takeFirst();
160         QCOMPARE(list.at(0).toBool(), true);
161         QCOMPARE(list.at(1).toString(), QString("12345678"));
162         QCOMPARE(voiceBusyChanged.count(), 1);  
163         QCOMPARE(voiceBusyChanged.takeFirst().at(0).toString(), QString("12345678"));   
164         m->requestVoiceNoReply();
165         QTest::qWait(1000);
166         QCOMPARE(voiceNoReplyComplete.count(), 1);
167         list = voiceNoReplyComplete.takeFirst();
168         QCOMPARE(list.at(0).toBool(), true);
169         QCOMPARE(list.at(1).toString(), QString("12345678"));
170         QCOMPARE(voiceNoReplyChanged.count(), 1);       
171         QCOMPARE(voiceNoReplyChanged.takeFirst().at(0).toString(), QString("12345678"));        
172         m->requestVoiceNoReplyTimeout();
173         QTest::qWait(1000);
174         QCOMPARE(voiceNoReplyTimeoutComplete.count(), 1);
175         list = voiceNoReplyTimeoutComplete.takeFirst();
176         QCOMPARE(list.at(0).toBool(), true);
177         QCOMPARE(list.at(1).toUInt(), uint(30));
178         QCOMPARE(voiceNoReplyTimeoutChanged.count(), 1);        
179         QCOMPARE(voiceNoReplyTimeoutChanged.takeFirst().at(0).toUInt(), uint(30));
180         m->requestVoiceNotReachable();
181         QTest::qWait(1000);
182         QCOMPARE(voiceNotReachableComplete.count(), 1);
183         list = voiceNotReachableComplete.takeFirst();
184         QCOMPARE(list.at(0).toBool(), true);
185         QCOMPARE(list.at(1).toString(), QString("12345678"));
186         QCOMPARE(voiceNotReachableChanged.count(), 1);  
187         QCOMPARE(voiceNotReachableChanged.takeFirst().at(0).toString(), QString("12345678"));
188
189         m->disableAll("all");
190         QTest::qWait(1000);
191         QCOMPARE(disableAllComplete.count(), 1);
192         QCOMPARE(disableAllComplete.takeFirst().at(0).toBool(), true);
193         QCOMPARE(voiceUnconditionalChanged.count(), 1); 
194         QCOMPARE(voiceUnconditionalChanged.takeFirst().at(0).toString(), QString(""));  
195         QCOMPARE(voiceBusyChanged.count(), 1);  
196         QCOMPARE(voiceBusyChanged.takeFirst().at(0).toString(), QString(""));   
197         QCOMPARE(voiceNoReplyChanged.count(), 1);       
198         QCOMPARE(voiceNoReplyChanged.takeFirst().at(0).toString(), QString(""));        
199         QCOMPARE(voiceNoReplyTimeoutChanged.count(), 1);        
200         QCOMPARE(voiceNoReplyTimeoutChanged.takeFirst().at(0).toUInt(), uint(20));
201         QCOMPARE(voiceNotReachableChanged.count(), 1);  
202         QCOMPARE(voiceNotReachableChanged.takeFirst().at(0).toString(), QString(""));
203     }
204
205
206     void cleanupTestCase()
207     {
208
209     }
210
211
212 private:
213     OfonoCallForwarding *m;
214 };
215
216 QTEST_MAIN(TestOfonoCallForwarding)
217 #include "test_ofonocallforwarding.moc"