1//------------------------------------------------------------------------------
2//	CountTester.cpp
3//
4//------------------------------------------------------------------------------
5
6// Standard Includes -----------------------------------------------------------
7
8// System Includes -------------------------------------------------------------
9#include <Application.h>
10#include <Clipboard.h>
11
12#define CHK	CPPUNIT_ASSERT
13
14// Project Includes ------------------------------------------------------------
15
16// Local Includes --------------------------------------------------------------
17#include "CountTester.h"
18
19// Local Defines ---------------------------------------------------------------
20
21// Globals ---------------------------------------------------------------------
22
23//------------------------------------------------------------------------------
24
25/*
26	LocalCount()
27	@case 1
28	@results		count == 0
29 */
30void CountTester::LocalCount1()
31{
32	BApplication app("application/x-vnd.clipboardtest");
33	BClipboard clip("LocalCount1");
34
35	CHK(clip.LocalCount() == 0);
36}
37
38/*
39	LocalCount()
40	@case 2
41	@results		count == +1
42 */
43void CountTester::LocalCount2()
44{
45	BApplication app("application/x-vnd.clipboardtest");
46	BClipboard clip("LocalCount2");
47	BMessage *data;
48
49	uint32 oldCount = clip.SystemCount();
50
51	if (clip.Lock()) {
52		clip.Clear();
53		if ((data = clip.Data())) {
54			data->AddData("text/plain", B_MIME_TYPE, "LocalCount2", 12);
55			clip.Commit();
56		}
57		clip.Unlock();
58	}
59
60	CHK(clip.LocalCount() == oldCount + 1);
61}
62
63/*
64	LocalCount()
65	@case 3
66	@results		both counts == +1
67 */
68void CountTester::LocalCount3()
69{
70	BApplication app("application/x-vnd.clipboardtest");
71	BClipboard clipA("LocalCount3");
72	BClipboard clipB("LocalCount3");
73	BMessage *data;
74
75	uint32 oldCount = clipA.SystemCount();
76
77	CHK(clipB.Lock());
78	clipB.Clear();
79	if ((data = clipB.Data())) {
80		data->AddData("text/plain", B_MIME_TYPE, "LocalCount3", 12);
81		clipB.Commit();
82	}
83	clipB.Unlock();
84
85	CHK(clipA.Lock());
86	clipA.Unlock();
87
88	CHK(clipA.LocalCount() == oldCount + 1);
89	CHK(clipB.LocalCount() == oldCount + 1);
90}
91
92/*
93	LocalCount()
94	@case 4
95	@results	clipA.LocalCount() == +1
96				clipB.LocalCount() == +2
97 */
98void CountTester::LocalCount4()
99{
100	BApplication app("application/x-vnd.clipboardtest");
101	BClipboard clipA("LocalCount4");
102	BClipboard clipB("LocalCount4");
103	BMessage *data;
104
105	uint32 oldCount = clipA.SystemCount();
106
107	if (clipB.Lock()) {
108		clipB.Clear();
109		if ((data = clipB.Data())) {
110			data->AddData("text/plain", B_MIME_TYPE, "LocalCount4", 12);
111			clipB.Commit();
112		}
113		clipB.Unlock();
114	}
115
116	if (clipA.Lock())
117		clipA.Unlock();
118
119	if (clipB.Lock()) {
120		clipB.Clear();
121		if ((data = clipB.Data())) {
122			data->AddData("text/plain",B_MIME_TYPE,"LocalCount4",12);
123			clipB.Commit();
124		}
125		clipB.Unlock();
126	}
127
128	CHK(clipA.LocalCount() == oldCount + 1);
129	CHK(clipB.LocalCount() == oldCount + 2);
130}
131
132/*
133	LocalCount()
134	@case 5
135	@results	clipA.LocalCount() == 1
136				clipB.LocalCount() == 2
137 */
138void CountTester::LocalCount5()
139{
140	BApplication app("application/x-vnd.clipboardtest");
141	BClipboard clipA("LocalCount5");
142	BClipboard clipB("LocalCount5");
143	BMessage *data;
144
145	uint32 oldCount = clipA.SystemCount();
146
147	if (clipA.Lock()) {
148		clipA.Clear();
149		if ((data = clipA.Data())) {
150			data->AddData("text/plain", B_MIME_TYPE, "LocalCount5", 12);
151			clipA.Commit();
152		}
153		clipA.Unlock();
154	}
155
156	if (clipB.Lock()) {
157		clipB.Clear();
158		if ((data = clipB.Data())) {
159			data->AddData("text/plain", B_MIME_TYPE, "LocalCount5", 12);
160			clipB.Commit();
161		}
162		clipB.Unlock();
163	}
164
165	CHK(clipA.LocalCount() == oldCount + 1);
166	CHK(clipB.LocalCount() == oldCount + 2);
167}
168
169/*
170	LocalCount()
171	@case 6
172	@results	clipA.LocalCount() == +1
173				clipB.LocalCount() == 0
174 */
175void CountTester::LocalCount6()
176{
177	BApplication app("application/x-vnd.clipboardtest");
178	BClipboard clipA("LocalCount6A");
179	BClipboard clipB("LocalCount6B");
180	BMessage *data;
181
182	uint32 oldCount = clipA.SystemCount();
183
184	if (clipA.Lock()) {
185		clipA.Clear();
186		if ((data = clipA.Data())) {
187			data->AddData("text/plain", B_MIME_TYPE, "LocalCount6" ,12);
188			clipA.Commit();
189		}
190		clipA.Unlock();
191	}
192
193	if (clipB.Lock())
194		clipB.Unlock();
195
196	CHK(clipA.LocalCount() == oldCount + 1);
197	CHK(clipB.LocalCount() == 0);
198}
199
200/*
201	SystemCount()
202	@case 1
203	@results		count == 0
204 */
205void CountTester::SystemCount1()
206{
207	BApplication app("application/x-vnd.clipboardtest");
208	BClipboard clip("SystemCount1");
209
210	CHK(clip.SystemCount() == 0);
211}
212
213/*
214	SystemCount()
215	@case 2
216	@results	clipA.SystemCount() == +1
217				clipB.SystemCount() == +1
218 */
219void CountTester::SystemCount2()
220{
221	BApplication app("application/x-vnd.clipboardtest");
222	BClipboard clipA("SystemCount2");
223	BClipboard clipB("SystemCount2");
224	BMessage *data;
225
226	uint32 oldCount = clipA.SystemCount();
227
228	if (clipA.Lock()) {
229		clipA.Clear();
230		if ((data = clipA.Data())) {
231			data->AddData("text/plain", B_MIME_TYPE, "SystemCount2", 12);
232			clipA.Commit();
233		}
234		clipA.Unlock();
235	}
236
237	CHK(clipA.SystemCount() == oldCount + 1);
238	CHK(clipB.SystemCount() == oldCount + 1);
239}
240
241/*
242	SystemCount()
243	@case 3
244	@results	clipA.SystemCount() == +1
245				clipB.SystemCount() == 0
246 */
247void CountTester::SystemCount3()
248{
249	BApplication app("application/x-vnd.clipboardtest");
250	BClipboard clipA("SystemCount3A");
251	BClipboard clipB("SystemCount3B");
252	BMessage *data;
253
254	uint32 oldCount = clipA.SystemCount();
255
256	if (clipA.Lock()) {
257		clipA.Clear();
258		if ((data = clipA.Data())) {
259			data->AddData("text/plain", B_MIME_TYPE, "SystemCount3", 12);
260			clipA.Commit();
261		}
262		clipA.Unlock();
263	}
264
265	CHK(clipA.SystemCount() == oldCount + 1);
266	CHK(clipB.SystemCount() == 0);
267}
268
269Test* CountTester::Suite()
270{
271	TestSuite* SuiteOfTests = new TestSuite;
272
273	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount1);
274	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount2);
275	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount3);
276	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount4);
277	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount5);
278	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, LocalCount6);
279	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount1);
280	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount2);
281	ADD_TEST4(BClipboard, SuiteOfTests, CountTester, SystemCount3);
282
283	return SuiteOfTests;
284}
285