diff -r 000000000000 -r 876b1a06bc25 tests/auto/qcontactdetaildefinition/tst_qcontactdetaildefinition.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tests/auto/qcontactdetaildefinition/tst_qcontactdetaildefinition.cpp Wed Aug 25 15:49:42 2010 +0300 @@ -0,0 +1,300 @@ +/**************************************************************************** +** +** Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies). +** All rights reserved. +** Contact: Nokia Corporation (qt-info@nokia.com) +** +** This file is part of the Qt Mobility Components. +** +** $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 "qtcontacts.h" + +//TESTED_CLASS= +//TESTED_FILES= + +QTM_USE_NAMESPACE +class tst_QContactDetailDefinition: public QObject +{ +Q_OBJECT + +public: + tst_QContactDetailDefinition(); + virtual ~tst_QContactDetailDefinition(); + +public slots: + void init(); + void cleanup(); +private slots: + void testCtor(); + void testGetSet(); + void testEquality(); + void testEmpty(); + void traits(); + void fieldTraits(); +}; + +tst_QContactDetailDefinition::tst_QContactDetailDefinition() +{ +} + +tst_QContactDetailDefinition::~tst_QContactDetailDefinition() +{ +} + +void tst_QContactDetailDefinition::init() +{ +} + +void tst_QContactDetailDefinition::cleanup() +{ +} + + +void tst_QContactDetailDefinition::testCtor() +{ + QContactDetailDefinition def; + + /* Check the ctor sets sane things */ + QVERIFY(def.isEmpty()); + QVERIFY(def.name().isEmpty()); + QVERIFY(def.fields().isEmpty()); + QVERIFY(def.isUnique() == false); + + /* Set a few things */ + QMap map; + QContactDetailFieldDefinition currField; + currField.setDataType(QVariant::String); + map.insert("string", currField); + currField.setDataType(QVariant::DateTime); + map.insert("datetime", currField); + + def.setName("Test ID"); + def.setUnique(true); + def.setFields(map); + + QVERIFY(def.name() == "Test ID"); + QVERIFY(def.isUnique()); + QVERIFY(def.fields() == map); + + QContactDetailDefinition def2(def); + + QVERIFY(def2.name() == "Test ID"); + QVERIFY(def2.isUnique()); + QVERIFY(def2.fields() == map); + + QContactDetailDefinition def3; + def3 = def2; + + QVERIFY(def3.name() == "Test ID"); + QVERIFY(def3.isUnique()); + QVERIFY(def3.fields() == map); + + /* Make sure they aren't improperly shared */ + def.setName("id one"); + QVERIFY(def2.name() != def.name()); + QVERIFY(def3.name() != def.name()); + + def2.setName("id two"); + QVERIFY(def2.name() != def3.name()); +} + +void tst_QContactDetailDefinition::testGetSet() +{ + QContactDetailDefinition def; + + /* Id */ + def.setName("this is the id"); + QVERIFY(def.name() == "this is the id"); + + def.setName(QString()); + QVERIFY(def.name() == QString()); + + /* Uniqueness */ + def.setUnique(true); + QVERIFY(def.isUnique() == true); + + def.setUnique(false); + QVERIFY(def.isUnique() == false); + + /* Type map */ + QMap map; + QContactDetailFieldDefinition currField; + currField.setDataType(QVariant::String); + map.insert("string", currField); + currField.setDataType(QVariant::DateTime); + map.insert("datetime", currField); + + def.setFields(map); + QVERIFY(def.fields() == map); + + def.setFields(QMap()); + QVERIFY(def.fields().isEmpty()); + + /* Non const accessor - XXX TODO: remove after deprecation transition period. */ + //def.fields() = map; + //QVERIFY(def.fields() == map); + // + //QMap& rmap = def.fields(); + //def.fields().clear(); + //QVERIFY(rmap == def.fields()); +} + +void tst_QContactDetailDefinition::testEmpty() +{ + QContactDetailDefinition def; + + QVERIFY(def.isEmpty()); + + def.setName("Name"); + QVERIFY(!def.isEmpty()); + def.setName(QString()); + QVERIFY(def.isEmpty()); + QMap fields; + QContactDetailFieldDefinition f; + f.setDataType(QVariant::String); + fields.insert("Field", f); + def.setFields(fields); + QVERIFY(!def.isEmpty()); + + def.setName("Name"); + QVERIFY(!def.isEmpty()); + + fields.clear(); + def.setFields(fields); + QVERIFY(!def.isEmpty()); + + def.setName(QString()); + QVERIFY(def.isEmpty()); +} + +void tst_QContactDetailDefinition::testEquality() +{ + /* Create a few */ + QContactDetailDefinition def1, def2; + + /* Both empty, should be equal */ + QVERIFY(def1 == def2); + QVERIFY(def2 == def1); + + /* Change id first */ + def1.setName("id"); + QVERIFY(def1 != def2); + QVERIFY(def2 != def1); + + def2.setName("id"); + QVERIFY(def1 == def2); + QVERIFY(def2 == def1); + + /* Then uniqueness */ + def1.setUnique(true); + QVERIFY(def1 != def2); + QVERIFY(def2 != def1); + + def2.setUnique(true); + QVERIFY(def1 == def2); + QVERIFY(def2 == def1); + + /* Test Fields */ + QContactDetailFieldDefinition f1, f2; + QVERIFY(f1 == f2); + QVERIFY(f1.allowableValues().count() == 0); + QVERIFY(f1.dataType() == QVariant::Invalid); + + f1.setDataType(QVariant::String); + QVERIFY(f1 != f2); + f1.setDataType(QVariant::Invalid); + QVERIFY(f1 == f2); + QVariantList vlist; + vlist << "string" << 56; + f1.setAllowableValues(vlist); + QVERIFY(f1 != f2); + f2.setAllowableValues(vlist); + QVERIFY(f1 == f2); + + /* Field map */ + QMap fields; + QContactDetailFieldDefinition currField; + currField.setDataType(QVariant::String); + fields.insert("string", currField); + currField.setDataType(QVariant::DateTime); + fields.insert("datetime", currField); + + def1.setFields(fields); + QVERIFY(def1 != def2); + QVERIFY(def2 != def1); + QVERIFY(def1.fields() != def2.fields()); + + def2.setFields(fields); + QVERIFY(def1 == def2); + QVERIFY(def2 == def1); + QVERIFY(def1.fields() == def2.fields()); + + /* Same map done a different way */ + fields.clear(); + fields.insert("datetime", currField); + currField.setDataType(QVariant::String); + fields.insert("string", currField); + def2.setFields(fields); + QVERIFY(def1 == def2); + QVERIFY(def2 == def1); +} + +void tst_QContactDetailDefinition::traits() +{ + QCOMPARE(sizeof(QContactDetailDefinition), sizeof(void *)); + QTypeInfo ti; + QVERIFY(ti.isComplex); + QVERIFY(!ti.isStatic); + QVERIFY(!ti.isLarge); + QVERIFY(!ti.isPointer); + QVERIFY(!ti.isDummy); +} + +void tst_QContactDetailDefinition::fieldTraits() +{ + QCOMPARE(sizeof(QContactDetailFieldDefinition), sizeof(void *)); + QTypeInfo ti; + QVERIFY(ti.isComplex); + QVERIFY(!ti.isStatic); + QVERIFY(!ti.isLarge); + QVERIFY(!ti.isPointer); + QVERIFY(!ti.isDummy); +} + + +QTEST_MAIN(tst_QContactDetailDefinition) +#include "tst_qcontactdetaildefinition.moc"