1//-----------------------------------------------------------------------------
2//	BCursorTester.cpp
3//
4//-----------------------------------------------------------------------------
5
6// Standard Includes ----------------------------------------------------------
7
8// System Includes ------------------------------------------------------------
9#include <Application.h>
10#include <Cursor.h>
11#include <Message.h>
12
13#define CHK	CPPUNIT_ASSERT
14
15// Project Includes -----------------------------------------------------------
16
17// Local Includes -------------------------------------------------------------
18#include "BCursorTester.h"
19
20// Local Defines --------------------------------------------------------------
21
22// Globals --------------------------------------------------------------------
23
24//-----------------------------------------------------------------------------
25
26/*
27	BCursor(const void *cursorData)
28	@case 1
29	@results		nothing apparent (no segfault)
30 */
31void BCursorTester::BCursor1()
32{
33  BApplication app("application/x-vnd.cursortest");
34  BCursor cur((void *)NULL);
35}
36
37/*
38	BCursor(const void *cursorData)
39	@case 2
40	@results		nothing apparent
41 */
42void BCursorTester::BCursor2()
43{
44  BApplication app("application/x-vnd.cursortest");
45  char data[68];
46  int i;
47
48  data[0] = 16;
49  data[1] = 1;
50  data[2] = 0;
51  data[3] = 0;
52  for (i=4; i<68; i++)
53    data[i] = 1;
54
55  BCursor cur(data);
56}
57
58/*
59	BCursor(const void *cursorData)
60	@case 3
61	@results		nothing apparent (no segfaults)
62 */
63void BCursorTester::BCursor3()
64{
65  BApplication app("application/x-vnd.cursortest");
66  int x;
67  BCursor cur1(&x);
68  char data[68];
69  data[0] = 32;
70  BCursor cur2(data);
71  data[0] = 16;
72  data[1] = 8;
73  BCursor cur3(data);
74  data[1] = 1;
75  data[2] = 16;
76  data[3] = 16;
77  BCursor cur4(data);
78}
79
80/*
81	BCursor(BMessage *archive)
82	@case 1
83	@results		nothing apparent (no segfault)
84 */
85void BCursorTester::BCursor4()
86{
87  BApplication app("application/x-vnd.cursortest");
88  BCursor cur((BMessage *)NULL);
89}
90
91/*
92	BCursor(BMessage *archive)
93	@case 2
94	@results		nothing apparent (empty cursor)
95 */
96void BCursorTester::BCursor5()
97{
98  BApplication app("application/x-vnd.cursortest");
99  /* The message really should contain a valid archive, but Cursor doesn't
100     support archiving anyway, so until R2, this is a moot point.
101  */
102  BMessage msg;
103  BCursor cur(&msg);
104}
105
106/*
107	static BArchivable *Instantiate(BMessage *archive)
108	@case 1
109	@results		return NULL
110 */
111void BCursorTester::Instantiate1()
112{
113  BApplication app("application/x-vnd.cursortest");
114  CHK(BCursor::Instantiate(NULL) == NULL);
115}
116
117/*
118	static BArchivable *Instantiate(BMessage *archive)
119	@case 2
120	@results		return NULL
121 */
122void BCursorTester::Instantiate2()
123{
124  BApplication app("application/x-vnd.cursortest");
125  /* The message really should contain a valid archive, but Cursor doesn't
126     support archiving anyway, so until R2, this is a moot point.
127  */
128  BMessage msg;
129  CHK(BCursor::Instantiate(&msg) == NULL);
130}
131
132/*
133	status_t Archive(BMessage* into, bool deep = true)
134	@case 1
135	@results		return B_OK
136 */
137void BCursorTester::Archive1()
138{
139  BApplication app("application/x-vnd.cursortest");
140  char data[68];
141  int i;
142
143  data[0] = 16;
144  data[1] = 1;
145  data[2] = 0;
146  data[3] = 0;
147  for (i=4; i<68; i++)
148    data[i] = 1;
149
150  BCursor cur(data);
151  CHK(cur.Archive(NULL) == B_OK);
152}
153
154/*
155	status_t Archive(BMessage* into, bool deep = true)
156	@case 2
157	@results		return B_OK
158 */
159void BCursorTester::Archive2()
160{
161  BApplication app("application/x-vnd.cursortest");
162  char data[68];
163  int i;
164
165  data[0] = 16;
166  data[1] = 1;
167  data[2] = 0;
168  data[3] = 0;
169  for (i=4; i<68; i++)
170    data[i] = 1;
171
172  BCursor cur(data);
173  BMessage msg;
174  CHK(cur.Archive(&msg) == B_OK);
175}
176
177
178Test* BCursorTester::Suite()
179{
180	TestSuite* SuiteOfTests = new TestSuite;
181
182	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, BCursor1);
183	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, BCursor2);
184	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, BCursor3);
185	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, BCursor4);
186	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, BCursor5);
187	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Instantiate1);
188	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Instantiate2);
189	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Archive1);
190	ADD_TEST4(BCursor, SuiteOfTests, BCursorTester, Archive2);
191
192	return SuiteOfTests;
193}
194
195