void rectVariantCreation();
void stringVariantCreation();
void pixmapVariantCreation();
+ void stringListVariantCreation();
+ void bigClassVariantCreation();
+ void smallClassVariantCreation();
void doubleVariantSetValue();
void floatVariantSetValue();
void rectVariantSetValue();
void stringVariantSetValue();
+ void stringListVariantSetValue();
+ void bigClassVariantSetValue();
+ void smallClassVariantSetValue();
void doubleVariantAssignment();
void floatVariantAssignment();
void rectVariantAssignment();
void stringVariantAssignment();
+ void stringListVariantAssignment();
void doubleVariantValue();
void floatVariantValue();
void createCoreTypeCopy();
};
+struct BigClass
+{
+ double n,i,e,r,o,b;
+};
+Q_STATIC_ASSERT(sizeof(BigClass) > sizeof(QVariant::Private::Data));
+Q_DECLARE_METATYPE(BigClass);
+
+struct SmallClass
+{
+ char s;
+};
+Q_STATIC_ASSERT(sizeof(SmallClass) <= sizeof(QVariant::Private::Data));
+Q_DECLARE_METATYPE(SmallClass);
+
void tst_qvariant::testBound()
{
qreal d = qreal(.5);
}
}
+template <>
+void variantCreation<BigClass>(BigClass val)
+{
+ QBENCHMARK {
+ for (int i = 0; i < ITERATION_COUNT; ++i) {
+ QVariant::fromValue(val);
+ }
+ }
+}
+
+template <>
+void variantCreation<SmallClass>(SmallClass val)
+{
+ QBENCHMARK {
+ for (int i = 0; i < ITERATION_COUNT; ++i) {
+ QVariant::fromValue(val);
+ }
+ }
+}
+
+
void tst_qvariant::doubleVariantCreation()
{
variantCreation<double>(0.0);
variantCreation<QPixmap>(QPixmap());
}
+void tst_qvariant::stringListVariantCreation()
+{
+ variantCreation<QStringList>(QStringList());
+}
+
+void tst_qvariant::bigClassVariantCreation()
+{
+ variantCreation<BigClass>(BigClass());
+}
+
+void tst_qvariant::smallClassVariantCreation()
+{
+ variantCreation<SmallClass>(SmallClass());
+}
+
template <typename T>
static void variantSetValue(T d)
{
variantSetValue<QString>(QString());
}
+void tst_qvariant::stringListVariantSetValue()
+{
+ variantSetValue<QStringList>(QStringList());
+}
+
+void tst_qvariant::bigClassVariantSetValue()
+{
+ variantSetValue<BigClass>(BigClass());
+}
+
+void tst_qvariant::smallClassVariantSetValue()
+{
+ variantSetValue<SmallClass>(SmallClass());
+}
+
template <typename T>
static void variantAssignment(T d)
{
variantAssignment<QString>(QString());
}
+void tst_qvariant::stringListVariantAssignment()
+{
+ variantAssignment<QStringList>(QStringList());
+}
+
void tst_qvariant::doubleVariantValue()
{
QVariant v(0.0);