1//------------------------------------------------------------------------------
2//	GetInfoTester.cpp
3//
4//------------------------------------------------------------------------------
5
6// Standard Includes -----------------------------------------------------------
7#include <stdio.h>
8
9// System Includes -------------------------------------------------------------
10#include <Application.h>
11#include <Handler.h>
12#include <Looper.h>
13#include <Message.h>
14#include <MessageRunner.h>
15#include <Messenger.h>
16#include <OS.h>
17
18// Project Includes ------------------------------------------------------------
19#include <TestShell.h>
20#include <TestUtils.h>
21#include <cppunit/TestAssert.h>
22
23// Local Includes --------------------------------------------------------------
24#include "MessageRunnerTestHelpers.h"
25#include "GetInfoTester.h"
26
27// Local Defines ---------------------------------------------------------------
28
29// Globals ---------------------------------------------------------------------
30
31//------------------------------------------------------------------------------
32
33#ifndef TEST_R5
34static const char *kTesterSignature
35	= "application/x-vnd.obos-messagerunner-getinfo-test";
36#endif
37
38static const bigtime_t kMinTimeInterval = 50000;
39
40/*
41	status_t GetInfo(bigtime_t *interval, int32 *count) const
42	@case 1			object is properly initialized, interval or count are NULL
43	@results		Should return B_OK.
44					InitCheck() should return B_OK.
45 */
46void GetInfoTester::GetInfo1()
47{
48// R5: crashes when passing a NULL parameter.
49#ifndef TEST_R5
50	MessageRunnerTestApp app(kTesterSignature);
51	BMessenger target;
52	BMessage message(MSG_RUNNER_MESSAGE);
53	bigtime_t interval = 100000;
54	int32 count = 5;
55	BMessageRunner runner(target, &message, interval, count);
56	CHK(runner.InitCheck() == B_OK);
57	bigtime_t readInterval = 0;
58	int32 readCount = 0;
59	CHK(runner.GetInfo(&readInterval, NULL) == B_OK);
60	CHK(readInterval == interval);
61	CHK(runner.GetInfo(NULL, &readCount) == B_OK);
62	CHK(readCount == count);
63	CHK(runner.GetInfo(NULL, NULL) == B_OK);
64#endif
65}
66
67/*
68	status_t GetInfo(bigtime_t *interval, int32 *count) const
69	@case 2			object is not properly initialized, interval or count are
70					NULL
71	@results		Should return B_BAD_VALUE.
72					InitCheck() should return B_ERROR.
73 */
74void GetInfoTester::GetInfo2()
75{
76// R5: crashes when passing a NULL parameter.
77#ifndef TEST_R5
78	MessageRunnerTestApp app(kTesterSignature);
79	BMessenger target;
80	BMessage message(MSG_RUNNER_MESSAGE);
81	bigtime_t interval = 100000;
82	int32 count = 0;
83	BMessageRunner runner(target, &message, interval, count);
84	CHK(runner.InitCheck() == B_ERROR);
85	bigtime_t readInterval = 0;
86	int32 readCount = 0;
87	CHK(runner.GetInfo(&readInterval, NULL) == B_BAD_VALUE);
88	CHK(runner.GetInfo(NULL, &readCount) == B_BAD_VALUE);
89	CHK(runner.GetInfo(NULL, NULL) == B_BAD_VALUE);
90#endif
91}
92
93
94Test* GetInfoTester::Suite()
95{
96	TestSuite* SuiteOfTests = new TestSuite;
97
98	ADD_TEST4(BMessageRunner, SuiteOfTests, GetInfoTester, GetInfo1);
99	ADD_TEST4(BMessageRunner, SuiteOfTests, GetInfoTester, GetInfo2);
100
101	return SuiteOfTests;
102}
103
104