diff options
Diffstat (limited to 'tests')
-rw-r--r-- | tests/testconversionoperator.cpp | 65 | ||||
-rw-r--r-- | tests/testconversionoperator.h | 2 |
2 files changed, 59 insertions, 8 deletions
diff --git a/tests/testconversionoperator.cpp b/tests/testconversionoperator.cpp index cd4026bbd..e16f15cab 100644 --- a/tests/testconversionoperator.cpp +++ b/tests/testconversionoperator.cpp @@ -28,14 +28,15 @@ void TestConversionOperator::testConversionOperator() { - const char cppCode[] = "struct A {\ - };\ - struct B {\ - operator A() const;\ - };\ - struct C {\ - operator A() const;\ - };"; + const char cppCode[] = "\ + struct A {\ + };\ + struct B {\ + operator A() const;\ + };\ + struct C {\ + operator A() const;\ + };"; const char xmlCode[] = "\ <typesystem package=\"Foo\">\ <value-type name='A' />\ @@ -66,6 +67,54 @@ void TestConversionOperator::testConversionOperator() QCOMPARE(convOp, externalConvOp); } +void TestConversionOperator::testConversionOperatorOfDiscardedClass() +{ + const char cppCode[] = "\ + struct A {\ + };\ + struct B {\ + operator A() const;\ + };"; + const char xmlCode[] = "\ + <typesystem package=\"Foo\">\ + <value-type name='A' />\ + </typesystem>"; + + TestUtil t(cppCode, xmlCode, false); + AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClass* classA = classes.findClass("A"); + QVERIFY(classA); + QCOMPARE(classA->externalConversionOperators().count(), 0); +} + +void TestConversionOperator::testRemovedConversionOperator() +{ + const char cppCode[] = "\ + struct A {\ + };\ + struct B {\ + operator A() const;\ + };"; + const char xmlCode[] = "\ + <typesystem package=\"Foo\">\ + <value-type name='A' />\ + <value-type name='B'>\ + <modify-function signature='operator A() const' remove='all' />\ + </value-type>\ + </typesystem>"; + + TestUtil t(cppCode, xmlCode, false); + AbstractMetaClassList classes = t.builder()->classes(); + AbstractMetaClass* classA = classes.findClass("A"); + AbstractMetaClass* classB = classes.findClass("B"); + QVERIFY(classA); + QVERIFY(classB); + QCOMPARE(classA->functions().count(), 1); + QCOMPARE(classB->functions().count(), 2); + QCOMPARE(classA->externalConversionOperators().count(), 0); + QCOMPARE(classA->implicitConversions().count(), 0); +} + QTEST_APPLESS_MAIN(TestConversionOperator) #include "testconversionoperator.moc" diff --git a/tests/testconversionoperator.h b/tests/testconversionoperator.h index 79963db1e..25b8d8c27 100644 --- a/tests/testconversionoperator.h +++ b/tests/testconversionoperator.h @@ -30,6 +30,8 @@ class TestConversionOperator : public QObject Q_OBJECT private slots: void testConversionOperator(); + void testConversionOperatorOfDiscardedClass(); + void testRemovedConversionOperator(); }; #endif |