diff options
Diffstat (limited to 'test/qt/common.h')
-rw-r--r-- | test/qt/common.h | 264 |
1 files changed, 0 insertions, 264 deletions
diff --git a/test/qt/common.h b/test/qt/common.h deleted file mode 100644 index 58beae4e..00000000 --- a/test/qt/common.h +++ /dev/null @@ -1,264 +0,0 @@ -#include <math.h> // isnan - -Q_DECLARE_METATYPE(QVariant) -Q_DECLARE_METATYPE(QList<bool>) -Q_DECLARE_METATYPE(QList<short>) -Q_DECLARE_METATYPE(QList<ushort>) -Q_DECLARE_METATYPE(QList<int>) -Q_DECLARE_METATYPE(QList<uint>) -Q_DECLARE_METATYPE(QList<qlonglong>) -Q_DECLARE_METATYPE(QList<qulonglong>) -Q_DECLARE_METATYPE(QList<double>) -#ifdef USE_PRIVATE_CODE -#include "../../qt/src/qdbusintrospection_p.h" - -// just to make it easier: -typedef QDBusIntrospection::Interfaces InterfaceMap; -typedef QDBusIntrospection::Objects ObjectMap; -typedef QDBusIntrospection::Arguments ArgumentList; -typedef QDBusIntrospection::Annotations AnnotationsMap; -typedef QDBusIntrospection::Methods MethodMap; -typedef QDBusIntrospection::Signals SignalMap; -typedef QDBusIntrospection::Properties PropertyMap; - -Q_DECLARE_METATYPE(QDBusIntrospection::Method) -Q_DECLARE_METATYPE(QDBusIntrospection::Signal) -Q_DECLARE_METATYPE(QDBusIntrospection::Property) -Q_DECLARE_METATYPE(MethodMap) -Q_DECLARE_METATYPE(SignalMap) -Q_DECLARE_METATYPE(PropertyMap) - -inline QDBusIntrospection::Argument arg(const char* type, const char *name = 0) -{ - QDBusIntrospection::Argument retval; - retval.type = QLatin1String(type); - retval.name = QLatin1String(name); - return retval; -} - -template<typename T> -inline QMap<QString, T>& operator<<(QMap<QString, T>& map, const T& m) -{ map.insertMulti(m.name, m); return map; } - -inline const char* mapName(const MethodMap&) -{ return "MethodMap"; } - -inline const char* mapName(const SignalMap&) -{ return "SignalMap"; } - -inline const char* mapName(const PropertyMap&) -{ return "PropertyMap"; } - -QString printable(const QDBusIntrospection::Method& m) -{ - QString result = "method " + m.name + "("; - foreach (QDBusIntrospection::Argument arg, m.inputArgs) - result += QString("in %1 %2, ") - .arg(arg.type, arg.name); - foreach (QDBusIntrospection::Argument arg, m.outputArgs) - result += QString("out %1 %2, ") - .arg(arg.type, arg.name); - AnnotationsMap::const_iterator it = m.annotations.begin(); - for ( ; it != m.annotations.end(); ++it) - result += QString("%1 \"%2\", ").arg(it.key()).arg(it.value()); - - result += ")"; - return result; -} - -QString printable(const QDBusIntrospection::Signal& s) -{ - QString result = "signal " + s.name + "("; - foreach (QDBusIntrospection::Argument arg, s.outputArgs) - result += QString("out %1 %2, ") - .arg(arg.type, arg.name); - AnnotationsMap::const_iterator it = s.annotations.begin(); - for ( ; it != s.annotations.end(); ++it) - result += QString("%1 \"%2\", ").arg(it.key()).arg(it.value()); - - result += ")"; - return result; -} - -QString printable(const QDBusIntrospection::Property& p) -{ - QString result; - if (p.access == QDBusIntrospection::Property::Read) - result = "property read %1 %2, "; - else if (p.access == QDBusIntrospection::Property::Write) - result = "property write %1 %2, "; - else - result = "property readwrite %1 %2, "; - result = result.arg(p.type, p.name); - - AnnotationsMap::const_iterator it = p.annotations.begin(); - for ( ; it != p.annotations.end(); ++it) - result += QString("%1 \"%2\", ").arg(it.key()).arg(it.value()); - - return result; -} - -template<typename T> -char* printableMap(const QMap<QString, T>& map) -{ - QString contents = "\n"; - typename QMap<QString, T>::const_iterator it = map.begin(); - for ( ; it != map.end(); ++it) { - if (it.key() != it.value().name) - contents += it.value().name + ":"; - contents += printable(it.value()); - contents += ";\n"; - } - - QString result("%1(size = %2): {%3}"); - return qstrdup(qPrintable(result - .arg(mapName(map)) - .arg(map.size()) - .arg(contents))); -} - -namespace QTest { - template<> - inline char* toString(const MethodMap& map) - { - return printableMap(map); - } - - template<> - inline char* toString(const SignalMap& map) - { - return printableMap(map); - } - - template<> - inline char* toString(const PropertyMap& map) - { - return printableMap(map); - } -} -#endif -bool compare(const QVariantList &l1, const QVariantList &l2); -bool compare(const QVariantMap &m1, const QVariantMap &m2); -bool compare(const QVariant &v1, const QVariant &v2); - -bool compare(const QList<double> &l1, const QList<double> &l2) -{ - if (l1.count() != l2.count()) - return false; - - QList<double>::ConstIterator it1 = l1.constBegin(); - QList<double>::ConstIterator it2 = l2.constBegin(); - QList<double>::ConstIterator end = l1.constEnd(); - for ( ; it1 != end; ++it1, ++it2) - if (isnan(*it1) && isnan(*it2)) - continue; - else if (*it1 != *it2) - return false; - return true; -} - -bool compare(const QString &s1, const QString &s2) -{ - if (s1.isEmpty() && s2.isEmpty()) - return true; // regardless of whether one of them is null - return s1 == s2; -} - -bool compare(const QByteArray &ba1, const QByteArray &ba2) -{ - if (ba1.isEmpty() && ba2.isEmpty()) - return true; // regardless of whether one of them is null - return ba1 == ba2; -} - -bool compare(const QVariant &v1, const QVariant &v2) -{ - if (v1.userType() != v2.userType()) - return false; - - int id = v1.userType(); - if (id == QVariant::List) - return compare(v1.toList(), v2.toList()); - - else if (id == QVariant::Map) - return compare(v1.toMap(), v2.toMap()); - - else if (id == QVariant::String) - return compare(v1.toString(), v2.toString()); - - else if (id == QVariant::ByteArray) - return compare(v1.toByteArray(), v2.toByteArray()); - - else if (id < int(QVariant::UserType)) // yes, v1.type() - // QVariant can compare - return v1 == v2; - - else if (id == QMetaType::UChar) - return qvariant_cast<uchar>(v1) == qvariant_cast<uchar>(v2); - - else if (id == QMetaType::Short) - return qvariant_cast<short>(v1) == qvariant_cast<short>(v2); - - else if (id == QMetaType::UShort) - return qvariant_cast<ushort>(v1) == qvariant_cast<ushort>(v2); - - else if (id == qMetaTypeId<QVariant>()) - return compare(qvariant_cast<QVariant>(v1), qvariant_cast<QVariant>(v2)); - - else if (id == qMetaTypeId<QList<bool> >()) - return qvariant_cast<QList<bool> >(v1) == qvariant_cast<QList<bool> >(v2); - - else if (id == qMetaTypeId<QList<short> >()) - return qvariant_cast<QList<short> >(v1) == qvariant_cast<QList<short> >(v2); - - else if (id == qMetaTypeId<QList<ushort> >()) - return qvariant_cast<QList<ushort> >(v1) == qvariant_cast<QList<ushort> >(v2); - - else if (id == qMetaTypeId<QList<int> >()) - return qvariant_cast<QList<int> >(v1) == qvariant_cast<QList<int> >(v2); - - else if (id == qMetaTypeId<QList<uint> >()) - return qvariant_cast<QList<uint> >(v1) == qvariant_cast<QList<uint> >(v2); - - else if (id == qMetaTypeId<QList<qlonglong> >()) - return qvariant_cast<QList<qlonglong> >(v1) == qvariant_cast<QList<qlonglong> >(v2); - - else if (id == qMetaTypeId<QList<qulonglong> >()) - return qvariant_cast<QList<qulonglong> >(v2) == qvariant_cast<QList<qulonglong> >(v2); - - else if (id == qMetaTypeId<QList<double> >()) - return compare(qvariant_cast<QList<double> >(v1), qvariant_cast<QList<double> >(v2)); - - else - return false; // unknown type -} - -bool compare(const QVariantList &l1, const QVariantList &l2) -{ - if (l1.count() != l2.size()) - return false; - QVariantList::ConstIterator i1 = l1.constBegin(); - QVariantList::ConstIterator i2 = l2.constBegin(); - QVariantList::ConstIterator end = l1.constEnd(); - for ( ; i1 != end; ++i1, ++i2) { - if (!compare(*i1, *i2)) - return false; - } - return true; -} - -bool compare(const QVariantMap &m1, const QVariantMap &m2) -{ - if (m1.count() != m2.size()) - return false; - QVariantMap::ConstIterator i1 = m1.constBegin(); - QVariantMap::ConstIterator end = m1.constEnd(); - for ( ; i1 != end; ++i1) { - QVariantMap::ConstIterator i2 = m2.find(i1.key()); - if (i2 == m2.constEnd()) - return false; - if (!compare(*i1, *i2)) - return false; - } - return true; -} |