Moved the rest of the App Kit tests over to the new framework.

git-svn-id: file:///srv/svn/repos/haiku/trunk/current@383 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Tyler Dauwalder
2002-07-22 09:28:00 +00:00
parent 23ce7baa24
commit be2939cab7
55 changed files with 754 additions and 381 deletions
+6 -6
View File
@@ -2,18 +2,18 @@
#include <TestSuiteAddon.h> #include <TestSuiteAddon.h>
// ##### Include headers for your tests here ##### // ##### Include headers for your tests here #####
//#include "bhandler/HandlerTest.h" #include "bhandler/HandlerTest.h"
//#include "blooper/LooperTest.h" #include "blooper/LooperTest.h"
//#include "bmessagequeue/MessageQueueTest.h" #include "bmessagequeue/MessageQueueTest.h"
#include "bmessenger/MessengerTest.h" #include "bmessenger/MessengerTest.h"
BTestSuite* getTestSuite() { BTestSuite* getTestSuite() {
BTestSuite *suite = new BTestSuite("App"); BTestSuite *suite = new BTestSuite("App");
// ##### Add test suites here ##### // ##### Add test suites here #####
// suite->addTest("BHandler", HandlerTestSuite()); suite->addTest("BHandler", HandlerTestSuite());
// suite->addTest("BLooper", LooperTestSuite()); suite->addTest("BLooper", LooperTestSuite());
// suite->addTest("BMessageQueue", MessageQueueTestSuite()); suite->addTest("BMessageQueue", MessageQueueTestSuite());
suite->addTest("BMessenger", MessengerTestSuite()); suite->addTest("BMessenger", MessengerTestSuite());
return suite; return suite;
+39 -6
View File
@@ -1,14 +1,47 @@
SubDir OBOS_TOP src tests kits app ; SubDir OBOS_TOP src tests kits app ;
# Let Jam know where to find some of our source files # Let Jam know where to find some of our source files
#SEARCH_SOURCE += [ FDirName $(SUBDIR) bhandler ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) bhandler ] ;
#SEARCH_SOURCE += [ FDirName $(SUBDIR) blooper ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) blooper ] ;
#SEARCH_SOURCE += [ FDirName $(SUBDIR) bmessagequeue ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) bmessagequeue ] ;
SEARCH_SOURCE += [ FDirName $(SUBDIR) bmessenger ] ; SEARCH_SOURCE += [ FDirName $(SUBDIR) bmessenger ] ;
CommonTestLib libapptest.so CommonTestLib libapptest.so
: AppKitTestAddon.cpp : AppKitTestAddon.cpp
# BHandler
HandlerTest.cpp
AddFilterTest.cpp
BHandlerTester.cpp
IsWatchedTest.cpp
LockLooperTest.cpp
LockLooperTestCommon.cpp
LockLooperWithTimeoutTest.cpp
HandlerLooperTest.cpp
NextHandlerTest.cpp
RemoveFilterTest.cpp
SetFilterListTest.cpp
SetNextHandlerTest.cpp
UnlockLooperTest.cpp
# BLooper
LooperTest.cpp
AddHandlerTest.cpp
CountHandlersTest.cpp
HandlerAtTest.cpp
IndexOfTest.cpp
IsMessageWaitingTest.cpp
RemoveHandlerTest.cpp
# BMessageQueue
MessageQueueTest.cpp
AddMessageTest1.cpp
AddMessageTest2.cpp
ConcurrencyTest1.cpp
ConcurrencyTest2.cpp
FindMessageTest1.cpp
MessageQueueTestCase.cpp
# BMessenger # BMessenger
MessengerTest.cpp MessengerTest.cpp
BMessengerTester.cpp BMessengerTester.cpp
@@ -30,7 +63,7 @@ CommonTestLib libapptest.so
: app support : app support
; ;
SubInclude OBOS_TOP src tests kits app bhandler ; #SubInclude OBOS_TOP src tests kits app bhandler ;
SubInclude OBOS_TOP src tests kits app blooper ; #SubInclude OBOS_TOP src tests kits app blooper ;
#SubInclude OBOS_TOP src tests kits app bmessageQueue ; #SubInclude OBOS_TOP src tests kits app bmessageQueue ;
SubInclude OBOS_TOP src tests kits app bmessenger ; #SubInclude OBOS_TOP src tests kits app bmessenger ;
@@ -94,10 +94,10 @@ Test* TAddFilterTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::AddFilter"); TestSuite* SuiteOfTests = new TestSuite("BHandler::AddFilter");
ADD_TEST(SuiteOfTests, TAddFilterTest, AddFilter1); ADD_TEST4(BHandler, SuiteOfTests, TAddFilterTest, AddFilter1);
ADD_TEST(SuiteOfTests, TAddFilterTest, AddFilter2); ADD_TEST4(BHandler, SuiteOfTests, TAddFilterTest, AddFilter2);
ADD_TEST(SuiteOfTests, TAddFilterTest, AddFilter3); ADD_TEST4(BHandler, SuiteOfTests, TAddFilterTest, AddFilter3);
ADD_TEST(SuiteOfTests, TAddFilterTest, AddFilter4); ADD_TEST4(BHandler, SuiteOfTests, TAddFilterTest, AddFilter4);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -110,3 +110,4 @@ Test* TAddFilterTest::Suite()
* *
*/ */
+18 -16
View File
@@ -297,27 +297,27 @@ Test* TBHandlerTester::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite; TestSuite* SuiteOfTests = new TestSuite;
ADD_TEST(SuiteOfTests, TBHandlerTester, BHandler1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler1);
ADD_TEST(SuiteOfTests, TBHandlerTester, BHandler2); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler2);
ADD_TEST(SuiteOfTests, TBHandlerTester, BHandler3); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler3);
ADD_TEST(SuiteOfTests, TBHandlerTester, BHandler4); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler4);
ADD_TEST(SuiteOfTests, TBHandlerTester, BHandler5); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, BHandler5);
ADD_TEST(SuiteOfTests, TBHandlerTester, Archive1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive1);
ADD_TEST(SuiteOfTests, TBHandlerTester, Archive2); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive2);
ADD_TEST(SuiteOfTests, TBHandlerTester, Archive3); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive3);
ADD_TEST(SuiteOfTests, TBHandlerTester, Archive4); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Archive4);
ADD_TEST(SuiteOfTests, TBHandlerTester, Instantiate1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate1);
ADD_TEST(SuiteOfTests, TBHandlerTester, Instantiate2); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate2);
ADD_TEST(SuiteOfTests, TBHandlerTester, Instantiate3); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Instantiate3);
ADD_TEST(SuiteOfTests, TBHandlerTester, SetName1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName1);
ADD_TEST(SuiteOfTests, TBHandlerTester, SetName2); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, SetName2);
ADD_TEST(SuiteOfTests, TBHandlerTester, Perform1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, Perform1);
ADD_TEST(SuiteOfTests, TBHandlerTester, FilterList1); ADD_TEST4(BHandler, SuiteOfTests, TBHandlerTester, FilterList1);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -330,3 +330,5 @@ Test* TBHandlerTester::Suite()
* *
*/ */
@@ -0,0 +1,64 @@
//------------------------------------------------------------------------------
// LooperTest.cpp
//
//------------------------------------------------------------------------------
// Standard Includes -----------------------------------------------------------
// System Includes -------------------------------------------------------------
#include <be/app/Looper.h>
// Project Includes ------------------------------------------------------------
// Local Includes --------------------------------------------------------------
#include "HandlerLooperTest.h"
// Local Defines ---------------------------------------------------------------
// Globals ---------------------------------------------------------------------
//------------------------------------------------------------------------------
/**
Looper()
@case Not added to a BLooper
@results Returns NULL
*/
void TLooperTest::LooperTest1()
{
CPPUNIT_ASSERT(fHandler.Looper() == NULL);
}
//------------------------------------------------------------------------------
/**
Looper()
@case Add to a BLooper, then remove
@results Returns the added-to BLooper; when removed, returns NULL
*/
void TLooperTest::LooperTest2()
{
BLooper Looper;
Looper.AddHandler(&fHandler);
CPPUNIT_ASSERT(fHandler.Looper() == &Looper);
CPPUNIT_ASSERT(Looper.RemoveHandler(&fHandler));
CPPUNIT_ASSERT(fHandler.Looper() == NULL);
}
//------------------------------------------------------------------------------
Test* TLooperTest::Suite()
{
TestSuite* SuiteOfTests = new TestSuite("BHandler::Looper");
ADD_TEST4(BHandler, SuiteOfTests, TLooperTest, LooperTest1);
ADD_TEST4(BHandler, SuiteOfTests, TLooperTest, LooperTest2);
return SuiteOfTests;
}
//------------------------------------------------------------------------------
/*
* $Log $
*
* $Id $
*
*/
@@ -0,0 +1,50 @@
//------------------------------------------------------------------------------
// LooperTest.h
//
//------------------------------------------------------------------------------
#ifndef LOOPERTEST_H
#define LOOPERTEST_H
// Standard Includes -----------------------------------------------------------
// System Includes -------------------------------------------------------------
#if defined(TEST_R5)
#include <be/app/Handler.h>
#else
#include <Handler.h>
#endif
// Project Includes ------------------------------------------------------------
// Local Includes --------------------------------------------------------------
#include "../common.h"
// Local Defines ---------------------------------------------------------------
// Globals ---------------------------------------------------------------------
class TLooperTest : public TestCase
{
public:
TLooperTest() {;}
TLooperTest(std::string name) : TestCase(name) {;}
void LooperTest1();
void LooperTest2();
static Test* Suite();
private:
BHandler fHandler;
};
#endif //LOOPERTEST_H
/*
* $Log $
*
* $Id $
*
*/
@@ -0,0 +1,32 @@
#include "../common.h"
#include "HandlerTest.h"
#include "BHandlerTester.h"
#include "IsWatchedTest.h"
#include "HandlerLooperTest.h"
#include "SetNextHandlerTest.h"
#include "NextHandlerTest.h"
#include "AddFilterTest.h"
#include "RemoveFilterTest.h"
#include "SetFilterListTest.h"
#include "LockLooperTest.h"
#include "LockLooperWithTimeoutTest.h"
#include "UnlockLooperTest.h"
Test* HandlerTestSuite(void)
{
TestSuite* tests = new TestSuite();
tests->addTest(TBHandlerTester::Suite());
tests->addTest(TIsWatchedTest::Suite());
tests->addTest(TLooperTest::Suite());
tests->addTest(TSetNextHandlerTest::Suite());
tests->addTest(TNextHandlerTest::Suite());
tests->addTest(TAddFilterTest::Suite());
tests->addTest(TRemoveFilterTest::Suite());
tests->addTest(TSetFilterListTest::Suite());
tests->addTest(TLockLooperTest::Suite());
tests->addTest(TLockLooperWithTimeoutTest::Suite());
tests->addTest(TUnlockLooperTest::Suite());
return tests;
}
@@ -0,0 +1,9 @@
#ifndef _handler_test_h_
#define _handler_test_h_
class CppUnit::Test;
CppUnit::Test* HandlerTestSuite();
#endif // _handler_test_h_
@@ -51,8 +51,8 @@ Test* TIsWatchedTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::IsWatched"); TestSuite* SuiteOfTests = new TestSuite("BHandler::IsWatched");
ADD_TEST(SuiteOfTests, TIsWatchedTest, IsWatched1); ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched1);
ADD_TEST(SuiteOfTests, TIsWatchedTest, IsWatched2); ADD_TEST4(BHandler, SuiteOfTests, TIsWatchedTest, IsWatched2);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -65,3 +65,4 @@ Test* TIsWatchedTest::Suite()
* *
*/ */
@@ -91,10 +91,10 @@ Test* TLockLooperTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::LockLooper"); TestSuite* SuiteOfTests = new TestSuite("BHandler::LockLooper");
ADD_TEST(SuiteOfTests, TLockLooperTest, LockLooper1); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperTest, LockLooper1);
ADD_TEST(SuiteOfTests, TLockLooperTest, LockLooper2); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperTest, LockLooper2);
ADD_TEST(SuiteOfTests, TLockLooperTest, LockLooper3); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperTest, LockLooper3);
// ADD_TEST(SuiteOfTests, TLockLooperTest, LockLooper4); // ADD_TEST4(BHandler, SuiteOfTests, TLockLooperTest, LockLooper4);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -107,3 +107,4 @@ Test* TLockLooperTest::Suite()
* *
*/ */
@@ -42,3 +42,4 @@ int32 LockLooperThreadFunc(void* data)
* *
*/ */
@@ -95,10 +95,10 @@ Test* TLockLooperWithTimeoutTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::LockLooperWithTimeout"); TestSuite* SuiteOfTests = new TestSuite("BHandler::LockLooperWithTimeout");
ADD_TEST(SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout1); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout1);
ADD_TEST(SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout2); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout2);
ADD_TEST(SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout3); ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout3);
// ADD_TEST(SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout4); // ADD_TEST4(BHandler, SuiteOfTests, TLockLooperWithTimeoutTest, LockLooperWithTimeout4);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -111,3 +111,4 @@ Test* TLockLooperWithTimeoutTest::Suite()
* *
*/ */
@@ -46,8 +46,8 @@ Test* TNextHandlerTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::NextHandler"); TestSuite* SuiteOfTests = new TestSuite("BHandler::NextHandler");
ADD_TEST(SuiteOfTests, TNextHandlerTest, NextHandler1); ADD_TEST4(BHandler, SuiteOfTests, TNextHandlerTest, NextHandler1);
ADD_TEST(SuiteOfTests, TNextHandlerTest, NextHandler2); ADD_TEST4(BHandler, SuiteOfTests, TNextHandlerTest, NextHandler2);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -60,3 +60,4 @@ Test* TNextHandlerTest::Suite()
* *
*/ */
@@ -140,13 +140,13 @@ Test* TRemoveFilterTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::RemoveFilter"); TestSuite* SuiteOfTests = new TestSuite("BHandler::RemoveFilter");
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter1); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter1);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter2); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter2);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter3); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter3);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter4); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter4);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter5); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter5);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter6); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter6);
ADD_TEST(SuiteOfTests, TRemoveFilterTest, RemoveFilter7); ADD_TEST4(BHandler, SuiteOfTests, TRemoveFilterTest, RemoveFilter7);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -159,3 +159,4 @@ Test* TRemoveFilterTest::Suite()
* *
*/ */
@@ -126,11 +126,11 @@ Test* TSetFilterListTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::SetFilterList"); TestSuite* SuiteOfTests = new TestSuite("BHandler::SetFilterList");
ADD_TEST(SuiteOfTests, TSetFilterListTest, SetFilterList1); ADD_TEST4(BHandler, SuiteOfTests, TSetFilterListTest, SetFilterList1);
ADD_TEST(SuiteOfTests, TSetFilterListTest, SetFilterList2); ADD_TEST4(BHandler, SuiteOfTests, TSetFilterListTest, SetFilterList2);
ADD_TEST(SuiteOfTests, TSetFilterListTest, SetFilterList3); ADD_TEST4(BHandler, SuiteOfTests, TSetFilterListTest, SetFilterList3);
ADD_TEST(SuiteOfTests, TSetFilterListTest, SetFilterList4); ADD_TEST4(BHandler, SuiteOfTests, TSetFilterListTest, SetFilterList4);
ADD_TEST(SuiteOfTests, TSetFilterListTest, SetFilterList5); ADD_TEST4(BHandler, SuiteOfTests, TSetFilterListTest, SetFilterList5);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -143,3 +143,4 @@ Test* TSetFilterListTest::Suite()
* *
*/ */
@@ -291,18 +291,18 @@ Test* TSetNextHandlerTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::SetNextHandler"); TestSuite* SuiteOfTests = new TestSuite("BHandler::SetNextHandler");
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler0); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler0);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler1); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler1);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler2); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler2);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler3); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler3);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler4); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler4);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler5); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler5);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler6); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler6);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler7); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler7);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler8); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler8);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler9); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler9);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler10); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler10);
ADD_TEST(SuiteOfTests, TSetNextHandlerTest, SetNextHandler11); ADD_TEST4(BHandler, SuiteOfTests, TSetNextHandlerTest, SetNextHandler11);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -315,3 +315,4 @@ Test* TSetNextHandlerTest::Suite()
* *
*/ */
@@ -76,9 +76,9 @@ Test* TUnlockLooperTest::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite("BHandler::UnlockLooper"); TestSuite* SuiteOfTests = new TestSuite("BHandler::UnlockLooper");
ADD_TEST(SuiteOfTests, TUnlockLooperTest, UnlockLooper1); ADD_TEST4(BHandler, SuiteOfTests, TUnlockLooperTest, UnlockLooper1);
ADD_TEST(SuiteOfTests, TUnlockLooperTest, UnlockLooper2); ADD_TEST4(BHandler, SuiteOfTests, TUnlockLooperTest, UnlockLooper2);
ADD_TEST(SuiteOfTests, TUnlockLooperTest, UnlockLooper3); ADD_TEST4(BHandler, SuiteOfTests, TUnlockLooperTest, UnlockLooper3);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -91,3 +91,4 @@ Test* TUnlockLooperTest::Suite()
* *
*/ */
@@ -64,8 +64,8 @@ TestSuite* TAddHandlerTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::AddHandler(BHandler*)"); TestSuite* suite = new TestSuite("BLooper::AddHandler(BHandler*)");
ADD_TEST(suite, TAddHandlerTest, AddHandlerTest1); ADD_TEST4(BLooper, suite, TAddHandlerTest, AddHandlerTest1);
ADD_TEST(suite, TAddHandlerTest, AddHandlerTest2); ADD_TEST4(BLooper, suite, TAddHandlerTest, AddHandlerTest2);
return suite; return suite;
} }
@@ -78,3 +78,4 @@ TestSuite* TAddHandlerTest::Suite()
* *
*/ */
@@ -61,8 +61,8 @@ TestSuite* TCountHandlersTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::CountHandlers()"); TestSuite* suite = new TestSuite("BLooper::CountHandlers()");
ADD_TEST(suite, TCountHandlersTest, CountHandlersTest1); ADD_TEST4(BLooper, suite, TCountHandlersTest, CountHandlersTest1);
ADD_TEST(suite, TCountHandlersTest, CountHandlersTest2); ADD_TEST4(BLooper, suite, TCountHandlersTest, CountHandlersTest2);
return suite; return suite;
} }
@@ -75,3 +75,4 @@ TestSuite* TCountHandlersTest::Suite()
* *
*/ */
+5 -4
View File
@@ -85,10 +85,10 @@ TestSuite* THandlerAtTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::HandlerAt(int32)"); TestSuite* suite = new TestSuite("BLooper::HandlerAt(int32)");
ADD_TEST(suite, THandlerAtTest, HandlerAtTest1); ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest1);
ADD_TEST(suite, THandlerAtTest, HandlerAtTest2); ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest2);
ADD_TEST(suite, THandlerAtTest, HandlerAtTest3); ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest3);
ADD_TEST(suite, THandlerAtTest, HandlerAtTest4); ADD_TEST4(BLooper, suite, THandlerAtTest, HandlerAtTest4);
return suite; return suite;
} }
@@ -101,3 +101,4 @@ TestSuite* THandlerAtTest::Suite()
* *
*/ */
+7 -6
View File
@@ -161,12 +161,12 @@ TestSuite* TIndexOfTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::IndexOf(BHandler*)"); TestSuite* suite = new TestSuite("BLooper::IndexOf(BHandler*)");
ADD_TEST(suite, TIndexOfTest, IndexOfTest1); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest1);
ADD_TEST(suite, TIndexOfTest, IndexOfTest2); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest2);
ADD_TEST(suite, TIndexOfTest, IndexOfTest3); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest3);
ADD_TEST(suite, TIndexOfTest, IndexOfTest4); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest4);
ADD_TEST(suite, TIndexOfTest, IndexOfTest5); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest5);
ADD_TEST(suite, TIndexOfTest, IndexOfTest6); ADD_TEST4(BLooper, suite, TIndexOfTest, IndexOfTest6);
return suite; return suite;
} }
@@ -179,3 +179,4 @@ TestSuite* TIndexOfTest::Suite()
* *
*/ */
@@ -170,13 +170,13 @@ Test* TIsMessageWaitingTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::IsMessageWaiting()"); TestSuite* suite = new TestSuite("BLooper::IsMessageWaiting()");
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting1); ADD_TEST4(BLooper, suite, TIsMessageWaitingTest, IsMessageWaiting1);
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting2); ADD_TEST4(BLooper, suite, TIsMessageWaitingTest, IsMessageWaiting2);
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting3); ADD_TEST4(BLooper, suite, TIsMessageWaitingTest, IsMessageWaiting3);
ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting4); ADD_TEST4(BLooper, suite, TIsMessageWaitingTest, IsMessageWaiting4);
// See note for test // See note for test
// ADD_TEST(suite, TIsMessageWaitingTest, IsMessageWaiting5); // ADD_TEST4(BLooper, suite, TIsMessageWaitingTest, IsMessageWaiting5);
return suite; return suite;
} }
@@ -189,3 +189,4 @@ Test* TIsMessageWaitingTest::Suite()
* *
*/ */
+23
View File
@@ -0,0 +1,23 @@
//#include "LooperTest.h"
#include "../common.h"
#include "IsMessageWaitingTest.h"
#include "RemoveHandlerTest.h"
#include "IndexOfTest.h"
#include "CountHandlersTest.h"
#include "HandlerAtTest.h"
#include "AddHandlerTest.h"
Test* LooperTestSuite()
{
TestSuite* tests = new TestSuite();
tests->addTest(TIsMessageWaitingTest::Suite());
tests->addTest(TRemoveHandlerTest::Suite());
tests->addTest(TIndexOfTest::Suite());
tests->addTest(TCountHandlersTest::Suite());
tests->addTest(THandlerAtTest::Suite());
tests->addTest(TAddHandlerTest::Suite());
return tests;
}
+9
View File
@@ -0,0 +1,9 @@
#ifndef _looper_test_h_
#define _looper_test_h_
class CppUnit::Test;
CppUnit::Test* LooperTestSuite();
#endif // _looper_test_h_
@@ -104,11 +104,11 @@ Test* TRemoveHandlerTest::Suite()
{ {
TestSuite* suite = new TestSuite("BLooper::RemoveHandler(BHandler* handler)"); TestSuite* suite = new TestSuite("BLooper::RemoveHandler(BHandler* handler)");
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler1); ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler1);
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler2); ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler2);
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler3); ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler3);
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler4); ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler4);
ADD_TEST(suite, TRemoveHandlerTest, RemoveHandler5); ADD_TEST4(BLooper, suite, TRemoveHandlerTest, RemoveHandler5);
return suite; return suite;
} }
@@ -121,3 +121,4 @@ Test* TRemoveHandlerTest::Suite()
* *
*/ */
@@ -1,5 +1,5 @@
/* /*
$Id: AddMessageTest1.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: AddMessageTest1.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements the first test for the OpenBeOS BMessageQueue code. This file implements the first test for the OpenBeOS BMessageQueue code.
It tests the Construction, Destruction, Add Message 1, Count Messages, It tests the Construction, Destruction, Add Message 1, Count Messages,
@@ -17,50 +17,50 @@
*/ */
#include "ThreadedTestCaller.h"
#include "AddMessageTest1.h" #include "AddMessageTest1.h"
#include <Message.h> #include <Message.h>
#include <MessageQueue.h> #include <MessageQueue.h>
#include "MessageQueue.h"
/* /*
* Method: AddMessageTest1<MessageQueue>::AddMessageTest1() * Method: AddMessageTest1::AddMessageTest1()
* Descr: This is the constructor for this class. * Descr: This is the constructor for this class.
*/ */
template<class MessageQueue>
AddMessageTest1<MessageQueue>::AddMessageTest1(std::string name) : AddMessageTest1::AddMessageTest1(std::string name) :
MessageQueueTestCase<MessageQueue>(name) MessageQueueTestCase(name)
{ {
} }
/* /*
* Method: AddMessageTest1<MessageQueue>::~AddMessageTest1() * Method: AddMessageTest1::~AddMessageTest1()
* Descr: This is the destructor for this class. * Descr: This is the destructor for this class.
*/ */
template<class MessageQueue>
AddMessageTest1<MessageQueue>::~AddMessageTest1() AddMessageTest1::~AddMessageTest1()
{ {
} }
/* /*
* Method: AddMessageTest1<MessageQueue>::setUp() * Method: AddMessageTest1::setUp()
* Descr: This member function is called just prior to running the test. * Descr: This member function is called just prior to running the test.
* It resets the destructor count for testMessageClass. * It resets the destructor count for testMessageClass.
*/ */
template<class MessageQueue>
void AddMessageTest1<MessageQueue>::setUp(void) void AddMessageTest1::setUp(void)
{ {
testMessageClass::messageDestructorCount = 0; testMessageClass::messageDestructorCount = 0;
} }
/* /*
* Method: AddMessageTest1<MessageQueue>::PerformTest() * Method: AddMessageTest1::PerformTest()
* Descr: This member function performs this test. It adds * Descr: This member function performs this test. It adds
* 10000 messages to the message queue and confirms that * 10000 messages to the message queue and confirms that
* the queue contains the right messages. Then it confirms * the queue contains the right messages. Then it confirms
@@ -68,46 +68,51 @@ template<class MessageQueue>
* queue is deleted. * queue is deleted.
*/ */
template<class MessageQueue>
void AddMessageTest1<MessageQueue>::PerformTest(void) void AddMessageTest1::PerformTest(void)
{ {
assert(theMessageQueue->IsEmpty()); assert(theMessageQueue->IsEmpty());
assert(theMessageQueue->CountMessages() == 0); assert(theMessageQueue->CountMessages() == 0);
int i; int i;
for(i = 0; i < 10000; i++) { for(i = 0; i < 10000; i++) {
if (i % (10000 / 10) == 0)
NextSubTest();
BMessage *theMessage = new testMessageClass(i); BMessage *theMessage = new testMessageClass(i);
AddMessage(theMessage); AddMessage(theMessage);
assert(!theMessageQueue->IsEmpty()); assert(!theMessageQueue->IsEmpty());
assert(theMessageQueue->CountMessages() == i + 1); assert(theMessageQueue->CountMessages() == i + 1);
} }
NextSubTest();
CheckQueueAgainstList(); CheckQueueAgainstList();
assert(testMessageClass::messageDestructorCount == 0); assert(testMessageClass::messageDestructorCount == 0);
delete theMessageQueue; delete theMessageQueue;
theMessageQueue = NULL; theMessageQueue = NULL;
NextSubTest();
assert(testMessageClass::messageDestructorCount == 10000); assert(testMessageClass::messageDestructorCount == 10000);
} }
/* /*
* Method: AddMessageTest1<Locker>::suite() * Method: AddMessageTest1::suite()
* Descr: This static member function returns a test caller for performing * Descr: This static member function returns a test caller for performing
* all combinations of "AddMessageTest1". The test * all combinations of "AddMessageTest1". The test
* is created as a ThreadedTestCase (typedef'd as * is created as a ThreadedTestCase (typedef'd as
* AddMessageTest1Caller) with only one thread. * AddMessageTest1Caller) with only one thread.
*/ */
template<class MessageQueue> Test *AddMessageTest1<MessageQueue>::suite(void) Test *AddMessageTest1::suite(void)
{ {
AddMessageTest1<MessageQueue> *theTest = new AddMessageTest1<MessageQueue>(""); typedef BThreadedTestCaller<AddMessageTest1>
AddMessageTest1Caller *testCaller = new AddMessageTest1Caller("", theTest); AddMessageTest1Caller;
testCaller->addThread(":Thread1", &AddMessageTest1<MessageQueue>::PerformTest);
AddMessageTest1 *theTest = new AddMessageTest1("");
AddMessageTest1Caller *testCaller = new AddMessageTest1Caller("BMessageQueue::Add Message Test #1", theTest);
testCaller->addThread("A", &AddMessageTest1::PerformTest);
return(testCaller); return(testCaller);
} }
template class AddMessageTest1<BMessageQueue>;
template class AddMessageTest1<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: AddMessageTest1.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: AddMessageTest1.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a class for performing one test of BMessageQueue This file defines a class for performing one test of BMessageQueue
functionality. functionality.
@@ -12,16 +12,13 @@
#include "MessageQueueTestCase.h" #include "MessageQueueTestCase.h"
#include "Test.h" #include "../common.h"
#include "ThreadedTestCaller.h"
template<class MessageQueue> class AddMessageTest1 : class AddMessageTest1 :
public MessageQueueTestCase<MessageQueue> { public MessageQueueTestCase {
private: private:
typedef ThreadedTestCaller <AddMessageTest1<MessageQueue> >
AddMessageTest1Caller;
public: public:
static Test *suite(void); static Test *suite(void);
@@ -31,4 +28,10 @@ public:
virtual ~AddMessageTest1(); virtual ~AddMessageTest1();
}; };
#endif #endif
@@ -1,5 +1,5 @@
/* /*
$Id: AddMessageTest2.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: AddMessageTest2.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements the second test for the OpenBeOS BMessageQueue code. This file implements the second test for the OpenBeOS BMessageQueue code.
It tests the Add Message 2 use case. It does so by doing the following: It tests the Add Message 2 use case. It does so by doing the following:
@@ -12,6 +12,7 @@
*/ */
#include "ThreadedTestCaller.h"
#include "AddMessageTest2.h" #include "AddMessageTest2.h"
#include <Message.h> #include <Message.h>
#include <MessageQueue.h> #include <MessageQueue.h>
@@ -19,30 +20,30 @@
/* /*
* Method: AddMessageTest2<MessageQueue>::AddMessageTest2() * Method: AddMessageTest2::AddMessageTest2()
* Descr: This is the constructor for this class. * Descr: This is the constructor for this class.
*/ */
template<class MessageQueue>
AddMessageTest2<MessageQueue>::AddMessageTest2(std::string name) : AddMessageTest2::AddMessageTest2(std::string name) :
MessageQueueTestCase<MessageQueue>(name) MessageQueueTestCase(name)
{ {
} }
/* /*
* Method: AddMessageTest2<MessageQueue>::~AddMessageTest2() * Method: AddMessageTest2::~AddMessageTest2()
* Descr: This is the destructor for this class. * Descr: This is the destructor for this class.
*/ */
template<class MessageQueue>
AddMessageTest2<MessageQueue>::~AddMessageTest2() AddMessageTest2::~AddMessageTest2()
{ {
} }
/* /*
* Method: AddMessageTest2<MessageQueue>::PerformTest() * Method: AddMessageTest2::PerformTest()
* Descr: This member function performs this test. It adds * Descr: This member function performs this test. It adds
* 4 messages to the message queue and confirms that * 4 messages to the message queue and confirms that
* the queue contains the right messages. Then it re-adds * the queue contains the right messages. Then it re-adds
@@ -51,9 +52,10 @@ template<class MessageQueue>
* checks each element on the queue one by one. * checks each element on the queue one by one.
*/ */
template<class MessageQueue>
void AddMessageTest2<MessageQueue>::PerformTest(void) void AddMessageTest2::PerformTest(void)
{ {
NextSubTest();
BMessage *firstMessage = new BMessage(1); BMessage *firstMessage = new BMessage(1);
BMessage *secondMessage = new BMessage(2); BMessage *secondMessage = new BMessage(2);
BMessage *thirdMessage = new BMessage(3); BMessage *thirdMessage = new BMessage(3);
@@ -64,6 +66,7 @@ template<class MessageQueue>
AddMessage(thirdMessage); AddMessage(thirdMessage);
AddMessage(fourthMessage); AddMessage(fourthMessage);
NextSubTest();
CheckQueueAgainstList(); CheckQueueAgainstList();
AddMessage(secondMessage); AddMessage(secondMessage);
@@ -75,36 +78,37 @@ template<class MessageQueue>
try { try {
CheckQueueAgainstList(); CheckQueueAgainstList();
} }
catch (CppUnitException e) { catch (CppUnit::Exception e) {
exceptionRaised = true; exceptionRaised = true;
} }
assert(exceptionRaised); CPPUNIT_ASSERT(exceptionRaised);
assert(theMessageQueue->FindMessage((int32)0) == firstMessage); NextSubTest();
assert(theMessageQueue->FindMessage((int32)1) == secondMessage); CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)0) == firstMessage);
assert(theMessageQueue->FindMessage((int32)2) == NULL); CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)1) == secondMessage);
assert(theMessageQueue->FindMessage((int32)3) == NULL); CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)2) == NULL);
assert(theMessageQueue->FindMessage((int32)4) == NULL); CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)3) == NULL);
CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)4) == NULL);
} }
/* /*
* Method: AddMessageTest2<Locker>::suite() * Method: AddMessageTest2::suite()
* Descr: This static member function returns a test caller for performing * Descr: This static member function returns a test caller for performing
* all combinations of "AddMessageTest2". The test * all combinations of "AddMessageTest2". The test
* is created as a ThreadedTestCase (typedef'd as * is created as a ThreadedTestCase (typedef'd as
* AddMessageTest2Caller) with only one thread. * AddMessageTest2Caller) with only one thread.
*/ */
template<class MessageQueue> Test *AddMessageTest2<MessageQueue>::suite(void) Test *AddMessageTest2::suite(void)
{ {
AddMessageTest2<MessageQueue> *theTest = new AddMessageTest2<MessageQueue>(""); typedef BThreadedTestCaller<AddMessageTest2>
AddMessageTest2Caller *testCaller = new AddMessageTest2Caller("", theTest); AddMessageTest2Caller;
testCaller->addThread(":Thread1", &AddMessageTest2<MessageQueue>::PerformTest); AddMessageTest2 *theTest = new AddMessageTest2("");
AddMessageTest2Caller *testCaller = new AddMessageTest2Caller("BMessageQueue::Add Message Test #2", theTest);
testCaller->addThread("A", &AddMessageTest2::PerformTest);
return(testCaller); return(testCaller);
} }
template class AddMessageTest2<BMessageQueue>;
template class AddMessageTest2<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: AddMessageTest2.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: AddMessageTest2.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a class for performing one test of BMessageQueue This file defines a class for performing one test of BMessageQueue
functionality. functionality.
@@ -12,16 +12,13 @@
#include "MessageQueueTestCase.h" #include "MessageQueueTestCase.h"
#include "Test.h" #include "../common.h"
#include "ThreadedTestCaller.h"
template<class MessageQueue> class AddMessageTest2 : class AddMessageTest2 :
public MessageQueueTestCase<MessageQueue> { public MessageQueueTestCase {
private: private:
typedef ThreadedTestCaller <AddMessageTest2<MessageQueue> >
AddMessageTest2Caller;
public: public:
static Test *suite(void); static Test *suite(void);
@@ -30,4 +27,10 @@ public:
virtual ~AddMessageTest2(); virtual ~AddMessageTest2();
}; };
#endif #endif
@@ -1,5 +1,5 @@
/* /*
$Id: ConcurrencyTest1.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: ConcurrencyTest1.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements a test class for testing BMessageQueue functionality. This file implements a test class for testing BMessageQueue functionality.
It tests use cases Destruction, Add Message 1, Add Message 3, Remove Message 1, It tests use cases Destruction, Add Message 1, Add Message 3, Remove Message 1,
@@ -30,11 +30,12 @@
*/ */
#include "ThreadedTestCaller.h"
#include "ConcurrencyTest1.h" #include "ConcurrencyTest1.h"
#include "ThreadedTestCaller.h" #include "ThreadedTestCaller.h"
#include "TestSuite.h" #include "TestSuite.h"
#include <MessageQueue.h> #include <MessageQueue.h>
#include "MessageQueue.h" #include <Autolock.h>
// This constant indicates how many messages to add to the queue. // This constant indicates how many messages to add to the queue.
@@ -48,36 +49,36 @@ const int numAddMessagesPerRemove = 5;
/* /*
* Method: ConcurrencyTest1<MessageQueue>::ConcurrencyTest1() * Method: ConcurrencyTest1::ConcurrencyTest1()
* Descr: This is the constructor for this test. * Descr: This is the constructor for this test.
*/ */
template<class MessageQueue>
ConcurrencyTest1<MessageQueue>::ConcurrencyTest1(std::string name, bool listFlag) : ConcurrencyTest1::ConcurrencyTest1(std::string name, bool listFlag) :
MessageQueueTestCase<MessageQueue>(name), useList(listFlag) MessageQueueTestCase(name), useList(listFlag)
{ {
} }
/* /*
* Method: ConcurrencyTest1<MessageQueue>::~ConcurrencyTest1() * Method: ConcurrencyTest1::~ConcurrencyTest1()
* Descr: This is the destructor for this test. * Descr: This is the destructor for this test.
*/ */
template<class MessageQueue>
ConcurrencyTest1<MessageQueue>::~ConcurrencyTest1() ConcurrencyTest1::~ConcurrencyTest1()
{ {
} }
/* /*
* Method: ConcurrencyTest1<MessageQueue>::setUp() * Method: ConcurrencyTest1::setUp()
* Descr: This member function prepares the enviroment for test execution. * Descr: This member function prepares the enviroment for test execution.
* It resets the message destructor count and puts "numAddMessages" * It resets the message destructor count and puts "numAddMessages"
* messages on the queue. * messages on the queue.
*/ */
template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::setUp(void) void ConcurrencyTest1::setUp(void)
{ {
testMessageClass::messageDestructorCount = 0; testMessageClass::messageDestructorCount = 0;
@@ -94,7 +95,7 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::setUp(void)
/* /*
* Method: ConcurrencyTest1<MessageQueue>::TestThread1() * Method: ConcurrencyTest1::TestThread1()
* Descr: This member function is one of the three threads for performing * Descr: This member function is one of the three threads for performing
* this test. It waits until the other two threads complete and * this test. It waits until the other two threads complete and
* then checks the state of the message queue. If the list is * then checks the state of the message queue. If the list is
@@ -103,8 +104,9 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::setUp(void)
* are all deleted when the message queue is destructed. * are all deleted when the message queue is destructed.
*/ */
template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread1(void) void ConcurrencyTest1::TestThread1(void)
{ {
NextSubTest();
snooze(1000000); snooze(1000000);
thread2Lock.Lock(); thread2Lock.Lock();
thread3Lock.Lock(); thread3Lock.Lock();
@@ -116,30 +118,32 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread1(vo
int numMessages = (2*numAddMessages) - int numMessages = (2*numAddMessages) -
(numAddMessages / numAddMessagesPerRemove) - (numAddMessages / numAddMessagesPerRemove) -
numNextMessages; numNextMessages;
assert(numMessages == theMessageQueue->CountMessages()); CPPUNIT_ASSERT(numMessages == theMessageQueue->CountMessages());
assert(testMessageClass::messageDestructorCount == 0); CPPUNIT_ASSERT(testMessageClass::messageDestructorCount == 0);
delete theMessageQueue; delete theMessageQueue;
theMessageQueue = NULL; theMessageQueue = NULL;
assert(testMessageClass::messageDestructorCount == numMessages); CPPUNIT_ASSERT(testMessageClass::messageDestructorCount == numMessages);
} }
/* /*
* Method: ConcurrencyTest1<MessageQueue>::TestThread2() * Method: ConcurrencyTest1::TestThread2()
* Descr: This member function is one of the three threads for performing * Descr: This member function is one of the three threads for performing
* this test. It performs NextMessage() numNextMessages times on * this test. It performs NextMessage() numNextMessages times on
* the queue. It confirms that it always receives a message from * the queue. It confirms that it always receives a message from
* the queue. * the queue.
*/ */
template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread2(void) void ConcurrencyTest1::TestThread2(void)
{ {
thread2Lock.Lock(); BAutolock mySafetyLock(&thread2Lock);
SafetyLock<BLocker> mySafetyLock(&thread2Lock);
int i; int i;
for(i = 0; i < numNextMessages; i++) { for(i = 0; i < numNextMessages; i++) {
if (i % (numNextMessages / 10) == 0)
NextSubTest();
snooze(5000); snooze(5000);
BMessage *theMessage; BMessage *theMessage;
if (useList) { if (useList) {
@@ -147,28 +151,30 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread2(vo
} else { } else {
theMessage = theMessageQueue->NextMessage(); theMessage = theMessageQueue->NextMessage();
} }
assert(theMessage != NULL); CPPUNIT_ASSERT(theMessage != NULL);
} }
} }
/* /*
* Method: ConcurrencyTest1<MessageQueue>::TestThread3() * Method: ConcurrencyTest1::TestThread3()
* Descr: This member function is one of the three threads for performing * Descr: This member function is one of the three threads for performing
* this test. It adds numAddMessages messages to the queue. For * this test. It adds numAddMessages messages to the queue. For
* every numAddMessagesPerRemove messages it adds, one message * every numAddMessagesPerRemove messages it adds, one message
* is removed. * is removed.
*/ */
template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread3(void) void ConcurrencyTest1::TestThread3(void)
{ {
thread3Lock.Lock(); BAutolock mySafetyLock(&thread3Lock);
SafetyLock<BLocker> mySafetyLock(&thread3Lock);
int i; int i;
BList messagesToRemove; BList messagesToRemove;
for (i=0; i < numAddMessages; i++) { for (i=0; i < numAddMessages; i++) {
if (i % (numAddMessages / 10) == 0)
NextSubTest();
BMessage *theMessage = new testMessageClass(i); BMessage *theMessage = new testMessageClass(i);
if (useList) { if (useList) {
AddMessage(theMessage); AddMessage(theMessage);
@@ -188,7 +194,7 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread3(vo
/* /*
* Method: ConcurrencyTest1<MessageQueue>::suite() * Method: ConcurrencyTest1::suite()
* Descr: This static member function returns a test suite for performing * Descr: This static member function returns a test suite for performing
* all combinations of "ConcurrencyTest1". The test suite contains * all combinations of "ConcurrencyTest1". The test suite contains
* two instances of the test. One is performed with a list, * two instances of the test. One is performed with a list,
@@ -197,21 +203,23 @@ template<class MessageQueue> void ConcurrencyTest1<MessageQueue>::TestThread3(vo
* ConcurrencyTest1Caller) with three independent threads. * ConcurrencyTest1Caller) with three independent threads.
*/ */
template<class MessageQueue> Test *ConcurrencyTest1<MessageQueue>::suite(void) Test *ConcurrencyTest1::suite(void)
{ {
typedef BThreadedTestCaller<ConcurrencyTest1>
ConcurrencyTest1Caller;
TestSuite *testSuite = new TestSuite("ConcurrencyTest1"); TestSuite *testSuite = new TestSuite("ConcurrencyTest1");
ConcurrencyTest1<MessageQueue> *theTest = new ConcurrencyTest1<MessageQueue>("WithList", true); ConcurrencyTest1 *theTest = new ConcurrencyTest1("WithList", true);
ConcurrencyTest1Caller *threadedTest1 = new ConcurrencyTest1Caller("", theTest); ConcurrencyTest1Caller *threadedTest1 = new ConcurrencyTest1Caller("BMessageQueue::Concurrency Test #1 (with list)", theTest);
threadedTest1->addThread(":Thread1", &ConcurrencyTest1<MessageQueue>::TestThread1); threadedTest1->addThread("A", &ConcurrencyTest1::TestThread1);
threadedTest1->addThread(":Thread2", &ConcurrencyTest1<MessageQueue>::TestThread2); threadedTest1->addThread("B", &ConcurrencyTest1::TestThread2);
threadedTest1->addThread(":Thread3", &ConcurrencyTest1<MessageQueue>::TestThread3); threadedTest1->addThread("C", &ConcurrencyTest1::TestThread3);
theTest = new ConcurrencyTest1<MessageQueue>("WithoutList", false); theTest = new ConcurrencyTest1("WithoutList", false);
ConcurrencyTest1Caller *threadedTest2 = new ConcurrencyTest1Caller("", theTest); ConcurrencyTest1Caller *threadedTest2 = new ConcurrencyTest1Caller("BMessageQueue::Concurrency Test #1 (without list)", theTest);
threadedTest2->addThread(":Thread1", &ConcurrencyTest1<MessageQueue>::TestThread1); threadedTest2->addThread("A", &ConcurrencyTest1::TestThread1);
threadedTest2->addThread(":Thread2", &ConcurrencyTest1<MessageQueue>::TestThread2); threadedTest2->addThread("B", &ConcurrencyTest1::TestThread2);
threadedTest2->addThread(":Thread3", &ConcurrencyTest1<MessageQueue>::TestThread3); threadedTest2->addThread("C", &ConcurrencyTest1::TestThread3);
testSuite->addTest(threadedTest1); testSuite->addTest(threadedTest1);
testSuite->addTest(threadedTest2); testSuite->addTest(threadedTest2);
@@ -219,5 +227,4 @@ template<class MessageQueue> Test *ConcurrencyTest1<MessageQueue>::suite(void)
} }
template class ConcurrencyTest1<BMessageQueue>;
template class ConcurrencyTest1<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: ConcurrencyTest1.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: ConcurrencyTest1.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a classes for performing one test of BMessageQueue This file defines a classes for performing one test of BMessageQueue
functionality. functionality.
@@ -12,17 +12,14 @@
#include "MessageQueueTestCase.h" #include "MessageQueueTestCase.h"
#include "Test.h" #include "../common.h"
#include "ThreadedTestCaller.h"
#include <Locker.h> #include <Locker.h>
template<class MessageQueue> class ConcurrencyTest1 : class ConcurrencyTest1 :
public MessageQueueTestCase<MessageQueue> { public MessageQueueTestCase {
private: private:
typedef ThreadedTestCaller<ConcurrencyTest1<MessageQueue> >
ConcurrencyTest1Caller;
bool useList; bool useList;
BLocker thread2Lock; BLocker thread2Lock;
@@ -40,4 +37,10 @@ public:
virtual ~ConcurrencyTest1(); virtual ~ConcurrencyTest1();
}; };
#endif #endif
@@ -1,5 +1,5 @@
/* /*
$Id: ConcurrencyTest2.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: ConcurrencyTest2.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements a test class for testing BMessageQueue functionality. This file implements a test class for testing BMessageQueue functionality.
It tests use cases Destruction, Add Message 3, Remove Message 2, It tests use cases Destruction, Add Message 3, Remove Message 2,
@@ -22,11 +22,9 @@
*/ */
#include "ConcurrencyTest2.h"
#include "ThreadedTestCaller.h" #include "ThreadedTestCaller.h"
#include "TestSuite.h" #include "ConcurrencyTest2.h"
#include <MessageQueue.h> #include <MessageQueue.h>
#include "MessageQueue.h"
// This constant indicates the number of messages to add to the queue. // This constant indicates the number of messages to add to the queue.
@@ -37,38 +35,38 @@ bigtime_t SNOOZE_TIME = 100000;
/* /*
* Method: ConcurrencyTest2<MessageQueue>::ConcurrencyTest2() * Method: ConcurrencyTest2::ConcurrencyTest2()
* Descr: This is the constructor for this test. * Descr: This is the constructor for this test.
*/ */
template<class MessageQueue>
ConcurrencyTest2<MessageQueue>::ConcurrencyTest2(std::string name, bool unlockFlag) : ConcurrencyTest2::ConcurrencyTest2(std::string name, bool unlockFlag) :
MessageQueueTestCase<MessageQueue>(name), unlockTest(unlockFlag) MessageQueueTestCase(name), unlockTest(unlockFlag)
{ {
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::~ConcurrencyTest2() * Method: ConcurrencyTest2::~ConcurrencyTest2()
* Descr: This is the destructor for this test. * Descr: This is the destructor for this test.
*/ */
template<class MessageQueue>
ConcurrencyTest2<MessageQueue>::~ConcurrencyTest2() ConcurrencyTest2::~ConcurrencyTest2()
{ {
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::setUp() * Method: ConcurrencyTest2::setUp()
* Descr: This member functions sets the environment for the test. * Descr: This member functions sets the environment for the test.
* it sets the lock flag and resets the message destructor * it sets the lock flag and resets the message destructor
* count. Finally, it adds numAddMessages messages to the * count. Finally, it adds numAddMessages messages to the
* queue. * queue.
*/ */
template<class MessageQueue>
void ConcurrencyTest2<MessageQueue>::setUp(void) void ConcurrencyTest2::setUp(void)
{ {
isLocked = false; isLocked = false;
testMessageClass::messageDestructorCount = 0; testMessageClass::messageDestructorCount = 0;
@@ -84,15 +82,15 @@ template<class MessageQueue>
/* /*
* Method: ConcurrencyTest2<MessageQueue>::TestThread1() * Method: ConcurrencyTest2::TestThread1()
* Descr: This member function is one thread within the test. It * Descr: This member function is one thread within the test. It
* acquires the lock on the queue and then sleeps for a while. * acquires the lock on the queue and then sleeps for a while.
* When it wakes up, it releases the lock on the queue by * When it wakes up, it releases the lock on the queue by
* either doing an Unlock() or deleting the queue. * either doing an Unlock() or deleting the queue.
*/ */
template<class MessageQueue>
void ConcurrencyTest2<MessageQueue>::TestThread1(void) void ConcurrencyTest2::TestThread1(void)
{ {
theMessageQueue->Lock(); theMessageQueue->Lock();
isLocked = true; isLocked = true;
@@ -103,7 +101,7 @@ template<class MessageQueue>
if (unlockTest) { if (unlockTest) {
theMessageQueue->Unlock(); theMessageQueue->Unlock();
} else { } else {
MessageQueue *tmpMessageQueue = theMessageQueue; BMessageQueue *tmpMessageQueue = theMessageQueue;
theMessageQueue = NULL; theMessageQueue = NULL;
delete tmpMessageQueue; delete tmpMessageQueue;
} }
@@ -111,7 +109,7 @@ template<class MessageQueue>
/* /*
* Method: ConcurrencyTest2<MessageQueue>::TestThread2() * Method: ConcurrencyTest2::TestThread2()
* Descr: This member function is one thread within the test. It * Descr: This member function is one thread within the test. It
* snoozes for a short time so that TestThread1() will grab * snoozes for a short time so that TestThread1() will grab
* the lock. If this is the delete test, this thread * the lock. If this is the delete test, this thread
@@ -120,10 +118,10 @@ template<class MessageQueue>
* the queue. The result of NextMessage() is checked finally. * the queue. The result of NextMessage() is checked finally.
*/ */
template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread2(void) void ConcurrencyTest2::TestThread2(void)
{ {
snooze(SNOOZE_TIME/10); snooze(SNOOZE_TIME/10);
assert(isLocked); CPPUNIT_ASSERT(isLocked);
if (!unlockTest) { if (!unlockTest) {
// Be's implementation can cause a segv when NextMessage() is in // Be's implementation can cause a segv when NextMessage() is in
// progress when a delete occurs. The OpenBeOS implementation // progress when a delete occurs. The OpenBeOS implementation
@@ -131,11 +129,11 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread2(vo
return; return;
} }
BMessage *theMessage = theMessageQueue->NextMessage(); BMessage *theMessage = theMessageQueue->NextMessage();
assert(!isLocked); CPPUNIT_ASSERT(!isLocked);
if (unlockTest) { if (unlockTest) {
assert(theMessage != NULL); CPPUNIT_ASSERT(theMessage != NULL);
assert(theMessage->what == 0); CPPUNIT_ASSERT(theMessage->what == 0);
} else { } else {
// The following test passes for the OpenBeOS implementation but // The following test passes for the OpenBeOS implementation but
// fails for the Be implementation. If the BMessageQueue is deleted // fails for the Be implementation. If the BMessageQueue is deleted
@@ -146,13 +144,13 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread2(vo
// deleted. The OpenBeOS implementation will not emulate the Be // deleted. The OpenBeOS implementation will not emulate the Be
// implementation since I consider it a bug. // implementation since I consider it a bug.
// //
// assert(theMessage==NULL); // CPPUNIT_ASSERT(theMessage==NULL);
} }
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::TestThread3() * Method: ConcurrencyTest2::TestThread3()
* Descr: This member function is one thread within the test. It * Descr: This member function is one thread within the test. It
* snoozes for a short time so that TestThread1() will grab * snoozes for a short time so that TestThread1() will grab
* the lock. If this is the delete test, this thread * the lock. If this is the delete test, this thread
@@ -161,10 +159,10 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread2(vo
* on the queue. The state of the queue is checked finally. * on the queue. The state of the queue is checked finally.
*/ */
template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread3(void) void ConcurrencyTest2::TestThread3(void)
{ {
snooze(SNOOZE_TIME/10); snooze(SNOOZE_TIME/10);
assert(isLocked); CPPUNIT_ASSERT(isLocked);
if (!unlockTest) { if (!unlockTest) {
// Be's implementation causes a segv when RemoveMessage() is in // Be's implementation causes a segv when RemoveMessage() is in
// progress when a delete occurs. The OpenBeOS implementation // progress when a delete occurs. The OpenBeOS implementation
@@ -172,15 +170,15 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread3(vo
return; return;
} }
theMessageQueue->RemoveMessage(removeMessage); theMessageQueue->RemoveMessage(removeMessage);
assert(!isLocked); CPPUNIT_ASSERT(!isLocked);
if (unlockTest) { if (unlockTest) {
assert(theMessageQueue->FindMessage(removeMessage->what, 0) == NULL); CPPUNIT_ASSERT(theMessageQueue->FindMessage(removeMessage->what, 0) == NULL);
} }
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::TestThread1() * Method: ConcurrencyTest2::TestThread1()
* Descr: This member function is one thread within the test. It * Descr: This member function is one thread within the test. It
* snoozes for a short time so that TestThread1() will grab * snoozes for a short time so that TestThread1() will grab
* the lock. If this is the delete test, this thread * the lock. If this is the delete test, this thread
@@ -189,10 +187,10 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread3(vo
* the queue. The state of the queue is checked finally. * the queue. The state of the queue is checked finally.
*/ */
template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread4(void) void ConcurrencyTest2::TestThread4(void)
{ {
snooze(SNOOZE_TIME/10); snooze(SNOOZE_TIME/10);
assert(isLocked); CPPUNIT_ASSERT(isLocked);
if (!unlockTest) { if (!unlockTest) {
// Be's implementation can cause a segv when AddMessage() is in // Be's implementation can cause a segv when AddMessage() is in
// progress when a delete occurs. The OpenBeOS implementation // progress when a delete occurs. The OpenBeOS implementation
@@ -200,15 +198,15 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread4(vo
return; return;
} }
theMessageQueue->AddMessage(new testMessageClass(numAddMessages)); theMessageQueue->AddMessage(new testMessageClass(numAddMessages));
assert(!isLocked); CPPUNIT_ASSERT(!isLocked);
if (unlockTest) { if (unlockTest) {
assert(theMessageQueue->FindMessage(numAddMessages, 0) != NULL); CPPUNIT_ASSERT(theMessageQueue->FindMessage(numAddMessages, 0) != NULL);
} }
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::TestThread1() * Method: ConcurrencyTest2::TestThread1()
* Descr: This member function is one thread within the test. It * Descr: This member function is one thread within the test. It
* snoozes for a short time so that TestThread1() will grab * snoozes for a short time so that TestThread1() will grab
* the lock. The thread blocks attempting to acquire the * the lock. The thread blocks attempting to acquire the
@@ -217,25 +215,25 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread4(vo
* acquisition. * acquisition.
*/ */
template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread5(void) void ConcurrencyTest2::TestThread5(void)
{ {
SafetyLock<MessageQueue> mySafetyLock(theMessageQueue); SafetyLock mySafetyLock(theMessageQueue);
snooze(SNOOZE_TIME/10); snooze(SNOOZE_TIME/10);
assert(isLocked); CPPUNIT_ASSERT(isLocked);
bool result = theMessageQueue->Lock(); bool result = theMessageQueue->Lock();
assert(!isLocked); CPPUNIT_ASSERT(!isLocked);
if (unlockTest) { if (unlockTest) {
assert(result); CPPUNIT_ASSERT(result);
theMessageQueue->Unlock(); theMessageQueue->Unlock();
} else { } else {
assert(!result); CPPUNIT_ASSERT(!result);
} }
} }
/* /*
* Method: ConcurrencyTest2<MessageQueue>::suite() * Method: ConcurrencyTest2::suite()
* Descr: This static member function returns a test suite for performing * Descr: This static member function returns a test suite for performing
* all combinations of "ConcurrencyTest2". The test suite contains * all combinations of "ConcurrencyTest2". The test suite contains
* two instances of the test. One is performed with an unlock, * two instances of the test. One is performed with an unlock,
@@ -244,25 +242,28 @@ template<class MessageQueue> void ConcurrencyTest2<MessageQueue>::TestThread5(vo
* ConcurrencyTest2Caller) with five independent threads. * ConcurrencyTest2Caller) with five independent threads.
*/ */
template<class MessageQueue> Test *ConcurrencyTest2<MessageQueue>::suite(void) Test *ConcurrencyTest2::suite(void)
{ {
typedef BThreadedTestCaller<ConcurrencyTest2>
ConcurrencyTest2Caller;
TestSuite *testSuite = new TestSuite("ConcurrencyTest2"); TestSuite *testSuite = new TestSuite("ConcurrencyTest2");
ConcurrencyTest2<MessageQueue> *theTest = new ConcurrencyTest2<MessageQueue>("WithUnlock", true); ConcurrencyTest2 *theTest = new ConcurrencyTest2("WithUnlock", true);
ConcurrencyTest2Caller *threadedTest1 = new ConcurrencyTest2Caller("", theTest); ConcurrencyTest2Caller *threadedTest1 = new ConcurrencyTest2Caller("BMessageQueue::Concurrency Test #2 (with unlock)", theTest);
threadedTest1->addThread(":Thread1", &ConcurrencyTest2<MessageQueue>::TestThread1); threadedTest1->addThread("A", &ConcurrencyTest2::TestThread1);
threadedTest1->addThread(":Thread2", &ConcurrencyTest2<MessageQueue>::TestThread2); threadedTest1->addThread("B", &ConcurrencyTest2::TestThread2);
threadedTest1->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread3); threadedTest1->addThread("C", &ConcurrencyTest2::TestThread3);
threadedTest1->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread4); threadedTest1->addThread("D", &ConcurrencyTest2::TestThread4);
threadedTest1->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread5); threadedTest1->addThread("E", &ConcurrencyTest2::TestThread5);
theTest = new ConcurrencyTest2<MessageQueue>("WithDelete", false); theTest = new ConcurrencyTest2("WithDelete", false);
ConcurrencyTest2Caller *threadedTest2 = new ConcurrencyTest2Caller("", theTest); ConcurrencyTest2Caller *threadedTest2 = new ConcurrencyTest2Caller("BMessageQueue::Concurrency Test #2 (with delete)", theTest);
threadedTest2->addThread(":Thread1", &ConcurrencyTest2<MessageQueue>::TestThread1); threadedTest2->addThread("A", &ConcurrencyTest2::TestThread1);
threadedTest2->addThread(":Thread2", &ConcurrencyTest2<MessageQueue>::TestThread2); threadedTest2->addThread("B", &ConcurrencyTest2::TestThread2);
threadedTest2->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread3); threadedTest2->addThread("C", &ConcurrencyTest2::TestThread3);
threadedTest2->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread4); threadedTest2->addThread("D", &ConcurrencyTest2::TestThread4);
threadedTest2->addThread(":Thread3", &ConcurrencyTest2<MessageQueue>::TestThread5); threadedTest2->addThread("E", &ConcurrencyTest2::TestThread5);
testSuite->addTest(threadedTest1); testSuite->addTest(threadedTest1);
testSuite->addTest(threadedTest2); testSuite->addTest(threadedTest2);
@@ -270,5 +271,4 @@ template<class MessageQueue> Test *ConcurrencyTest2<MessageQueue>::suite(void)
} }
template class ConcurrencyTest2<BMessageQueue>;
template class ConcurrencyTest2<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: ConcurrencyTest2.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: ConcurrencyTest2.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a classes for performing one test of BMessageQueue This file defines a classes for performing one test of BMessageQueue
functionality. functionality.
@@ -7,21 +7,18 @@
*/ */
#ifndef ConcurrencyTest2_H #ifndef _ConcurrencyTest2_H
#define ConcurrencyTest2_H #define _ConcurrencyTest2_H
#include "MessageQueueTestCase.h" #include "MessageQueueTestCase.h"
#include "Test.h" #include "../common.h"
#include "ThreadedTestCaller.h"
template<class MessageQueue> class ConcurrencyTest2 : class ConcurrencyTest2 :
public MessageQueueTestCase<MessageQueue> { public MessageQueueTestCase {
private: private:
typedef ThreadedTestCaller<ConcurrencyTest2<MessageQueue> >
ConcurrencyTest2Caller;
bool unlockTest; bool unlockTest;
bool isLocked; bool isLocked;
@@ -39,4 +36,8 @@ public:
virtual ~ConcurrencyTest2(); virtual ~ConcurrencyTest2();
}; };
#endif #endif
@@ -1,5 +1,5 @@
/* /*
$Id: FindMessageTest1.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: FindMessageTest1.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements the second test for the OpenBeOS BMessageQueue code. This file implements the second test for the OpenBeOS BMessageQueue code.
It tests the Add Message 1 and Find Message 2 use cases. It does so by It tests the Add Message 1 and Find Message 2 use cases. It does so by
@@ -17,6 +17,7 @@
*/ */
#include "ThreadedTestCaller.h"
#include "FindMessageTest1.h" #include "FindMessageTest1.h"
#include <Message.h> #include <Message.h>
#include <MessageQueue.h> #include <MessageQueue.h>
@@ -33,30 +34,30 @@ const int numPerWhatCode = 50;
/* /*
* Method: FindMessageTest1<MessageQueue>::FindMessageTest1() * Method: FindMessageTest1::FindMessageTest1()
* Descr: This is the constructor for this test class. * Descr: This is the constructor for this test class.
*/ */
template<class MessageQueue>
FindMessageTest1<MessageQueue>::FindMessageTest1(std::string name) : FindMessageTest1::FindMessageTest1(std::string name) :
MessageQueueTestCase<MessageQueue>(name) MessageQueueTestCase(name)
{ {
} }
/* /*
* Method: FindMessageTest1<MessageQueue>::~FindMessageTest1() * Method: FindMessageTest1::~FindMessageTest1()
* Descr: This is the destructor for this test class. * Descr: This is the destructor for this test class.
*/ */
template<class MessageQueue>
FindMessageTest1<MessageQueue>::~FindMessageTest1() FindMessageTest1::~FindMessageTest1()
{ {
} }
/* /*
* Method: FindMessageTest1<MessageQueue>::PerformTest() * Method: FindMessageTest1::PerformTest()
* Descr: This is the member function for executing the test. * Descr: This is the member function for executing the test.
* It adds numPerWhatCode*numWhatCodes messages to the * It adds numPerWhatCode*numWhatCodes messages to the
* queue. Then, it uses FindMessage() to search for * queue. Then, it uses FindMessage() to search for
@@ -64,8 +65,8 @@ template<class MessageQueue>
* checks that the queue and list return the same result. * checks that the queue and list return the same result.
*/ */
template<class MessageQueue>
void FindMessageTest1<MessageQueue>::PerformTest(void) void FindMessageTest1::PerformTest(void)
{ {
int whatCode; int whatCode;
int i; int i;
@@ -73,42 +74,49 @@ template<class MessageQueue>
BMessage *listMessage; BMessage *listMessage;
for (i = 0; i < numPerWhatCode; i++) { for (i = 0; i < numPerWhatCode; i++) {
if (i % (numPerWhatCode / 10) == 0)
NextSubTest();
for (whatCode = 1; whatCode <= numWhatCodes; whatCode++) { for (whatCode = 1; whatCode <= numWhatCodes; whatCode++) {
AddMessage(new testMessageClass(whatCode)); AddMessage(new testMessageClass(whatCode));
} }
} }
for (whatCode = 0; whatCode <= numWhatCodes + 1; whatCode++) { for (whatCode = 0; whatCode <= numWhatCodes + 1; whatCode++) {
if (i % (numWhatCodes / 10) == 0)
NextSubTest();
int index = 0; int index = 0;
while ((theMessage = theMessageQueue->FindMessage(whatCode, while ((theMessage = theMessageQueue->FindMessage(whatCode,
index)) != NULL) { index)) != NULL) {
listMessage = FindMessage(whatCode, index); listMessage = FindMessage(whatCode, index);
assert(listMessage == theMessage); CPPUNIT_ASSERT(listMessage == theMessage);
index++; index++;
} }
listMessage = FindMessage(whatCode, index); listMessage = FindMessage(whatCode, index);
assert(listMessage == theMessage); CPPUNIT_ASSERT(listMessage == theMessage);
} }
} }
/* /*
* Method: FindMessageTest1<Locker>::suite() * Method: FindMessageTest1::suite()
* Descr: This static member function returns a test caller for performing * Descr: This static member function returns a test caller for performing
* all combinations of "FindMessageTest1". The test * all combinations of "FindMessageTest1". The test
* is created as a ThreadedTestCase (typedef'd as * is created as a ThreadedTestCase (typedef'd as
* FindMessageTest1Caller) with only one thread. * FindMessageTest1Caller) with only one thread.
*/ */
template<class MessageQueue> Test *FindMessageTest1<MessageQueue>::suite(void) Test *FindMessageTest1::suite(void)
{ {
FindMessageTest1<MessageQueue> *theTest = new FindMessageTest1<MessageQueue>(""); typedef BThreadedTestCaller<FindMessageTest1>
FindMessageTest1Caller *testCaller = new FindMessageTest1Caller("", theTest); FindMessageTest1Caller;
testCaller->addThread(":Thread1", &FindMessageTest1<MessageQueue>::PerformTest);
FindMessageTest1 *theTest = new FindMessageTest1("");
FindMessageTest1Caller *testCaller = new FindMessageTest1Caller("BMessageQueue::Find Message Test", theTest);
testCaller->addThread("A", &FindMessageTest1::PerformTest);
return(testCaller); return(testCaller);
} }
template class FindMessageTest1<BMessageQueue>;
template class FindMessageTest1<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: FindMessageTest1.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: FindMessageTest1.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a classes for performing one test of BMessageQueue This file defines a classes for performing one test of BMessageQueue
functionality. functionality.
@@ -12,16 +12,13 @@
#include "MessageQueueTestCase.h" #include "MessageQueueTestCase.h"
#include "Test.h" #include "../common.h"
#include "ThreadedTestCaller.h"
template<class MessageQueue> class FindMessageTest1 : class FindMessageTest1 :
public MessageQueueTestCase<MessageQueue> { public MessageQueueTestCase {
private: private:
typedef ThreadedTestCaller<FindMessageTest1<MessageQueue> >
FindMessageTest1Caller;
public: public:
static Test *suite(void); static Test *suite(void);
@@ -30,4 +27,10 @@ public:
virtual ~FindMessageTest1(); virtual ~FindMessageTest1();
}; };
#endif #endif
@@ -0,0 +1,26 @@
#include "../common.h"
#include "AddMessageTest1.h"
#include "AddMessageTest2.h"
#include "ConcurrencyTest1.h"
#include "ConcurrencyTest2.h"
#include "FindMessageTest1.h"
Test *MessageQueueTestSuite()
{
TestSuite *testSuite = new TestSuite();
testSuite->addTest(AddMessageTest1::suite());
testSuite->addTest(AddMessageTest2::suite());
testSuite->addTest(ConcurrencyTest1::suite());
// testSuite->addTest(ConcurrencyTest2::suite()); // Causes an "Abort" for some reason...
testSuite->addTest(FindMessageTest1::suite());
return(testSuite);
}
@@ -0,0 +1,14 @@
#ifndef _message_queue_test_h_
#define _message_queue_test_h_
class CppUnit::Test;
CppUnit::Test *MessageQueueTestSuite();
#endif // _message_queue_test_h_
@@ -1,5 +1,5 @@
/* /*
$Id: MessageQueueTestCase.cpp,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: MessageQueueTestCase.cpp,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file implements a base class for testing BMessageQueue functionality. This file implements a base class for testing BMessageQueue functionality.
@@ -14,32 +14,32 @@
int testMessageClass::messageDestructorCount = 0; int testMessageClass::messageDestructorCount = 0;
template<class MessageQueue>
MessageQueueTestCase<MessageQueue>::MessageQueueTestCase( MessageQueueTestCase::MessageQueueTestCase(
std::string name) : TestCase(name), std::string name) : BThreadedTestCase(name),
theMessageQueue(new MessageQueue) theMessageQueue(new BMessageQueue())
{ {
} }
template<class MessageQueue>
MessageQueueTestCase<MessageQueue>::~MessageQueueTestCase() MessageQueueTestCase::~MessageQueueTestCase()
{ {
delete theMessageQueue; delete theMessageQueue;
theMessageQueue = NULL; theMessageQueue = NULL;
} }
template<class MessageQueue>
void MessageQueueTestCase<MessageQueue>::CheckQueueAgainstList(void) void MessageQueueTestCase::CheckQueueAgainstList(void)
{ {
SafetyLock<MessageQueue> theSafetyLock(theMessageQueue); SafetyLock theSafetyLock(theMessageQueue);
if (theMessageQueue->Lock()) { if (theMessageQueue->Lock()) {
assert(theMessageQueue->CountMessages() == messageList.CountItems()); CPPUNIT_ASSERT(theMessageQueue->CountMessages() == messageList.CountItems());
int i; int i;
for (i = 0; i < theMessageQueue->CountMessages(); i++) { for (i = 0; i < theMessageQueue->CountMessages(); i++) {
assert(theMessageQueue->FindMessage((int32)i) == CPPUNIT_ASSERT(theMessageQueue->FindMessage((int32)i) ==
messageList.ItemAt(i)); messageList.ItemAt(i));
} }
theMessageQueue->Unlock(); theMessageQueue->Unlock();
@@ -47,8 +47,8 @@ template<class MessageQueue>
} }
template<class MessageQueue>
void MessageQueueTestCase<MessageQueue>::AddMessage(BMessage *message) void MessageQueueTestCase::AddMessage(BMessage *message)
{ {
if (theMessageQueue->Lock()) { if (theMessageQueue->Lock()) {
theMessageQueue->AddMessage(message); theMessageQueue->AddMessage(message);
@@ -57,8 +57,8 @@ template<class MessageQueue>
} }
} }
template<class MessageQueue>
void MessageQueueTestCase<MessageQueue>::RemoveMessage(BMessage *message) void MessageQueueTestCase::RemoveMessage(BMessage *message)
{ {
if (theMessageQueue->Lock()) { if (theMessageQueue->Lock()) {
theMessageQueue->RemoveMessage(message); theMessageQueue->RemoveMessage(message);
@@ -67,23 +67,23 @@ template<class MessageQueue>
} }
} }
template<class MessageQueue>
BMessage *MessageQueueTestCase<MessageQueue>::NextMessage(void) BMessage *MessageQueueTestCase::NextMessage(void)
{ {
SafetyLock<MessageQueue> theSafetyLock(theMessageQueue); SafetyLock theSafetyLock(theMessageQueue);
BMessage *result = NULL; BMessage *result = NULL;
if (theMessageQueue->Lock()) { if (theMessageQueue->Lock()) {
result = theMessageQueue->NextMessage(); result = theMessageQueue->NextMessage();
assert(result == messageList.RemoveItem((int32)0)); CPPUNIT_ASSERT(result == messageList.RemoveItem((int32)0));
theMessageQueue->Unlock(); theMessageQueue->Unlock();
} }
return(result); return(result);
} }
template<class MessageQueue>
BMessage *MessageQueueTestCase<MessageQueue>::FindMessage(uint32 what, int index) BMessage *MessageQueueTestCase::FindMessage(uint32 what, int index)
{ {
int listCount = messageList.CountItems(); int listCount = messageList.CountItems();
int i; int i;
@@ -102,5 +102,4 @@ template<class MessageQueue>
} }
template class MessageQueueTestCase<BMessageQueue>;
template class MessageQueueTestCase<OpenBeOS::BMessageQueue>;
@@ -1,5 +1,5 @@
/* /*
$Id: MessageQueueTestCase.h,v 1.1 2002/07/09 12:24:56 ejakowatz Exp $ $Id: MessageQueueTestCase.h,v 1.2 2002/07/22 09:28:00 tylerdauwalder Exp $
This file defines a set of classes for testing BMessageQueue This file defines a set of classes for testing BMessageQueue
functionality. functionality.
@@ -14,7 +14,8 @@
#include <List.h> #include <List.h>
#include <Locker.h> #include <Locker.h>
#include <Message.h> #include <Message.h>
#include "TestCase.h" #include <MessageQueue.h>
#include "ThreadedTestCase.h"
// //
@@ -25,18 +26,18 @@
// could be deadlocks if one thread in a test has a failure while holding // could be deadlocks if one thread in a test has a failure while holding
// the lock. It should be used like so: // the lock. It should be used like so:
// //
// template<class MessageQueue> void myTestClass<MessageQueue>::myTestFunc(void) // void myTestClass::myTestFunc(void)
// { // {
// SafetyLock<MessageQueue> mySafetyLock(theMessageQueue); // SafetyLock mySafetyLock(theMessageQueue);
// ...perform tests without worrying about holding the lock on assert... // ...perform tests without worrying about holding the lock on assert...
// //
template<class MessageQueue> class SafetyLock { class SafetyLock {
private: private:
MessageQueue *theMessageQueue; BMessageQueue *theMessageQueue;
public: public:
SafetyLock(MessageQueue *aMessageQueue) {theMessageQueue = aMessageQueue;} SafetyLock(BMessageQueue *aMessageQueue) {theMessageQueue = aMessageQueue;}
virtual ~SafetyLock() {if (theMessageQueue != NULL) theMessageQueue->Unlock(); }; virtual ~SafetyLock() {if (theMessageQueue != NULL) theMessageQueue->Unlock(); };
}; };
@@ -56,13 +57,13 @@ public:
}; };
template<class MessageQueue> class MessageQueueTestCase : public TestCase { class MessageQueueTestCase : public BThreadedTestCase {
private: private:
BList messageList; BList messageList;
protected: protected:
MessageQueue *theMessageQueue; BMessageQueue *theMessageQueue;
void AddMessage(BMessage *message); void AddMessage(BMessage *message);
void RemoveMessage(BMessage *message); void RemoveMessage(BMessage *message);
@@ -76,4 +77,7 @@ public:
virtual ~MessageQueueTestCase(); virtual ~MessageQueueTestCase();
}; };
#endif #endif
@@ -316,18 +316,19 @@ Test* TBMessengerTester::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite; TestSuite* SuiteOfTests = new TestSuite;
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger1); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger1);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger2); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger2);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger3); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger3);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger4); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger4);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger5); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger5);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger6); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger6);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger7); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger7);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger8); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger8);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger9); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger9);
ADD_TEST(SuiteOfTests, TBMessengerTester, BMessenger10); ADD_TEST4(BMessenger, SuiteOfTests, TBMessengerTester, BMessenger10);
return SuiteOfTests; return SuiteOfTests;
} }
@@ -232,16 +232,16 @@ Test* LockTargetTester::Suite()
TestSuite* testSuite = new TestSuite; TestSuite* testSuite = new TestSuite;
ADD_TEST(testSuite, LockTargetTester, LockTargetTest1); ADD_TEST4(BMessenger, testSuite, LockTargetTester, LockTargetTest1);
ADD_TEST(testSuite, LockTargetTester, LockTargetTest2); ADD_TEST4(BMessenger, testSuite, LockTargetTester, LockTargetTest2);
ADD_TEST(testSuite, LockTargetTester, LockTargetTest3); ADD_TEST4(BMessenger, testSuite, LockTargetTester, LockTargetTest3);
// test4 // test4
LockTargetTester *test4 LockTargetTester *test4
= new LockTargetTester("LockTargetTest4"); = new LockTargetTester("LockTargetTest4");
test4->fLooper = new BLooper; test4->fLooper = new BLooper;
test4->fLooper->Run(); test4->fLooper->Run();
// test4 test caller // test4 test caller
TC *caller4 = new TC("LockTargetTest4", test4); TC *caller4 = new TC("BMessenger::LockTargetTest4", test4);
caller4->addThread("A", &LockTargetTester::LockTargetTest4A); caller4->addThread("A", &LockTargetTester::LockTargetTest4A);
caller4->addThread("B", &LockTargetTester::LockTargetTest4B); caller4->addThread("B", &LockTargetTester::LockTargetTest4B);
testSuite->addTest(caller4); testSuite->addTest(caller4);
@@ -258,14 +258,15 @@ Test* LockTargetTester::Suite()
} else } else
printf("ERROR: Can't init LockTargetTester test5!\n"); printf("ERROR: Can't init LockTargetTester test5!\n");
// test5 test caller // test5 test caller
TC *caller5 = new TC("LockTargetTest5", test5); TC *caller5 = new TC("BMessenger::LockTargetTest5", test5);
caller5->addThread("A", &LockTargetTester::LockTargetTest5A); caller5->addThread("A", &LockTargetTester::LockTargetTest5A);
caller5->addThread("B", &LockTargetTester::LockTargetTest5B); caller5->addThread("B", &LockTargetTester::LockTargetTest5B);
testSuite->addTest(caller5); testSuite->addTest(caller5);
// tests 6-7 // tests 6-7
ADD_TEST(testSuite, LockTargetTester, LockTargetTest6); ADD_TEST4(BMessenger, testSuite, LockTargetTester, LockTargetTest6);
ADD_TEST(testSuite, LockTargetTester, LockTargetTest7); ADD_TEST4(BMessenger, testSuite, LockTargetTester, LockTargetTest7);
return testSuite; return testSuite;
} }
@@ -310,11 +310,11 @@ Test* LockTargetWithTimeoutTester::Suite()
TestSuite* testSuite = new TestSuite; TestSuite* testSuite = new TestSuite;
ADD_TEST(testSuite, LockTargetWithTimeoutTester, ADD_TEST4(BMessenger, testSuite, LockTargetWithTimeoutTester,
LockTargetWithTimeoutTest1); LockTargetWithTimeoutTest1);
ADD_TEST(testSuite, LockTargetWithTimeoutTester, ADD_TEST4(BMessenger, testSuite, LockTargetWithTimeoutTester,
LockTargetWithTimeoutTest2); LockTargetWithTimeoutTest2);
ADD_TEST(testSuite, LockTargetWithTimeoutTester, ADD_TEST4(BMessenger, testSuite, LockTargetWithTimeoutTester,
LockTargetWithTimeoutTest3); LockTargetWithTimeoutTest3);
// test4 // test4
LockTargetWithTimeoutTester *test4 LockTargetWithTimeoutTester *test4
@@ -322,7 +322,7 @@ Test* LockTargetWithTimeoutTester::Suite()
test4->fLooper = new BLooper; test4->fLooper = new BLooper;
test4->fLooper->Run(); test4->fLooper->Run();
// test4 test caller // test4 test caller
TC *caller4 = new TC("LockTargetWithTimeoutTest4", test4); TC *caller4 = new TC("BMessenger::LockTargetWithTimeoutTest4", test4);
caller4->addThread("A", caller4->addThread("A",
&LockTargetWithTimeoutTester::LockTargetWithTimeoutTest4A); &LockTargetWithTimeoutTester::LockTargetWithTimeoutTest4A);
caller4->addThread("B", caller4->addThread("B",
@@ -334,7 +334,7 @@ Test* LockTargetWithTimeoutTester::Suite()
test5->fLooper = new BLooper; test5->fLooper = new BLooper;
test5->fLooper->Run(); test5->fLooper->Run();
// test5 test caller // test5 test caller
TC *caller5 = new TC("LockTargetWithTimeoutTest5", test5); TC *caller5 = new TC("BMessenger::LockTargetWithTimeoutTest5", test5);
caller5->addThread("A", caller5->addThread("A",
&LockTargetWithTimeoutTester::LockTargetWithTimeoutTest5A); &LockTargetWithTimeoutTester::LockTargetWithTimeoutTest5A);
caller5->addThread("B", caller5->addThread("B",
@@ -353,7 +353,7 @@ Test* LockTargetWithTimeoutTester::Suite()
} else } else
printf("ERROR: Can't init LockTargetWithTimeoutTester test6!\n"); printf("ERROR: Can't init LockTargetWithTimeoutTester test6!\n");
// test6 test caller // test6 test caller
TC *caller6 = new TC("LockTargetWithTimeoutTest6", test6); TC *caller6 = new TC("BMessenger::LockTargetWithTimeoutTest6", test6);
caller6->addThread("A", caller6->addThread("A",
&LockTargetWithTimeoutTester::LockTargetWithTimeoutTest6A); &LockTargetWithTimeoutTester::LockTargetWithTimeoutTest6A);
caller6->addThread("B", caller6->addThread("B",
@@ -372,18 +372,19 @@ Test* LockTargetWithTimeoutTester::Suite()
} else } else
printf("ERROR: Can't init LockTargetWithTimeoutTester test7!\n"); printf("ERROR: Can't init LockTargetWithTimeoutTester test7!\n");
// test7 test caller // test7 test caller
TC *caller7 = new TC("LockTargetWithTimeoutTest7", test7); TC *caller7 = new TC("BMessenger::LockTargetWithTimeoutTest7", test7);
caller7->addThread("A", caller7->addThread("A",
&LockTargetWithTimeoutTester::LockTargetWithTimeoutTest7A); &LockTargetWithTimeoutTester::LockTargetWithTimeoutTest7A);
caller7->addThread("B", caller7->addThread("B",
&LockTargetWithTimeoutTester::LockTargetWithTimeoutTest7B); &LockTargetWithTimeoutTester::LockTargetWithTimeoutTest7B);
testSuite->addTest(caller7); testSuite->addTest(caller7);
// tests 8-9 // tests 8-9
ADD_TEST(testSuite, LockTargetWithTimeoutTester, ADD_TEST4(BMessenger, testSuite, LockTargetWithTimeoutTester,
LockTargetWithTimeoutTest8); LockTargetWithTimeoutTest8);
ADD_TEST(testSuite, LockTargetWithTimeoutTester, ADD_TEST4(BMessenger, testSuite, LockTargetWithTimeoutTester,
LockTargetWithTimeoutTest9); LockTargetWithTimeoutTest9);
return testSuite; return testSuite;
} }
@@ -160,10 +160,11 @@ Test* MessengerAssignmentTester::Suite()
TestSuite* testSuite = new TestSuite; TestSuite* testSuite = new TestSuite;
ADD_TEST(testSuite, MessengerAssignmentTester, AssignmentTest1); ADD_TEST4(BMessenger, testSuite, MessengerAssignmentTester, AssignmentTest1);
ADD_TEST(testSuite, MessengerAssignmentTester, AssignmentTest2); ADD_TEST4(BMessenger, testSuite, MessengerAssignmentTester, AssignmentTest2);
ADD_TEST(testSuite, MessengerAssignmentTester, AssignmentTest3); ADD_TEST4(BMessenger, testSuite, MessengerAssignmentTester, AssignmentTest3);
return testSuite; return testSuite;
} }
@@ -307,11 +307,12 @@ Test* MessengerComparissonTester::Suite()
TestSuite* testSuite = new TestSuite; TestSuite* testSuite = new TestSuite;
ADD_TEST(testSuite, MessengerComparissonTester, ComparissonTest1); ADD_TEST4(BMessenger, testSuite, MessengerComparissonTester, ComparissonTest1);
ADD_TEST(testSuite, MessengerComparissonTester, ComparissonTest2); ADD_TEST4(BMessenger, testSuite, MessengerComparissonTester, ComparissonTest2);
ADD_TEST(testSuite, MessengerComparissonTester, ComparissonTest3); ADD_TEST4(BMessenger, testSuite, MessengerComparissonTester, ComparissonTest3);
ADD_TEST(testSuite, MessengerComparissonTester, LessTest1); ADD_TEST4(BMessenger, testSuite, MessengerComparissonTester, LessTest1);
return testSuite; return testSuite;
} }
@@ -21,3 +21,4 @@ CppUnit::Test* MessengerTestSuite()
return testSuite; return testSuite;
} }
@@ -149,3 +149,4 @@ SMInvoker5::Invoke(BMessenger &target, BHandler *replyHandler,
return result; return result;
} }
@@ -151,3 +151,4 @@ SMHandler::MessageReceived(BMessage *message)
} }
} }
@@ -105,3 +105,4 @@ DBG(OUT("REMOTE: main() done\n"));
return 0; return 0;
} }
@@ -56,3 +56,4 @@ SMReplyTarget::ReplySuccess()
return fLooper->ReplySuccess(); return fLooper->ReplySuccess();
} }
@@ -215,3 +215,4 @@ RemoteSMTarget::_GetReply(int32 expectedCode, void *buffer, size_t size)
// ID // ID
int32 RemoteSMTarget::fID = 0; int32 RemoteSMTarget::fID = 0;
@@ -403,8 +403,9 @@ Test* SendMessageTester::Suite()
TestSuite* testSuite = new TestSuite; TestSuite* testSuite = new TestSuite;
ADD_TEST(testSuite, SendMessageTester, SendMessageTest1); ADD_TEST4(BMessenger, testSuite, SendMessageTester, SendMessageTest1);
return testSuite; return testSuite;
} }
+11 -10
View File
@@ -182,18 +182,19 @@ Test* TargetTester::Suite()
{ {
TestSuite* SuiteOfTests = new TestSuite; TestSuite* SuiteOfTests = new TestSuite;
ADD_TEST(SuiteOfTests, TargetTester, IsTargetLocalTest1); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, IsTargetLocalTest1);
ADD_TEST(SuiteOfTests, TargetTester, IsTargetLocalTest2); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, IsTargetLocalTest2);
ADD_TEST(SuiteOfTests, TargetTester, IsTargetLocalTest3); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, IsTargetLocalTest3);
ADD_TEST(SuiteOfTests, TargetTester, IsTargetLocalTest4); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, IsTargetLocalTest4);
ADD_TEST(SuiteOfTests, TargetTester, IsTargetLocalTest5); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, IsTargetLocalTest5);
ADD_TEST(SuiteOfTests, TargetTester, TargetTest1); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, TargetTest1);
ADD_TEST(SuiteOfTests, TargetTester, TargetTest2); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, TargetTest2);
ADD_TEST(SuiteOfTests, TargetTester, TargetTest3); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, TargetTest3);
ADD_TEST(SuiteOfTests, TargetTester, TargetTest4); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, TargetTest4);
ADD_TEST(SuiteOfTests, TargetTester, TargetTest5); ADD_TEST4(BMessenger, SuiteOfTests, TargetTester, TargetTest5);
return SuiteOfTests; return SuiteOfTests;
} }
+4
View File
@@ -31,6 +31,10 @@
(suitename)->addTest(new TestCaller<classname>((#funcname), \ (suitename)->addTest(new TestCaller<classname>((#funcname), \
&classname::funcname)); &classname::funcname));
#define ADD_TEST4(classbeingtested, suitename, classname, funcname) \
(suitename)->addTest(new TestCaller<classname>((#classbeingtested "::" #funcname), \
&classname::funcname));
#define CHECK_ERRNO \ #define CHECK_ERRNO \
cout << endl << "errno == \"" << strerror(errno) << "\" (" << errno \ cout << endl << "errno == \"" << strerror(errno) << "\" (" << errno \
<< ") in " << __PRETTY_FUNCTION__ << endl << ") in " << __PRETTY_FUNCTION__ << endl
@@ -438,6 +438,10 @@ CppUnit::Test* TInstantiateObjectTester::Suite()
{ {
CppUnit::TestSuite* SuiteOfTests = new CppUnit::TestSuite; CppUnit::TestSuite* SuiteOfTests = new CppUnit::TestSuite;
// SuiteOfTests->addTest(
// new CppUnit::TestCaller<TInstantiateObjectTester>("BArchivable::instantiate_object() Test",
// &TInstantiateObjectTester::RunTests));
ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case1); ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case1);
ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case2); ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case2);
ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case3); ADD_TEST(SuiteOfTests, TInstantiateObjectTester, Case3);
@@ -544,6 +548,38 @@ void FormatAndThrow(int line, const char *file, const char *msg, int err)
} }
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
void
TInstantiateObjectTester::RunTests() {
NextSubTest();
Case1();
NextSubTest();
Case2();
NextSubTest();
Case3();
NextSubTest();
Case4();
NextSubTest();
Case5();
NextSubTest();
Case6();
NextSubTest();
Case7();
NextSubTest();
Case8();
NextSubTest();
Case9();
NextSubTest();
Case10();
NextSubTest();
Case11();
NextSubTest();
Case12();
NextSubTest();
Case13();
NextSubTest();
Case14();
}
/* /*
* $Log $ * $Log $
* *
@@ -39,6 +39,8 @@ class TInstantiateObjectTester : public BTestCase
void Case12(); void Case12();
void Case13(); void Case13();
void Case14(); void Case14();
void RunTests();
static CppUnit::Test* Suite(); static CppUnit::Test* Suite();