File: Fragment_test.C

package info (click to toggle)
ball 1.5.0%2Bgit20180813.37fc53c-3
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 239,848 kB
  • sloc: cpp: 326,149; ansic: 4,208; python: 2,303; yacc: 1,778; lex: 1,099; xml: 958; sh: 322; makefile: 93
file content (174 lines) | stat: -rw-r--r-- 3,988 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//

#include <BALL/CONCEPT/classTest.h>
#include <BALLTestConfig.h>

///////////////////////////
#include <BALL/KERNEL/fragment.h>
#include <BALL/KERNEL/molecule.h>
#include <BALL/CONCEPT/textPersistenceManager.h>
///////////////////////////

START_TEST(Fragment)

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////
using namespace BALL;
using namespace std;

String filename;
NEW_TMP_FILE(filename)

Fragment*	frag;
CHECK(Fragment() throw())
frag = new Fragment;
TEST_NOT_EQUAL(frag, 0);
RESULT

CHECK([EXTRA] isValid)
TEST_EQUAL(frag->isValid(), true)
RESULT

CHECK(~Fragment() throw())
delete frag;
frag = new Fragment;
delete frag;
RESULT

CHECK(Fragment(const String& name) throw())
	Fragment* f1 = new Fragment("hello");
	TEST_NOT_EQUAL(f1, 0)
	if (f1 != 0)
	{
		TEST_EQUAL(f1->getName(), "hello")
		delete f1;
	}
RESULT

CHECK(Fragment(const Fragment& fragment, bool deep = true) throw())
	Fragment* f1 = new Fragment;
	f1->setName("testname");
	Atom a;
	a.setName("a");
	f1->insert(a);
	Fragment* f2 = new Fragment(*f1, true);
	TEST_NOT_EQUAL(f2, 0)
	if (f2 != 0)
	{
		TEST_EQUAL(f2->getName(), "testname")
		TEST_EQUAL(f2->getAtom(0)->getName(), "a")
		delete f2;
	}
	f2 = new Fragment(*f1, false);
	TEST_NOT_EQUAL(f2, 0)
	if (f2 != 0)
	{
		TEST_EQUAL(f2->getName(), "testname")
		delete f2;
	}
	delete f1;
RESULT

CHECK(Fragment& operator = (const Fragment& fragment) throw())
	Fragment f1("name1");
	Atom a;
	f1.insert(a);
	Fragment f2;
	f2 = f1;
	TEST_EQUAL(f2.getName(), "name1");
	TEST_EQUAL(f2.countAtoms(), 1);
RESULT

CHECK(void dump(std::ostream& s = std::cout, Size depth = 0) const throw())
	Fragment f1;
	Fragment f2;
	f1.setName("f1");
	f2.setName("f2");
	f1.append(f2);
	Atom a1;
	a1.setName("A1");
	f2.append(a1);
	std::ofstream outfile(filename.c_str(), std::ios::out);
	f1.dump(outfile);
	outfile.close();
	TEST_FILE_REGEXP(filename.c_str(), BALL_TEST_DATA_PATH(Fragment_test.txt))
RESULT

TextPersistenceManager pm;
using namespace RTTI;
pm.registerClass(getStreamName<Fragment>(), Fragment::createDefault);
pm.registerClass(getStreamName<Atom>(), Atom::createDefault);
NEW_TMP_FILE(filename)
CHECK(void persistentWrite(PersistenceManager& pm, const char* name = 0) const)
	std::ofstream	ofile(filename.c_str(), std::ios::out);
	Fragment* f1 = new Fragment("name1");
	Atom* f2 = new Atom();
	Atom* f3 = new Atom();
	f2->setName("name2");
	f3->setName("name3");
	f1->insert(*f2);
	f1->insert(*f3);
	pm.setOstream(ofile);
	*f1 >> pm;
	ofile.close();
	delete f1;
RESULT

CHECK(void persistentRead(PersistenceManager& pm))
	std::ifstream	ifile(filename.c_str());
	pm.setIstream(ifile);
	PersistentObject*	ptr = pm.readObject();
	TEST_NOT_EQUAL(ptr, 0)
	if (ptr != 0)
	{
        TEST_EQUAL(isKindOf<Fragment>(ptr), true)
		Fragment*	f1 = castTo<Fragment>(*ptr);
		TEST_EQUAL(f1->getName(), "name1")
		TEST_EQUAL(f1->countAtoms(), 2)
		TEST_EQUAL(f1->getAtom(0)->getName(), "name2")
		TEST_EQUAL(f1->getAtom(1)->getName(), "name3")
		delete f1;
	} else {
		throw Exception::NullPointer(__FILE__, __LINE__);
	}
RESULT

CHECK(bool operator == (const Fragment& fragment) const throw())
	Fragment b1;
	Fragment b2;
	TEST_EQUAL(b1 == b2, false)
	b1 = b2;
	TEST_EQUAL(b1 == b1, true)
RESULT

CHECK(bool operator != (const Fragment& fragment) const throw())
	Fragment b1;
	Fragment b2;
	TEST_EQUAL(b1 != b2, true)
	b1 = b2;
	TEST_EQUAL(b1 != b1, false)
RESULT

CHECK(BALL_CREATE_DEEP(Fragment))
	Fragment b1;
	b1.setName("asddd");
	Atom a;
	b1.insert(a);

	Fragment* b2 = (Fragment*)b1.create(false, true);
	TEST_EQUAL(b2->getName(), "")
	TEST_EQUAL(b2->countAtoms(), 0)
	delete b2;

	b2 = (Fragment*)b1.create(true, false);
	TEST_EQUAL(b2->getName(), "asddd")
	TEST_EQUAL(b2->countAtoms(), 1)
	delete b2;
RESULT

/////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////

END_TEST