tests/auto/qcontactdetaildefinition/tst_qcontactdetaildefinition.cpp
changeset 0 876b1a06bc25
--- /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 <QtTest/QtTest>
+
+#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<QString, QContactDetailFieldDefinition> 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<QString, QContactDetailFieldDefinition> 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<QString, QContactDetailFieldDefinition>());
+    QVERIFY(def.fields().isEmpty());
+
+    /* Non const accessor - XXX TODO: remove after deprecation transition period. */
+    //def.fields() = map;
+    //QVERIFY(def.fields() == map);
+    //
+    //QMap<QString, QContactDetailDefinitionField>& 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<QString, QContactDetailFieldDefinition> 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<QString, QContactDetailFieldDefinition> 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<QTM_PREPEND_NAMESPACE(QContactDetailDefinition)> 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<QTM_PREPEND_NAMESPACE(QContactDetailFieldDefinition)> ti;
+    QVERIFY(ti.isComplex);
+    QVERIFY(!ti.isStatic);
+    QVERIFY(!ti.isLarge);
+    QVERIFY(!ti.isPointer);
+    QVERIFY(!ti.isDummy);
+}
+
+
+QTEST_MAIN(tst_QContactDetailDefinition)
+#include "tst_qcontactdetaildefinition.moc"