diff -r 000000000000 -r 1918ee327afb tests/auto/q3dns/tst_q3dns.cpp --- /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 + +#include +#include +#include + +//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 + #include + + 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" +