diff options
Diffstat (limited to 'kunittest/tester.cpp')
-rw-r--r-- | kunittest/tester.cpp | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/kunittest/tester.cpp b/kunittest/tester.cpp new file mode 100644 index 000000000..93509716d --- /dev/null +++ b/kunittest/tester.cpp @@ -0,0 +1,99 @@ +/* + * Copyright (C) 2005 Jeroen Wijnhout <Jeroen.Wijnhout@kdemail.net> + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ + +#include <iostream> +using namespace std; + +#include <qmetaobject.h> + +#include "tester.h" + +namespace KUnitTest +{ + SlotTester::SlotTester(const char *name) : Tester(name) + { + m_resultsList.setAutoDelete(true); + m_total = m_results; + } + + void SlotTester::invokeMember(const QString &str) + { + QString slotname = QString::number(QSLOT_CODE) + str; + connect(this, SIGNAL(invoke()), this, slotname.ascii()); + emit invoke(); + disconnect(this, SIGNAL(invoke()), this, slotname.ascii()); + } + + void SlotTester::allTests() + { + QStrList allSlots = metaObject()->slotNames(); + + if ( allSlots.contains("setUp()") > 0 ) invokeMember("setUp()"); + + for ( char *sl = allSlots.first(); sl; sl = allSlots.next() ) + { + QString str = sl; + + if ( str.startsWith("test") ) + { + m_results = results(sl); + m_results->clear(); + + cout << "KUnitTest_Debug_BeginSlot[" << sl << "]" << endl; + invokeMember(str); + cout << "KUnitTest_Debug_EndSlot[" << sl << "]" << endl; + } + } + + if ( allSlots.contains("tearDown()") > 0 ) invokeMember("tearDown()"); + + m_total->clear(); + } + + TestResults *SlotTester::results(const char *sl) + { + if ( m_resultsList.find(sl) == 0L ) m_resultsList.insert(sl, new TestResults()); + + return m_resultsList[sl]; + } +} + +QTextStream& operator<<( QTextStream& str, const QRect& r ) { + str << "[" << r.x() << "," << r.y() << " - " << r.width() << "x" << r.height() << "]"; + return str; +} + +QTextStream& operator<<( QTextStream& str, const QPoint& r ) { + str << "(" << r.x() << "," << r.y() << ")"; + return str; +} + +QTextStream& operator<<( QTextStream& str, const QSize& r ) { + str << "[" << r.width() << "x" << r.height() << "]"; + return str; +} + +#include "tester.moc" + |