1 /**
2 * Filename : TestLineSegment.cpp
3 * Description : Unit tests for LineSegment
4 * Organization: European Media Laboratories Research gGmbH
5 * Created : 2005-05-03
6 *
7 * <!--------------------------------------------------------------------------
8 * This file is part of libSBML. Please visit http://sbml.org for more
9 * information about SBML, and the latest version of libSBML.
10 *
11 * Copyright (C) 2020 jointly by the following organizations:
12 * 1. California Institute of Technology, Pasadena, CA, USA
13 * 2. University of Heidelberg, Heidelberg, Germany
14 * 3. University College London, London, UK
15 *
16 * Copyright (C) 2019 jointly by the following organizations:
17 * 1. California Institute of Technology, Pasadena, CA, USA
18 * 2. University of Heidelberg, Heidelberg, Germany
19 *
20 * Copyright (C) 2013-2018 jointly by the following organizations:
21 * 1. California Institute of Technology, Pasadena, CA, USA
22 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
23 * 3. University of Heidelberg, Heidelberg, Germany
24 *
25 * Copyright (C) 2009-2013 jointly by the following organizations:
26 * 1. California Institute of Technology, Pasadena, CA, USA
27 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
28 *
29 * Copyright (C) 2004-2008 by European Media Laboratories Research gGmbH,
30 * Heidelberg, Germany
31 *
32 * This library is free software; you can redistribute it and/or modify it
33 * under the terms of the GNU Lesser General Public License as published by
34 * the Free Software Foundation. A copy of the license agreement is provided
35 * in the file named "LICENSE.txt" included with this software distribution
36 * and also available online as http://sbml.org/software/libsbml/license.html
37 * ------------------------------------------------------------------------ -->
38 */
39
40 #include <sbml/common/common.h>
41 #include <sbml/common/extern.h>
42
43 #include <sbml/SBase.h>
44 #include <sbml/packages/layout/sbml/LineSegment.h>
45 #include <sbml/packages/layout/sbml/Point.h>
46
47 #include <check.h>
48
49 LIBSBML_CPP_NAMESPACE_USE
50
51 BEGIN_C_DECLS
52
53 static LineSegment_t* LS;
54 static LayoutPkgNamespaces* LN;
55
56 void
LineSegmentTest_setup(void)57 LineSegmentTest_setup (void)
58 {
59 LS = LineSegment_create();
60 LN = new LayoutPkgNamespaces();
61
62 if(LS == NULL)
63 {
64 fail("LineSegment_create(); returned a NULL pointer.");
65 }
66 }
67
68 void
LineSegmentTest_teardown(void)69 LineSegmentTest_teardown (void)
70 {
71 LineSegment_free(LS);
72 delete LN;
73 }
74
START_TEST(test_LineSegment_create)75 START_TEST ( test_LineSegment_create )
76 {
77 fail_unless( SBase_getTypeCode ((SBase_t*) LS) == SBML_LAYOUT_LINESEGMENT );
78 fail_unless( SBase_getMetaId ((SBase_t*) LS) == NULL );
79
80 Point_t *pos=LineSegment_getStart(LS);
81 fail_unless(pos != NULL);
82 fail_unless(Point_getXOffset(pos) == 0.0);
83 fail_unless(Point_getYOffset(pos) == 0.0);
84 fail_unless(Point_getZOffset(pos) == 0.0);
85
86 pos=LineSegment_getEnd(LS);
87 fail_unless(pos != NULL);
88 fail_unless(Point_getXOffset(pos) == 0.0);
89 fail_unless(Point_getYOffset(pos) == 0.0);
90 fail_unless(Point_getZOffset(pos) == 0.0);
91
92 }
93 END_TEST
94
95
START_TEST(test_LineSegment_createWithPoints)96 START_TEST ( test_LineSegment_createWithPoints )
97 {
98 Point_t *start=new Point(LN,1.1,-2.2,3.3);
99 Point_t *end =new Point(LN,-4.4,5.5,-6.6);
100
101 LineSegment_t *ls=new LineSegment(LN, start,end);
102
103 fail_unless( SBase_getTypeCode ((SBase_t*) ls) == SBML_LAYOUT_LINESEGMENT );
104 fail_unless( SBase_getMetaId ((SBase_t*) ls) == NULL );
105
106 Point_t *pos=LineSegment_getStart(ls);
107 fail_unless(pos != NULL);
108 fail_unless(Point_getXOffset(pos) == Point_getXOffset(start));
109 fail_unless(Point_getYOffset(pos) == Point_getYOffset(start));
110 fail_unless(Point_getZOffset(pos) == Point_getZOffset(start));
111
112 pos=LineSegment_getEnd(ls);
113 fail_unless(pos != NULL);
114 fail_unless(Point_getXOffset(pos) == Point_getXOffset(end));
115 fail_unless(Point_getYOffset(pos) == Point_getYOffset(end));
116 fail_unless(Point_getZOffset(pos) == Point_getZOffset(end));
117
118 Point_free(start);
119 Point_free(end);
120
121 LineSegment_free(ls);
122
123 }
124 END_TEST
125
START_TEST(test_LineSegment_createWithPoints_NULL)126 START_TEST ( test_LineSegment_createWithPoints_NULL )
127 {
128 LineSegment_t *ls= new LineSegment(LN,NULL,NULL);
129
130 fail_unless( SBase_getTypeCode ((SBase_t*) ls) == SBML_LAYOUT_LINESEGMENT );
131 fail_unless( SBase_getMetaId ((SBase_t*) ls) == NULL );
132
133 Point_t *pos=LineSegment_getStart(ls);
134 fail_unless(pos != NULL);
135 fail_unless(Point_getXOffset(pos) == 0.0);
136 fail_unless(Point_getYOffset(pos) == 0.0);
137 fail_unless(Point_getZOffset(pos) == 0.0);
138
139 pos=LineSegment_getEnd(ls);
140 fail_unless(pos != NULL);
141 fail_unless(Point_getXOffset(pos) == 0.0);
142 fail_unless(Point_getYOffset(pos) == 0.0);
143 fail_unless(Point_getZOffset(pos) == 0.0);
144
145 LineSegment_free(ls);
146 }
147 END_TEST
148
START_TEST(test_LineSegment_createWithCoordinates)149 START_TEST ( test_LineSegment_createWithCoordinates )
150 {
151 LineSegment_t* ls=new LineSegment(LN, 1.1,-2.2,3.3,-4.4,5.5,-6.6);
152
153 fail_unless( SBase_getTypeCode ((SBase_t*) ls) == SBML_LAYOUT_LINESEGMENT );
154 fail_unless( SBase_getMetaId ((SBase_t*) ls) == NULL );
155
156 Point_t *pos=LineSegment_getStart(ls);
157 fail_unless(pos != NULL);
158 fail_unless(pos->getXOffset() == 1.1);
159 fail_unless(pos->getYOffset() == -2.2);
160 fail_unless(pos->getZOffset() == 3.3);
161
162 pos=LineSegment_getEnd(ls);
163 fail_unless(pos != NULL);
164 fail_unless(pos->getXOffset() == -4.4);
165 fail_unless(pos->getYOffset() == 5.5);
166 fail_unless(pos->getZOffset() == -6.6);
167
168 LineSegment_free(ls);
169 }
170 END_TEST
171
START_TEST(test_LineSegment_free_NULL)172 START_TEST (test_LineSegment_free_NULL)
173 {
174 LineSegment_free(NULL);
175 }
176 END_TEST
177
START_TEST(test_LineSegment_setStart)178 START_TEST (test_LineSegment_setStart)
179 {
180 Point_t *pos=new Point(LN,1.1,-2.2,3.3);
181 LineSegment_setStart(LS,pos);
182
183 Point_t* POS=LineSegment_getStart(LS);
184
185 fail_unless(Point_getXOffset(pos) == Point_getXOffset(POS));
186 fail_unless(Point_getYOffset(pos) == Point_getYOffset(POS));
187 fail_unless(Point_getZOffset(pos) == Point_getZOffset(POS));
188 Point_free(pos);
189 }
190 END_TEST
191
START_TEST(test_LineSegment_setEnd)192 START_TEST (test_LineSegment_setEnd )
193 {
194 Point_t *pos=new Point(LN,-4.4,5.5,-6.6);
195 LineSegment_setEnd(LS,pos);
196
197 Point_t* POS=LineSegment_getEnd(LS);
198
199 fail_unless(Point_getXOffset(pos) == Point_getXOffset(POS));
200 fail_unless(Point_getYOffset(pos) == Point_getYOffset(POS));
201 fail_unless(Point_getZOffset(pos) == Point_getZOffset(POS));
202 Point_free(pos);
203 }
204 END_TEST
205
START_TEST(test_LineSegment_createFrom)206 START_TEST ( test_LineSegment_createFrom )
207 {
208 Point* start = new Point(LN,1.1,-2.2,3.3);
209 Point* end=new Point(LN,-4.4,5.5,-6.6);
210 LineSegment_setStart(LS,start);
211 LineSegment_setEnd(LS,end);
212 LineSegment_t* ls=LineSegment_createFrom(LS);
213
214
215 fail_unless( SBase_getTypeCode ((SBase_t*) ls) == SBML_LAYOUT_LINESEGMENT );
216
217 if(SBase_isSetMetaId((SBase_t*)LS)){
218 std::string c1=SBase_getMetaId((SBase_t*)LS);
219 std::string c2=SBase_getMetaId((SBase_t*)ls);
220 fail_unless( c1 == c2 );
221 }
222 // c1=SBase_getNotes((SBase_t*)LS);
223 // c2=SBase_getNotes((SBase_t*)ls);
224 //
225 // if(SBase_isSetNotes((SBase_t*)LS))
226 // {
227 // fail_unless( strncmp(c1 , c2 ,strlen( c1 ) + 1 ) );
228 // }
229 // else
230 // {
231 // fail_unless(!(c1 || c2));
232 // }
233 //
234 // c1=SBase_getAnnotation((SBase_t*)LS);
235 // c2=SBase_getAnnotation((SBase_t*)ls);
236 //
237 // if(SBase_isSetAnnotation((SBase_t*)LS))
238 // {
239 // fail_unless( strncmp(c1 , c2 ,strlen( c1 ) + 1) );
240 // }
241 // else
242 // {
243 // fail_unless(!(c1 || c2));
244 // }
245
246 Point_t *pos=LineSegment_getStart(ls);
247 Point_t *POS=LineSegment_getStart(LS);
248 fail_unless(pos != NULL);
249 fail_unless(Point_getXOffset(pos) == Point_getXOffset(POS));
250 fail_unless(Point_getYOffset(pos) == Point_getYOffset(POS));
251 fail_unless(Point_getZOffset(pos) == Point_getZOffset(POS));
252
253 pos=LineSegment_getEnd(ls);
254 POS=LineSegment_getEnd(LS);
255 fail_unless(pos != NULL);
256 fail_unless(Point_getXOffset(pos) == Point_getXOffset(POS));
257 fail_unless(Point_getYOffset(pos) == Point_getYOffset(POS));
258 fail_unless(Point_getZOffset(pos) == Point_getZOffset(POS));
259
260 Point_free(start);
261 Point_free(end);
262 LineSegment_free(ls);
263 }
264 END_TEST
265
START_TEST(test_LineSegment_setStart_NULL)266 START_TEST (test_LineSegment_setStart_NULL )
267 {
268 LineSegment_setStart(LS,NULL);
269
270 Point_t *pos=LineSegment_getStart(LS);
271 fail_unless(pos != NULL);
272 fail_unless(Point_getXOffset(pos) == 0.0);
273 fail_unless(Point_getYOffset(pos) == 0.0);
274 fail_unless(Point_getZOffset(pos) == 0.0);
275 }
276 END_TEST
277
START_TEST(test_LineSegment_setEnd_NULL)278 START_TEST (test_LineSegment_setEnd_NULL )
279 {
280 LineSegment_setEnd(LS,NULL);
281 Point_t *pos=LineSegment_getEnd(LS);
282 fail_unless(pos != NULL);
283 fail_unless(Point_getXOffset(pos) == 0.0);
284 fail_unless(Point_getYOffset(pos) == 0.0);
285 fail_unless(Point_getZOffset(pos) == 0.0);
286 }
287 END_TEST
288
START_TEST(test_LineSegment_copyConstructor)289 START_TEST ( test_LineSegment_copyConstructor )
290 {
291 LineSegment* ls1=new LineSegment();
292 XMLNode notes;
293 ls1->setNotes(¬es);
294 XMLNode annotation;
295 ls1->setAnnotation(&annotation);
296 LineSegment* ls2=new LineSegment(*ls1);
297 delete ls2;
298 delete ls1;
299 }
300 END_TEST
301
START_TEST(test_LineSegment_assignmentOperator)302 START_TEST ( test_LineSegment_assignmentOperator )
303 {
304 LineSegment* ls1=new LineSegment();
305 XMLNode notes;
306 ls1->setNotes(¬es);
307 XMLNode annotation;
308 ls1->setAnnotation(&annotation);
309 LineSegment ls2=*ls1;
310 delete ls1;
311 }
312 END_TEST
313
314
315 Suite *
create_suite_LineSegment(void)316 create_suite_LineSegment (void)
317 {
318 Suite *suite = suite_create("LineSegment");
319 TCase *tcase = tcase_create("LineSegment");
320
321
322 tcase_add_checked_fixture( tcase,
323 LineSegmentTest_setup,
324 LineSegmentTest_teardown );
325
326 tcase_add_test( tcase, test_LineSegment_create );
327 tcase_add_test( tcase, test_LineSegment_createWithPoints );
328 tcase_add_test( tcase, test_LineSegment_createWithPoints_NULL );
329 tcase_add_test( tcase, test_LineSegment_createWithCoordinates );
330 tcase_add_test( tcase, test_LineSegment_free_NULL );
331 tcase_add_test( tcase, test_LineSegment_setStart );
332 tcase_add_test( tcase, test_LineSegment_setStart_NULL );
333 tcase_add_test( tcase, test_LineSegment_setEnd );
334 tcase_add_test( tcase, test_LineSegment_setEnd_NULL );
335 tcase_add_test( tcase, test_LineSegment_createFrom );
336 tcase_add_test( tcase, test_LineSegment_copyConstructor );
337 tcase_add_test( tcase, test_LineSegment_assignmentOperator );
338
339 suite_add_tcase(suite, tcase);
340
341 return suite;
342 }
343
344
345 END_C_DECLS
346