From e439adc551049dce21e24e7a7039cebe295e989b Mon Sep 17 00:00:00 2001 From: Ingo Weinhold Date: Mon, 14 Oct 2002 21:03:40 +0000 Subject: [PATCH] Added NULL parameter tests for BMessageRunner::GetInfo(). git-svn-id: file:///srv/svn/repos/haiku/trunk/current@1510 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/tests/kits/app/Jamfile | 1 + .../app/bmessagerunner/BMessageRunnerCases | 10 ++ .../kits/app/bmessagerunner/GetInfoTester.cpp | 101 ++++++++++++++++++ .../kits/app/bmessagerunner/GetInfoTester.h | 34 ++++++ .../app/bmessagerunner/MessageRunnerTest.cpp | 2 + 5 files changed, 148 insertions(+) create mode 100644 src/tests/kits/app/bmessagerunner/GetInfoTester.cpp create mode 100644 src/tests/kits/app/bmessagerunner/GetInfoTester.h diff --git a/src/tests/kits/app/Jamfile b/src/tests/kits/app/Jamfile index dd8a720f04..649cde1c57 100644 --- a/src/tests/kits/app/Jamfile +++ b/src/tests/kits/app/Jamfile @@ -67,6 +67,7 @@ CommonTestLib libapptest.so # BMessageRunner MessageRunnerTest.cpp BMessageRunnerTester.cpp + GetInfoTester.cpp MessageRunnerTestHelpers.cpp SetCountTester.cpp SetIntervalTester.cpp diff --git a/src/tests/kits/app/bmessagerunner/BMessageRunnerCases b/src/tests/kits/app/bmessagerunner/BMessageRunnerCases index a084c4cd2f..eb3da1312c 100644 --- a/src/tests/kits/app/bmessagerunner/BMessageRunnerCases +++ b/src/tests/kits/app/bmessagerunner/BMessageRunnerCases @@ -140,3 +140,13 @@ case 7: object is properly initialized and has still some messages to deliver, InitCheck() should return B_OK. GetInfo() should return B_OK and the new count. The timer is NOT reset. Unlimited number of messages. + +status_t GetInfo(bigtime_t *interval, int32 *count) const +case 1: object is properly initialized, interval or count are NULL => + Should return B_OK. + InitCheck() should return B_OK. +case 2: object is not properly initialized, interval or count are NULL => + Should return B_BAD_VALUE. + InitCheck() should return B_ERROR. +Other cases are side effects of other methods' tests. + diff --git a/src/tests/kits/app/bmessagerunner/GetInfoTester.cpp b/src/tests/kits/app/bmessagerunner/GetInfoTester.cpp new file mode 100644 index 0000000000..ebdcdd0cbb --- /dev/null +++ b/src/tests/kits/app/bmessagerunner/GetInfoTester.cpp @@ -0,0 +1,101 @@ +//------------------------------------------------------------------------------ +// GetInfoTester.cpp +// +//------------------------------------------------------------------------------ + +// Standard Includes ----------------------------------------------------------- +#include + +// System Includes ------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include + +// Project Includes ------------------------------------------------------------ +#include +#include +#include + +// Local Includes -------------------------------------------------------------- +#include "MessageRunnerTestHelpers.h" +#include "GetInfoTester.h" + +// Local Defines --------------------------------------------------------------- + +// Globals --------------------------------------------------------------------- + +//------------------------------------------------------------------------------ + +static const char *kTesterSignature + = "application/x-vnd.obos-messagerunner-getinfo-test"; + +static const bigtime_t kMinTimeInterval = 50000; + +/* + status_t GetInfo(bigtime_t *interval, int32 *count) const + @case 1 object is properly initialized, interval or count are NULL + @results Should return B_OK. + InitCheck() should return B_OK. + */ +void GetInfoTester::GetInfo1() +{ +// R5: crashes when passing a NULL parameter. +#ifndef TEST_R5 + MessageRunnerTestApp app(kTesterSignature); + BMessenger target; + BMessage message(MSG_RUNNER_MESSAGE); + bigtime_t interval = 100000; + int32 count = 5; + BMessageRunner runner(target, &message, interval, count); + CHK(runner.InitCheck() == B_OK); + bigtime_t readInterval = 0; + int32 readCount = 0; + CHK(runner.GetInfo(&readInterval, NULL) == B_OK); + CHK(readInterval == interval); + CHK(runner.GetInfo(NULL, &readCount) == B_OK); + CHK(readCount == count); + CHK(runner.GetInfo(NULL, NULL) == B_OK); +#endif +} + +/* + status_t GetInfo(bigtime_t *interval, int32 *count) const + @case 2 object is not properly initialized, interval or count are + NULL + @results Should return B_BAD_VALUE. + InitCheck() should return B_ERROR. + */ +void GetInfoTester::GetInfo2() +{ +// R5: crashes when passing a NULL parameter. +#ifndef TEST_R5 + MessageRunnerTestApp app(kTesterSignature); + BMessenger target; + BMessage message(MSG_RUNNER_MESSAGE); + bigtime_t interval = 100000; + int32 count = 0; + BMessageRunner runner(target, &message, interval, count); + CHK(runner.InitCheck() == B_ERROR); + bigtime_t readInterval = 0; + int32 readCount = 0; + CHK(runner.GetInfo(&readInterval, NULL) == B_BAD_VALUE); + CHK(runner.GetInfo(NULL, &readCount) == B_BAD_VALUE); + CHK(runner.GetInfo(NULL, NULL) == B_BAD_VALUE); +#endif +} + + +Test* GetInfoTester::Suite() +{ + TestSuite* SuiteOfTests = new TestSuite; + + ADD_TEST4(BMessageRunner, SuiteOfTests, GetInfoTester, GetInfo1); + ADD_TEST4(BMessageRunner, SuiteOfTests, GetInfoTester, GetInfo2); + + return SuiteOfTests; +} + diff --git a/src/tests/kits/app/bmessagerunner/GetInfoTester.h b/src/tests/kits/app/bmessagerunner/GetInfoTester.h new file mode 100644 index 0000000000..7671b670ff --- /dev/null +++ b/src/tests/kits/app/bmessagerunner/GetInfoTester.h @@ -0,0 +1,34 @@ +//------------------------------------------------------------------------------ +// GetInfoTester.h +// +//------------------------------------------------------------------------------ + +#ifndef GET_INFO_TESTER_H +#define GET_INFO_TESTER_H + +// Standard Includes ----------------------------------------------------------- + +// System Includes ------------------------------------------------------------- + +// Project Includes ------------------------------------------------------------ + +// Local Includes -------------------------------------------------------------- +#include "../common.h" + +// Local Defines --------------------------------------------------------------- + +// Globals --------------------------------------------------------------------- + +class GetInfoTester : public TestCase +{ + public: + GetInfoTester() {;} + GetInfoTester(std::string name) : TestCase(name) {;} + + void GetInfo1(); + void GetInfo2(); + + static Test* Suite(); +}; + +#endif // GET_INFO_TESTER_H diff --git a/src/tests/kits/app/bmessagerunner/MessageRunnerTest.cpp b/src/tests/kits/app/bmessagerunner/MessageRunnerTest.cpp index af7679186c..6ccc1dbe34 100644 --- a/src/tests/kits/app/bmessagerunner/MessageRunnerTest.cpp +++ b/src/tests/kits/app/bmessagerunner/MessageRunnerTest.cpp @@ -1,5 +1,6 @@ #include "../common.h" #include "BMessageRunnerTester.h" +#include "GetInfoTester.h" #include "SetCountTester.h" #include "SetIntervalTester.h" @@ -7,6 +8,7 @@ CppUnit::Test* MessageRunnerTestSuite() { CppUnit::TestSuite *testSuite = new CppUnit::TestSuite(); + testSuite->addTest(GetInfoTester::Suite()); testSuite->addTest(SetCountTester::Suite()); testSuite->addTest(SetIntervalTester::Suite()); testSuite->addTest(TBMessageRunnerTester::Suite());