1//------------------------------------------------------------------------------
2//	BArchivableTester.cpp
3//
4/**
5	BArchivable tests
6	@note	InvalidArchiveShallow() and InvalidArchiveDeep() are not tested
7			against the original implementation as it does not handle NULL
8			parameters gracefully.
9 */
10//------------------------------------------------------------------------------
11
12// Standard Includes -----------------------------------------------------------
13
14// System Includes -------------------------------------------------------------
15#include <Message.h>
16
17// Project Includes ------------------------------------------------------------
18
19// Local Includes --------------------------------------------------------------
20#include "BArchivableTester.h"
21
22// Local Defines ---------------------------------------------------------------
23
24// Globals ---------------------------------------------------------------------
25
26//------------------------------------------------------------------------------
27/**
28	BArchivable::Perform(perform_code d, void* arg)
29	@case		Any
30	@param d	Not used
31	@param arg	Not used
32	@results	Returns B_ERROR in all cases.
33 */
34void TBArchivableTestCase::TestPerform()
35{
36	BArchivable Archive;
37	CPPUNIT_ASSERT(Archive.Perform(0, NULL) == B_ERROR);
38}
39//------------------------------------------------------------------------------
40/**
41	BArchivable::Archive(BMessage* into, bool deep)
42	@case		Invalid archive, shallow archiving
43	@param into	NULL
44	@param deep	false
45	@results	Returns B_BAD_VALUE.
46 */
47void TBArchivableTestCase::InvalidArchiveShallow()
48{
49	BArchivable Archive;
50	CPPUNIT_ASSERT(Archive.Archive(NULL, false) == B_BAD_VALUE);
51}
52//------------------------------------------------------------------------------
53/**
54	BArchivable::Archive(BMessage* into, bool deep)
55	@case		Valid archive, shallow archiving
56	@param into	Valid BMessage pointer
57	@param deep false
58	@results	Returns B_OK.
59				Resultant archive has a string field labeled "class".
60				Field "class" contains the string "BArchivable".
61 */
62#include <stdio.h>
63#include <Debug.h>
64void TBArchivableTestCase::ValidArchiveShallow()
65{
66	BMessage Storage;
67	BArchivable Archive;
68	CPPUNIT_ASSERT(Archive.Archive(&Storage, false) == B_OK);
69	const char* name;
70	CPPUNIT_ASSERT(Storage.FindString("class", &name) == B_OK);
71	printf("\n%s\n", name);
72	CPPUNIT_ASSERT(strcmp(name, "BArchivable") == 0);
73}
74//------------------------------------------------------------------------------
75/**
76	BArchivable::Archive(BMessage* into, bool deep)
77	@case		Invalid archive, deep archiving
78	@param into	NULL
79	@param deep true
80	@results	Returns B_BAD_VALUE
81 */
82void TBArchivableTestCase::InvalidArchiveDeep()
83{
84	BArchivable Archive;
85	CPPUNIT_ASSERT(Archive.Archive(NULL, true) == B_BAD_VALUE);
86}
87//------------------------------------------------------------------------------
88/**
89	BArchivable::Archive(BMessage* into, bool deep)
90	@case		Valid archive, deep archiving
91	@param into	Valid BMessage pointer
92	@param deep true
93	@results	Returns B_OK.
94				Resultant archive has a string field labeled "class".
95				Field "class" contains the string "BArchivable".
96 */
97void TBArchivableTestCase::ValidArchiveDeep()
98{
99	BMessage Storage;
100	BArchivable Archive;
101	CPPUNIT_ASSERT(Archive.Archive(&Storage, true) == B_OK);
102	const char* name;
103	CPPUNIT_ASSERT(Storage.FindString("class", &name) == B_OK);
104	CPPUNIT_ASSERT(strcmp(name, "BArchivable") == 0);
105}
106//------------------------------------------------------------------------------
107CppUnit::Test* TBArchivableTestCase::Suite()
108{
109	CppUnit::TestSuite* SuiteOfTests = new CppUnit::TestSuite;
110	ADD_TEST(SuiteOfTests, TBArchivableTestCase, TestPerform);
111#if !defined(TEST_R5)
112	ADD_TEST(SuiteOfTests, TBArchivableTestCase, InvalidArchiveShallow);
113#endif
114	ADD_TEST(SuiteOfTests, TBArchivableTestCase, ValidArchiveShallow);
115#if !defined(TEST_R5)
116	ADD_TEST(SuiteOfTests, TBArchivableTestCase, InvalidArchiveDeep);
117#endif
118	ADD_TEST(SuiteOfTests, TBArchivableTestCase, ValidArchiveDeep);
119
120	return SuiteOfTests;
121}
122//------------------------------------------------------------------------------
123
124
125/*
126 * $Log $
127 *
128 * $Id  $
129 *
130 */
131
132
133
134