tests/auto/q3dns/tst_q3dns.cpp
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/auto/q3dns/tst_q3dns.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,227 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the test suite of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+
+#include <QtTest/QtTest>
+
+#include <q3dns.h>
+#include <qapplication.h>
+#include <q3socket.h>
+
+//TESTED_CLASS=
+//TESTED_FILES=
+
+class tst_Q3Dns : public QObject
+{
+    Q_OBJECT
+
+public:
+    tst_Q3Dns();
+    virtual ~tst_Q3Dns();
+
+
+public slots:
+    void initTestCase();
+    void cleanupTestCase();
+    void init();
+    void cleanup();
+private slots:
+    void destructor();
+    void literals();
+    void txtRecords();
+    void longTxtRecord();
+    void simpleLookup();
+
+protected slots:
+    void txtRecordAnswer();
+    void longTxtRecordAnswer();
+    void simpleLookupDone();
+};
+
+tst_Q3Dns::tst_Q3Dns()
+{
+}
+
+tst_Q3Dns::~tst_Q3Dns()
+{
+}
+
+void tst_Q3Dns::initTestCase()
+{
+}
+
+void tst_Q3Dns::cleanupTestCase()
+{
+}
+
+void tst_Q3Dns::init()
+{
+}
+
+void tst_Q3Dns::cleanup()
+{
+}
+
+void tst_Q3Dns::destructor()
+{
+    /*
+    The following small program used to crash because of a bug in the Q3Dns
+    constructor that should be fixed by change 67978:
+
+	#include <qapplication.h>
+	#include <qsocket.h>
+
+	int main( int argc, char **argv )
+	{
+	    QApplication a( argc, argv );
+	    Q3Socket *s = new Q3Socket( &a );
+	    s->connectToHost( "ftp.qt.nokia.com", 21 );
+	    return 0;
+	}
+    */
+    int c = 0;
+    char **v = 0;
+    QCoreApplication a(c, v);
+    Q3Socket *s = new Q3Socket(&a);
+    s->connectToHost("ftp.qt.nokia.com", 21);
+
+    // dummy verify since this test only makes shure that it does not crash
+    QVERIFY( TRUE );
+}
+
+void tst_Q3Dns::literals()
+{
+    int c = 0;
+    char **v = 0;
+    QCoreApplication a(c, v);
+
+    Q3Dns ip4literal1("4.2.2.1", Q3Dns::A);
+    QCOMPARE((int) ip4literal1.addresses().count(), 1);
+    QCOMPARE(ip4literal1.addresses().first().toString(), QString("4.2.2.1"));
+
+    Q3Dns ip4literal2("4.2.2.1", Q3Dns::Aaaa);
+    QCOMPARE((int) ip4literal2.addresses().count(), 0);
+
+    Q3Dns ip6literal1("::1", Q3Dns::A);
+    QCOMPARE((int) ip6literal1.addresses().count(), 0);
+
+    Q3Dns ip6literal2("::1", Q3Dns::Aaaa);
+    QCOMPARE(ip6literal2.addresses().first().toString(), QString("0:0:0:0:0:0:0:1"));
+    QCOMPARE((int) ip6literal2.addresses().count(), 1);
+}
+
+void tst_Q3Dns::txtRecords()
+{
+    QSKIP("TXT record support is broken.", SkipAll);
+    int argc = 0;
+    char **argv = 0;
+    QCoreApplication qapp(argc, argv);
+
+    Q3Dns dns("Sales._ipp._tcp.dns-sd.org", Q3Dns::Txt);
+    connect(&dns, SIGNAL(resultsReady()), SLOT(txtRecordAnswer()));
+    QTestEventLoop::instance().enterLoop(10);
+    if (QTestEventLoop::instance().timeout())
+        QFAIL("Timed out while looking up TXT record for Sales._ipp._tcp.dns-sd.org");
+
+    QStringList texts = dns.texts();
+#if defined Q_OS_DARWIN
+    QSKIP("TXT records in Q3Dns don't work for Mac OS X.", SkipSingle);
+#endif
+    QVERIFY(!texts.isEmpty());
+    QCOMPARE(texts.at(0), QString("rp=lpt1"));
+}
+
+void tst_Q3Dns::txtRecordAnswer()
+{
+    QTestEventLoop::instance().exitLoop();
+}
+
+void tst_Q3Dns::longTxtRecord()
+{
+    QSKIP("Long TXT records in Q3Dns don't work.", SkipSingle);
+
+    int c = 0;
+    char **v = 0;
+    QCoreApplication a(c, v);
+
+    Q3Dns dns(QString::fromLatin1("andreas.hanssen.name"), Q3Dns::Txt);
+    QObject::connect(&dns, SIGNAL(resultsReady()), this, SLOT(longTxtRecordAnswer()));
+
+    QTestEventLoop::instance().enterLoop(30);
+    if (QTestEventLoop::instance().timeout())
+	QFAIL("Network operation timed out");
+
+    QStringList list = dns.texts();
+
+    QCOMPARE(list.count(), 1);
+    QCOMPARE(list[0], QString::fromLatin1("I have a remarkable solution to Fermat's last theorem, but it doesn't fit into this TXT record"));
+}
+
+void tst_Q3Dns::longTxtRecordAnswer()
+{
+    QTestEventLoop::instance().exitLoop();
+}
+
+void tst_Q3Dns::simpleLookup()
+{
+    // Stuff
+    int c = 0;
+    char **v = 0;
+    QCoreApplication a(c, v);
+    Q3Dns dns("qt.nokia.com");
+
+    QSignalSpy spy(&dns, SIGNAL(resultsReady()));
+    connect(&dns, SIGNAL(resultsReady()), this, SLOT(simpleLookupDone()));
+    QTestEventLoop::instance().enterLoop(5);
+    if (QTestEventLoop::instance().timeout())
+        QFAIL("Network operation timed out");
+    QCOMPARE(spy.count(), 1);
+}
+
+void tst_Q3Dns::simpleLookupDone()
+{
+    QTestEventLoop::instance().exitLoop();
+}
+
+
+QTEST_APPLESS_MAIN(tst_Q3Dns)
+#include "tst_q3dns.moc"
+