summaryrefslogtreecommitdiffstats
path: root/tests/auto/q3dns
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/q3dns')
-rw-r--r--tests/auto/q3dns/.gitignore1
-rw-r--r--tests/auto/q3dns/q3dns.pro7
-rw-r--r--tests/auto/q3dns/tst_q3dns.cpp227
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"
+