bool lessThan(const QServiceInterfaceDescriptor &d1, const QServiceInterfaceDescriptor &d2) { return (d1.majorVersion() < d2.majorVersion()) || ( d1.majorVersion() == d2.majorVersion() && d1.minorVersion() < d2.minorVersion()); }
QDebug operator<<(QDebug dbg, const QServiceInterfaceDescriptor &desc) { if (desc.isValid()) { QString serviceInterface = QString(QLatin1String("%1 %2.%3")).arg(desc.interfaceName()) .arg(desc.majorVersion() < 0 ? '?' : desc.majorVersion()) .arg(desc.minorVersion() < 0 ? '?' : desc.minorVersion()); dbg.nospace() << "QServiceInterfaceDescriptor("; dbg.nospace() << "service=" << desc.serviceName() << ", "; dbg.nospace() << "interface=" << serviceInterface; dbg.nospace() << ")"; } else { dbg.nospace() << "QServiceInterfaceDescriptor(invalid)"; } return dbg.space(); }
void tst_QServiceInterfaceDescriptor::comparison() { QServiceInterfaceDescriptor desc; QVERIFY(desc.majorVersion() == -1); QVERIFY(desc.minorVersion() == -1); QVERIFY(desc.serviceName().isEmpty()); QVERIFY(desc.interfaceName().isEmpty()); QVERIFY(!desc.attribute(QServiceInterfaceDescriptor::Capabilities).isValid()); QVERIFY(!desc.attribute(QServiceInterfaceDescriptor::Location).isValid()); QVERIFY(!desc.attribute(QServiceInterfaceDescriptor::InterfaceDescription).isValid()); QVERIFY(!desc.attribute(QServiceInterfaceDescriptor::ServiceDescription).isValid()); QVERIFY(desc.scope() == QService::UserScope); QVERIFY(!desc.isValid()); QServiceInterfaceDescriptor copy(desc); QVERIFY(copy.majorVersion() == -1); QVERIFY(copy.minorVersion() == -1); QVERIFY(copy.serviceName().isEmpty()); QVERIFY(copy.interfaceName().isEmpty()); QVERIFY(!copy.attribute(QServiceInterfaceDescriptor::Capabilities).isValid()); QVERIFY(!copy.attribute(QServiceInterfaceDescriptor::Location).isValid()); QVERIFY(!copy.attribute(QServiceInterfaceDescriptor::InterfaceDescription).isValid()); QVERIFY(!copy.attribute(QServiceInterfaceDescriptor::ServiceDescription).isValid()); QVERIFY(copy.scope() == QService::UserScope); QVERIFY(!copy.isValid()); QVERIFY(desc == copy); QServiceInterfaceDescriptor valid; QServiceInterfaceDescriptorPrivate *d = new QServiceInterfaceDescriptorPrivate(); QServiceInterfaceDescriptorPrivate::setPrivate(&valid, d); d->serviceName = "name"; d->interfaceName = "interface"; d->major = 3; d->minor = 1; d->attributes.insert(QServiceInterfaceDescriptor::ServiceDescription, QString("mydescription")); d->customAttributes.insert(QString("ckey"), QString("cvalue")); d->scope = QService::SystemScope; QCOMPARE(valid.interfaceName(), QString("interface")); QCOMPARE(valid.serviceName(), QString("name")); QCOMPARE(valid.majorVersion(), 3); QCOMPARE(valid.minorVersion(), 1); QCOMPARE(valid.customAttribute("ckey"), QString("cvalue")); QCOMPARE(valid.attribute(QServiceInterfaceDescriptor::ServiceDescription).toString(), QString("mydescription")); QCOMPARE(valid.attribute(QServiceInterfaceDescriptor::Location).toString(), QString("")); QCOMPARE(valid.scope(), QService::SystemScope); QVERIFY(valid.isValid()); QVERIFY(valid != desc); QVERIFY(desc != valid); //test copy constructor QServiceInterfaceDescriptor validCopy(valid); QVERIFY(valid==validCopy); QVERIFY(validCopy==valid); QServiceInterfaceDescriptorPrivate::getPrivate(&validCopy)->attributes.insert(QServiceInterfaceDescriptor::Location, QString("myValue")); QVERIFY(valid!=validCopy); QVERIFY(validCopy!=valid); QCOMPARE(validCopy.interfaceName(), QString("interface")); QCOMPARE(validCopy.serviceName(), QString("name")); QCOMPARE(validCopy.majorVersion(), 3); QCOMPARE(validCopy.minorVersion(), 1); QCOMPARE(validCopy.attribute(QServiceInterfaceDescriptor::Location).toString(), QString("myValue")); QCOMPARE(validCopy.attribute(QServiceInterfaceDescriptor::ServiceDescription).toString(), QString("mydescription")); QCOMPARE(validCopy.customAttribute("ckey"),QString("cvalue")); QCOMPARE(validCopy.scope(), QService::SystemScope); QVERIFY(validCopy.isValid()); //test assignment operator QServiceInterfaceDescriptor validCopy2 = valid; QVERIFY(valid==validCopy2); QVERIFY(validCopy2==valid); QServiceInterfaceDescriptorPrivate::getPrivate(&validCopy2)->attributes.insert(QServiceInterfaceDescriptor::Location, QString("myValue2")); QVERIFY(valid!=validCopy2); QVERIFY(validCopy2!=valid); QCOMPARE(validCopy2.interfaceName(), QString("interface")); QCOMPARE(validCopy2.serviceName(), QString("name")); QCOMPARE(validCopy2.majorVersion(), 3); QCOMPARE(validCopy2.minorVersion(), 1); QCOMPARE(validCopy2.attribute(QServiceInterfaceDescriptor::Location).toString(), QString("myValue2")); QCOMPARE(validCopy2.customAttribute("ckey"),QString("cvalue")); QCOMPARE(validCopy2.attribute(QServiceInterfaceDescriptor::ServiceDescription).toString(), QString("mydescription")); QCOMPARE(validCopy2.scope(), QService::SystemScope); QVERIFY(validCopy2.isValid()); //test customAttributes d->customAttributes.insert(QString("ckey"), QString("cvalue")); d->customAttributes.insert(QString("ckey1"), QString("cvalue1")); d->customAttributes.insert(QString("ckey2"), QString("cvalue2")); QStringList customAttributes = valid.customAttributes(); QVERIFY(customAttributes.contains("ckey")); QVERIFY(customAttributes.contains("ckey1")); QVERIFY(customAttributes.contains("ckey2")); QCOMPARE(customAttributes.count(), 3); }