void tst_QOrganizerItemDetailDefinition::testGetSet() { QOrganizerItemDetailDefinition 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, QOrganizerItemDetailFieldDefinition> map; QOrganizerItemDetailFieldDefinition 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, QOrganizerItemDetailFieldDefinition>()); QVERIFY(def.fields().isEmpty()); }
void tst_QOrganizerItemDetailDefinition::testDebugStreamOut() { // Testing QOrganizerItemDetailDefinition QOrganizerItemDetailDefinition def; // Test the empty case QVERIFY(def.isEmpty()); QVERIFY(def.name().isEmpty()); QVERIFY(def.fields().isEmpty()); QVERIFY(def.isUnique() == false); QTest::ignoreMessage(QtDebugMsg, "QOrganizerItemDetailDefinition(name=\"\",isUnique=false,isEmpty=true,fields=QMap() )"); qDebug() << def; // Test the completely filled-in case QMap<QString, QOrganizerItemDetailFieldDefinition> map; QOrganizerItemDetailFieldDefinition currField; currField.setAllowableValues(QVariantList() << "One" << "Two" << "Three"); 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); QTest::ignoreMessage(QtDebugMsg, "QOrganizerItemDetailDefinition(name=\"Test ID\",isUnique=true,isEmpty=false,fields=QMap((\"datetime\", QOrganizerItemDetailFieldDefinition(dataType=16,allowableValues=(QVariant(QString, \"One\") , QVariant(QString, \"Two\") , QVariant(QString, \"Three\") ) ))(\"string\", QOrganizerItemDetailFieldDefinition(dataType=10,allowableValues=(QVariant(QString, \"One\") , QVariant(QString, \"Two\") , QVariant(QString, \"Three\") ) ))) )"); qDebug() << def; // Testing QOrganizerItemDetailFieldDefinition QOrganizerItemDetailFieldDefinition f; // Test the empty case QTest::ignoreMessage(QtDebugMsg, "QOrganizerItemDetailFieldDefinition(dataType=0,allowableValues=() )"); qDebug() << f; // Test the completely filled case QMap<QString, QOrganizerItemDetailFieldDefinition> allFields; QVariantList allowedStrings; allowedStrings << QString("First") << QString("Second"); QOrganizerItemDetailFieldDefinition dfd; dfd.setDataType(QVariant::String); dfd.setAllowableValues(allowedStrings); allFields.insert("TestFieldDefinition", dfd); QTest::ignoreMessage(QtDebugMsg, "QOrganizerItemDetailFieldDefinition(dataType=10,allowableValues=(QVariant(QString, \"First\") , QVariant(QString, \"Second\") ) )"); qDebug() << dfd; }
void tst_QOrganizerItemDetailDefinition::testCtor() { QOrganizerItemDetailDefinition 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, QOrganizerItemDetailFieldDefinition> map; QOrganizerItemDetailFieldDefinition 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); QOrganizerItemDetailDefinition def2(def); QVERIFY(def2.name() == "Test ID"); QVERIFY(def2.isUnique()); QVERIFY(def2.fields() == map); QOrganizerItemDetailDefinition 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_QOrganizerItemDetailDefinition::testStreaming() { QMap<QString, QOrganizerItemDetailFieldDefinition> allFields; QVariantList allowedStrings; allowedStrings << QString("First") << QString("Second"); // generate some field definitions QOrganizerItemDetailFieldDefinition dfd; dfd.setDataType(QVariant::String); dfd.setAllowableValues(allowedStrings); allFields.insert("TestFieldDefinition", dfd); dfd.setDataType(QVariant::Int); dfd.setAllowableValues(QVariantList()); allFields.insert("TestCount", dfd); // now create our detail definition QOrganizerItemDetailDefinition dd; dd.setName("TestDefinitionName"); dd.setUnique(true); dd.setFields(allFields); // testing streaming of field definition, with no allowable values set { QByteArray buffer; QOrganizerItemDetailFieldDefinition fieldDefIn = allFields.value("TestCount"); QOrganizerItemDetailFieldDefinition fieldDefOut; QDataStream stream1(&buffer, QIODevice::WriteOnly); stream1 << fieldDefIn; QVERIFY(buffer.size() > 0); QDataStream stream2(buffer); stream2 >> fieldDefOut; QVERIFY(fieldDefIn == fieldDefOut); } // testing streaming of field definition, with specific allowable values set { QByteArray buffer; QOrganizerItemDetailFieldDefinition fieldDefIn = allFields.value("TestFieldDefinition"); QOrganizerItemDetailFieldDefinition fieldDefOut; QDataStream stream1(&buffer, QIODevice::WriteOnly); stream1 << fieldDefIn; QVERIFY(buffer.size() > 0); QDataStream stream2(buffer); stream2 >> fieldDefOut; QVERIFY(fieldDefIn == fieldDefOut); } // testing streaming of detail definition { QByteArray buffer; QOrganizerItemDetailDefinition defIn = dd; QOrganizerItemDetailDefinition defOut; QDataStream stream1(&buffer, QIODevice::WriteOnly); stream1 << defIn; QVERIFY(buffer.size() > 0); QDataStream stream2(buffer); stream2 >> defOut; QVERIFY(defIn == defOut); } // now try inserting and removing a field, streaming again, and testing. { // remove the field QByteArray buffer; QOrganizerItemDetailDefinition defIn = dd; defIn.removeField("TestCount"); QVERIFY(defIn != dd); QOrganizerItemDetailDefinition defOut; QDataStream stream1(&buffer, QIODevice::WriteOnly); stream1 << defIn; QVERIFY(buffer.size() > 0); QDataStream stream2(buffer); stream2 >> defOut; QVERIFY(defIn == defOut); } { // re-add the field. QByteArray buffer; QOrganizerItemDetailDefinition defIn = dd; defIn.removeField("TestCount"); // remove and reinsert the field QVERIFY(defIn != dd); defIn.insertField("TestCount", dfd); QVERIFY(defIn == dd); QOrganizerItemDetailDefinition defOut; QDataStream stream1(&buffer, QIODevice::WriteOnly); stream1 << defIn; QVERIFY(buffer.size() > 0); QDataStream stream2(buffer); stream2 >> defOut; QVERIFY(defIn == defOut); QVERIFY(defOut == dd); // should be equal to the original. } }