aboutsummaryrefslogtreecommitdiffstats
path: root/tests/testimplicitconversions.cpp
diff options
context:
space:
mode:
authorMarcelo Lira <marcelo.lira@openbossa.org>2010-02-26 20:46:30 -0300
committerMarcelo Lira <marcelo.lira@openbossa.org>2010-02-26 20:49:34 -0300
commit6f8cde0951da369d0b2960d8634ab9cf2a4b08d3 (patch)
tree45ae450f6da3eb71eee7dd5311a94af3071826dc /tests/testimplicitconversions.cpp
parent3f6b0576c90960d4474623987ccac2877a34869c (diff)
External conversion operators are now part of a class' implicit conversions.
AbstractMetaClass::implicitConversions() returns externally declared conversion operators in addition to its own implicit constructors. The implicit conversion tests where extended with the new case.
Diffstat (limited to 'tests/testimplicitconversions.cpp')
-rw-r--r--tests/testimplicitconversions.cpp32
1 files changed, 32 insertions, 0 deletions
diff --git a/tests/testimplicitconversions.cpp b/tests/testimplicitconversions.cpp
index 350ec8b6a..fd927db0b 100644
--- a/tests/testimplicitconversions.cpp
+++ b/tests/testimplicitconversions.cpp
@@ -116,6 +116,38 @@ void TestImplicitConversions::testWithAddedCtor()
QCOMPARE(implicitConvs.count(), 2);
}
+void TestImplicitConversions::testWithExternalConversionOperator()
+{
+ const char* cppCode ="\
+ class A {};\
+ struct B {\
+ operator A() const;\
+ };\
+ ";
+ const char* xmlCode = "\
+ <typesystem package=\"Foo\">\
+ <value-type name=\"A\"/>\
+ <value-type name=\"B\"/>\
+ </typesystem>";
+ TestUtil t(cppCode, xmlCode);
+ AbstractMetaClassList classes = t.builder()->classes();
+ QCOMPARE(classes.count(), 2);
+ AbstractMetaClass* classA = classes.findClass("A");
+ AbstractMetaClass* classB = classes.findClass("B");
+ AbstractMetaFunctionList implicitConvs = classA->implicitConversions();
+ QCOMPARE(implicitConvs.count(), 1);
+ AbstractMetaFunctionList externalConvOps = classA->externalConversionOperators();
+ QCOMPARE(externalConvOps.count(), 1);
+
+ const AbstractMetaFunction* convOp = 0;
+ foreach(const AbstractMetaFunction* func, classB->functions()) {
+ if (func->isConversionOperator())
+ convOp = func;
+ }
+ QVERIFY(convOp);
+ QCOMPARE(implicitConvs.first(), convOp);
+}
+
QTEST_APPLESS_MAIN(TestImplicitConversions)
#include "testimplicitconversions.moc"