diff options
Diffstat (limited to 'tests/auto/q3dns')
-rw-r--r-- | tests/auto/q3dns/.gitignore | 1 | ||||
-rw-r--r-- | tests/auto/q3dns/q3dns.pro | 7 | ||||
-rw-r--r-- | tests/auto/q3dns/tst_q3dns.cpp | 227 |
3 files changed, 235 insertions, 0 deletions
diff --git a/tests/auto/q3dns/.gitignore b/tests/auto/q3dns/.gitignore new file mode 100644 index 0000000..f3b0972 --- /dev/null +++ b/tests/auto/q3dns/.gitignore @@ -0,0 +1 @@ +tst_q3dns diff --git a/tests/auto/q3dns/q3dns.pro b/tests/auto/q3dns/q3dns.pro new file mode 100644 index 0000000..10c24e5 --- /dev/null +++ b/tests/auto/q3dns/q3dns.pro @@ -0,0 +1,7 @@ +load(qttest_p4) +SOURCES += tst_q3dns.cpp + + +QT += network qt3support + + diff --git a/tests/auto/q3dns/tst_q3dns.cpp b/tests/auto/q3dns/tst_q3dns.cpp new file mode 100644 index 0000000..e71045c --- /dev/null +++ b/tests/auto/q3dns/tst_q3dns.cpp @@ -0,0 +1,227 @@ +/**************************************************************************** +** +** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). +** Contact: Qt Software Information (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 either Technology Preview License Agreement or the +** Beta Release License Agreement. +** +** 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.0, included in the file LGPL_EXCEPTION.txt in this +** package. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3.0 as published by the Free Software +** Foundation and appearing in the file LICENSE.GPL included in the +** packaging of this file. Please review the following information to +** ensure the GNU General Public License version 3.0 requirements will be +** met: http://www.gnu.org/copyleft/gpl.html. +** +** If you are unsure which license is appropriate for your use, please +** contact the sales department at qt-sales@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.trolltech.com", 21 ); + return 0; + } + */ + int c = 0; + char **v = 0; + QCoreApplication a(c, v); + Q3Socket *s = new Q3Socket(&a); + s->connectToHost("ftp.trolltech.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("www.trolltech.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" + |