Rework network operator test
authorAlexander Kanavin <alexander.kanavin@nokia.com>
Mon, 20 Dec 2010 14:53:01 +0000 (16:53 +0200)
committerAlexander Kanavin <alexander.kanavin@nokia.com>
Mon, 20 Dec 2010 14:53:01 +0000 (16:53 +0200)
lib/ofononetworkoperator.cpp
lib/ofononetworkoperator.h
tests/test_ofononetworkoperator.cpp

index 4cda895..15a4cc2 100644 (file)
@@ -38,6 +38,19 @@ OfonoNetworkOperator::OfonoNetworkOperator(const QString& operatorId, QObject *p
             this, SLOT(propertyChanged(const QString&, const QVariant&)));
 }
 
+OfonoNetworkOperator::OfonoNetworkOperator(const OfonoNetworkOperator& op)
+    : QObject(op.parent())
+{
+    m_if = new OfonoInterface(op.path(), "org.ofono.NetworkOperator", OfonoGetAllOnStartup, this);
+    connect(m_if, SIGNAL(propertyChanged(const QString&, const QVariant&)), 
+            this, SLOT(propertyChanged(const QString&, const QVariant&)));
+}    
+    
+bool OfonoNetworkOperator::operator==(const OfonoNetworkOperator &op)
+{
+    return path() == op.path();
+}
+
 OfonoNetworkOperator::~OfonoNetworkOperator()
 {
 }
index 0b0fa5b..e9c75f8 100644 (file)
@@ -44,7 +44,10 @@ class OFONO_QT_EXPORT OfonoNetworkOperator : public QObject
     Q_OBJECT
 public:
     OfonoNetworkOperator(const QString& operatorId, QObject *parent=0);
+    OfonoNetworkOperator(const OfonoNetworkOperator& op);
     ~OfonoNetworkOperator();
+    
+    bool operator==(const OfonoNetworkOperator &op);
 
     //! Returns the D-Bus object path of the network operator object
     QString path() const;
index e08e74b..7b67ccc 100644 (file)
@@ -24,6 +24,7 @@
 #include <QtTest/QtTest>
 #include <QtCore/QObject>
 
+#include <ofononetworkregistration.h>
 #include <ofononetworkoperator.h>
 
 #include <QtDebug>
@@ -34,38 +35,93 @@ class TestOfonoNetworkOperator : public QObject
     Q_OBJECT
 
 private slots:
-
-    void statusChanged(QString status)
-    {
-       qDebug() << "statusChanged" << status;
-    }
-
-    void registerComplete(bool success)
-    {
-       qDebug() << "registerComplete:" << success;
-    }
-
     void initTestCase()
     {
-       m = new OfonoNetworkOperator("/phonesim/operator/23406", this);
-       connect(m, SIGNAL(registerComplete(bool)), this, 
-               SLOT(registerComplete(bool)));
-       connect(m, SIGNAL(statusChanged(QString)), 
-               this, 
-               SLOT(statusChanged(QString)));
+       m = new OfonoNetworkRegistration(OfonoModem::ManualSelect, "/phonesim", this);
+       QCOMPARE(m->modem()->isValid(), true);  
+
+       if (!m->modem()->powered()) {
+           m->modem()->setPowered(true);
+            QTest::qWait(5000);
+        }
+        if (!m->modem()->online()) {
+           m->modem()->setOnline(true);
+            QTest::qWait(5000);
+        }
+       QCOMPARE(m->isValid(), true);
     }
 
     void testOfonoNetworkOperator()
     {
-       qDebug() << "name():" << m->name();
-       qDebug() << "status():" << m->status();
-       qDebug() << "mobileCountryCode():" << m->mcc();
-       qDebug() << "mobileNetworkCode():" << m->mnc();
-       qDebug() << "technologies():" << m->technologies();
-       qDebug() << "additionalInfo():" << m->additionalInfo();
-       m->registerOp();
-
-       QTest::qWait(120000);
+       QSignalSpy scan(m, SIGNAL(scanComplete(bool, QStringList)));
+       m->scan();
+       QTest::qWait(5000);
+       QCOMPARE(scan.count(), 1);
+       QVariantList scanList = scan.takeFirst();
+       QCOMPARE(scanList.at(0).toBool(), true);
+       QStringList opIdList = scanList.at(1).toStringList();
+       QVERIFY(opIdList.count() > 0);
+
+       QList<OfonoNetworkOperator> opList;
+       foreach(QString opId, opIdList)
+       {
+           opList << OfonoNetworkOperator(opId);
+       }
+
+       int op1 = -1;
+       int op2 = -1;
+       foreach(OfonoNetworkOperator op, opList) {
+           if (op1 == -1 && op.status() == "current")
+               op1 = opList.indexOf(op);
+           if (op2 == -1 && op.status() == "available")
+               op2 = opList.indexOf(op);
+       }
+       QVERIFY(op1 != -1);
+       QVERIFY(op2 != -1);
+       QVERIFY(opList[op1].name().length() > 0);
+       QVERIFY(opList[op2].name().length() > 0);               
+       QVERIFY(opList[op1].mcc().length() > 0);
+       QVERIFY(opList[op2].mcc().length() > 0);                
+       QVERIFY(opList[op1].mnc().length() > 0);
+       QVERIFY(opList[op2].mnc().length() > 0);                
+       QVERIFY(opList[op1].technologies().count() > 0);
+       QVERIFY(opList[op2].technologies().count() > 0);                
+
+       QSignalSpy op1Register(&opList[op1], SIGNAL(registerComplete(bool)));
+       QSignalSpy op2Register(&opList[op2], SIGNAL(registerComplete(bool)));
+       QSignalSpy op1Status(&opList[op1], SIGNAL(statusChanged(QString)));
+       QSignalSpy op2Status(&opList[op2], SIGNAL(statusChanged(QString)));
+
+       QSignalSpy mode(m, SIGNAL(modeChanged(QString)));
+       QSignalSpy status(m, SIGNAL(statusChanged(QString)));   
+       QSignalSpy lac(m, SIGNAL(locationAreaCodeChanged(uint)));       
+       QSignalSpy cellId(m, SIGNAL(cellIdChanged(uint)));      
+       QSignalSpy mcc(m, SIGNAL(mccChanged(QString))); 
+       QSignalSpy mnc(m, SIGNAL(mncChanged(QString))); 
+       QSignalSpy tech(m, SIGNAL(technologyChanged(QString))); 
+       QSignalSpy name(m, SIGNAL(nameChanged(QString)));       
+       QSignalSpy strength(m, SIGNAL(strengthChanged(uint)));  
+       QSignalSpy base(m, SIGNAL(baseStationChanged(QString)));        
+       
+       opList[op2].registerOp();
+       QTest::qWait(5000);
+       opList[op1].registerOp();
+       QTest::qWait(5000);
+       
+       QCOMPARE(op1Register.count(), 1);
+       QCOMPARE(op1Register.takeFirst().at(0).toBool(), true);
+       QCOMPARE(op2Register.count(), 1);
+       QCOMPARE(op2Register.takeFirst().at(0).toBool(), true); 
+       QCOMPARE(op1Status.count(), 2);
+       QCOMPARE(op1Status.takeFirst().at(0).toString(), QString("available")); 
+       QCOMPARE(op1Status.takeFirst().at(0).toString(), QString("current"));
+       QCOMPARE(op2Status.count(), 2);
+       QCOMPARE(op2Status.takeFirst().at(0).toString(), QString("current"));
+       QCOMPARE(op2Status.takeFirst().at(0).toString(), QString("available")); 
+       
+       QCOMPARE(mcc.count(), 2);
+       QCOMPARE(mnc.count(), 2);
+       QCOMPARE(name.count(), 2);
     }
 
 
@@ -76,7 +132,7 @@ private slots:
 
 
 private:
-    OfonoNetworkOperator *m;
+    OfonoNetworkRegistration *m;
 };
 
 QTEST_MAIN(TestOfonoNetworkOperator)