diff -r 000000000000 -r 1918ee327afb tests/auto/quuid/tst_quuid.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/auto/quuid/tst_quuid.cpp Mon Jan 11 14:00:40 2010 +0000 @@ -0,0 +1,200 @@ +/**************************************************************************** +** +** 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_QUuid : public QObject +{ + Q_OBJECT + +public: + tst_QUuid(); + +private slots: + void toString(); + void isNull(); + void equal(); + void notEqual(); + + // Only in Qt > 3.2.x + void generate(); + void less(); + void more(); + void variants(); + void versions(); + + void threadUniqueness(); + +public: + // Variables + QUuid uuidA; + QUuid uuidB; +}; + +tst_QUuid::tst_QUuid() +{ + uuidA = "{fc69b59e-cc34-4436-a43c-ee95d128b8c5}"; + uuidB = "{1ab6e93a-b1cb-4a87-ba47-ec7e99039a7b}"; +} + + +void tst_QUuid::toString() +{ + QCOMPARE(uuidA.toString(), QString("{fc69b59e-cc34-4436-a43c-ee95d128b8c5}")); +} + + +void tst_QUuid::isNull() +{ + QVERIFY( !uuidA.isNull() ); + + QUuid should_be_null_uuid; + QVERIFY( should_be_null_uuid.isNull() ); +} + + +void tst_QUuid::equal() +{ + QVERIFY( !(uuidA == uuidB) ); + + QUuid copy(uuidA); + QVERIFY(uuidA == copy); + + QUuid assigned; + assigned = uuidA; + QVERIFY(uuidA == assigned); +} + + +void tst_QUuid::notEqual() +{ + QVERIFY( uuidA != uuidB ); +} + + +void tst_QUuid::generate() +{ + QUuid shouldnt_be_null_uuidA = QUuid::createUuid(); + QUuid shouldnt_be_null_uuidB = QUuid::createUuid(); + QVERIFY( !shouldnt_be_null_uuidA.isNull() ); + QVERIFY( !shouldnt_be_null_uuidB.isNull() ); + QVERIFY( shouldnt_be_null_uuidA != shouldnt_be_null_uuidB ); +} + + +void tst_QUuid::less() +{ + QVERIFY( !(uuidA < uuidB) ); + + QUuid null_uuid; + QVERIFY(null_uuid < uuidA); // Null uuid is always less than a valid one +} + + +void tst_QUuid::more() +{ + QVERIFY( uuidA > uuidB ); + + QUuid null_uuid; + QVERIFY( !(null_uuid > uuidA) ); // Null uuid is always less than a valid one +} + + +void tst_QUuid::variants() +{ + QVERIFY( uuidA.variant() == QUuid::DCE ); + QVERIFY( uuidB.variant() == QUuid::DCE ); + + QUuid NCS = "{3a2f883c-4000-000d-0000-00fb40000000}"; + QVERIFY( NCS.variant() == QUuid::NCS ); +} + + +void tst_QUuid::versions() +{ + QVERIFY( uuidA.version() == QUuid::Random ); + QVERIFY( uuidB.version() == QUuid::Random ); + + QUuid DCE_time= "{406c45a0-3b7e-11d0-80a3-0000c08810a7}"; + QVERIFY( DCE_time.version() == QUuid::Time ); + + QUuid NCS = "{3a2f883c-4000-000d-0000-00fb40000000}"; + QVERIFY( NCS.version() == QUuid::VerUnknown ); +} + +class UuidThread : public QThread +{ +public: + QUuid uuid; + + void run() + { + uuid = QUuid::createUuid(); + } +}; + +void tst_QUuid::threadUniqueness() +{ + QVector threads(qMax(2, QThread::idealThreadCount())); + for (int i = 0; i < threads.count(); ++i) + threads[i] = new UuidThread; + for (int i = 0; i < threads.count(); ++i) + threads[i]->start(); + for (int i = 0; i < threads.count(); ++i) + QVERIFY(threads[i]->wait(1000)); + for (int i = 1; i < threads.count(); ++i) + QVERIFY(threads[0]->uuid != threads[i]->uuid); + qDeleteAll(threads); +} + +QTEST_MAIN(tst_QUuid) +#include "tst_quuid.moc"