1 /**
2 * Filename : TestSpeciesReferenceGlyph.cpp
3 * Description : Unit tests for SpeciesReferenceGlyph
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 <string>
41
42 #include <sbml/common/common.h>
43 #include <sbml/common/extern.h>
44
45 #include <sbml/packages/layout/sbml/SpeciesReferenceGlyph.h>
46 #include <sbml/packages/layout/sbml/LineSegment.h>
47 #include <sbml/packages/layout/sbml/CubicBezier.h>
48 #include <sbml/packages/layout/sbml/Curve.h>
49 #include <sbml/packages/layout/sbml/Point.h>
50
51 #include <check.h>
52
53 LIBSBML_CPP_NAMESPACE_USE
54
55 BEGIN_C_DECLS
56
57 static SpeciesReferenceGlyph * SRG;
58 static LayoutPkgNamespaces* LN;
59
60 void
SpeciesReferenceGlyphTest_setup(void)61 SpeciesReferenceGlyphTest_setup (void)
62 {
63 LN = new LayoutPkgNamespaces();
64 SRG = new (std::nothrow) SpeciesReferenceGlyph(LN);
65
66 if (SRG == NULL)
67 {
68 fail("new(std::nothrow) SpeciesReferenceGlyph() returned a NULL pointer.");
69 }
70
71 }
72
73 void
SpeciesReferenceGlyphTest_teardown(void)74 SpeciesReferenceGlyphTest_teardown (void)
75 {
76 delete SRG;
77 delete LN;
78 }
79
START_TEST(test_SpeciesReferenceGlyph_new)80 START_TEST (test_SpeciesReferenceGlyph_new )
81 {
82 fail_unless( SRG->getTypeCode() == SBML_LAYOUT_SPECIESREFERENCEGLYPH );
83 fail_unless( SRG->getMetaId() == "" );
84 // fail_unless( SRG->getNotes() == "" );
85 // fail_unless( SRG->getAnnotation() == "" );
86
87 fail_unless( !SRG->isSetId() );
88 fail_unless( !SRG->isSetSpeciesReferenceId() );
89 fail_unless( !SRG->isSetSpeciesGlyphId() );
90 fail_unless( !SRG->isSetRole() );
91 fail_unless(SRG->getRole() == SPECIES_ROLE_INVALID);
92 fail_unless( SRG->getCurve() != NULL);
93 fail_unless( !SRG->isSetCurve());
94 }
95 END_TEST
96
START_TEST(test_SpeciesReferenceGlyph_new_with_data)97 START_TEST (test_SpeciesReferenceGlyph_new_with_data)
98 {
99 std::string sid="TestSpeciesReferenceGlyph";
100 std::string glyphId="TestSpeciesGlyph";
101 std::string referenceId="TestSpeciesReference";
102 SpeciesReferenceGlyph* srg=new SpeciesReferenceGlyph( LN, sid,
103 glyphId,
104 referenceId,
105 SPECIES_ROLE_SUBSTRATE
106 );
107
108 fail_unless( srg->getTypeCode() == SBML_LAYOUT_SPECIESREFERENCEGLYPH );
109 fail_unless( srg->getMetaId() == "" );
110 // fail_unless( srg->getNotes() == "" );
111 // fail_unless( srg->getAnnotation() == "" );
112
113 fail_unless( srg->isSetId() );
114 fail_unless( srg->getId() == sid);
115 fail_unless( srg->isSetSpeciesReferenceId() );
116 fail_unless( srg->getSpeciesReferenceId() == referenceId);
117 fail_unless( srg->isSetSpeciesGlyphId() );
118 fail_unless( srg->getSpeciesGlyphId() == glyphId);
119 fail_unless( srg->isSetRole());
120 fail_unless( srg->getRole() == SPECIES_ROLE_SUBSTRATE );
121 fail_unless( srg->getCurve() != NULL);
122 fail_unless( !srg->isSetCurve());
123
124 delete srg;
125 }
126 END_TEST
127
START_TEST(test_SpeciesReferenceGlyph_setSpeciesGlyphId)128 START_TEST (test_SpeciesReferenceGlyph_setSpeciesGlyphId)
129 {
130 std::string glyphId="TestSpeciesGlyph";
131 SRG->setSpeciesGlyphId(glyphId);
132 fail_unless(SRG->isSetSpeciesGlyphId());
133 fail_unless(SRG->getSpeciesGlyphId() == glyphId);
134 SRG->setSpeciesGlyphId("");
135 fail_unless(!SRG->isSetSpeciesGlyphId());
136 }
137 END_TEST
138
START_TEST(test_SpeciesReferenceGlyph_setSpeciesReferenceId)139 START_TEST (test_SpeciesReferenceGlyph_setSpeciesReferenceId)
140 {
141 std::string referenceId="TestSpeciesReference";
142 SRG->setSpeciesReferenceId(referenceId);
143 fail_unless(SRG->isSetSpeciesReferenceId());
144 fail_unless(SRG->getSpeciesReferenceId() == referenceId);
145 SRG->setSpeciesReferenceId("");
146 fail_unless(!SRG->isSetSpeciesReferenceId());
147 }
148 END_TEST
149
START_TEST(test_SpeciesReferenceGlyph_setRole)150 START_TEST (test_SpeciesReferenceGlyph_setRole)
151 {
152 SRG->setRole(SPECIES_ROLE_MODIFIER);
153 fail_unless(SRG->isSetRole());
154 fail_unless(SRG->getRole() == SPECIES_ROLE_MODIFIER);
155 }
156 END_TEST
157
START_TEST(test_SpeciesReferenceGlyph_setRole_by_string)158 START_TEST (test_SpeciesReferenceGlyph_setRole_by_string)
159 {
160 SRG->setRole("undefined");
161 fail_unless(SRG->getRole()==SPECIES_ROLE_UNDEFINED);
162 SRG->setRole("substrate");
163 fail_unless(SRG->getRole()==SPECIES_ROLE_SUBSTRATE);
164 SRG->setRole("product");
165 fail_unless(SRG->getRole()==SPECIES_ROLE_PRODUCT);
166 SRG->setRole("sidesubstrate");
167 fail_unless(SRG->getRole()==SPECIES_ROLE_SIDESUBSTRATE);
168 SRG->setRole("sideproduct");
169 fail_unless(SRG->getRole()==SPECIES_ROLE_SIDEPRODUCT);
170 SRG->setRole("modifier");
171 fail_unless(SRG->getRole()==SPECIES_ROLE_MODIFIER);
172 SRG->setRole("activator");
173 fail_unless(SRG->getRole()==SPECIES_ROLE_ACTIVATOR);
174 SRG->setRole("inhibitor");
175 fail_unless(SRG->getRole()==SPECIES_ROLE_INHIBITOR);
176 SRG->setRole("test");
177 fail_unless(SRG->getRole() == SPECIES_ROLE_INVALID);
178 }
179 END_TEST
180
START_TEST(test_SpeciesReferenceGlyph_getRoleString)181 START_TEST ( test_SpeciesReferenceGlyph_getRoleString )
182 {
183 SRG->setRole(SPECIES_ROLE_INVALID);
184 fail_unless(SRG->getRoleString() == "invalid");
185 SRG->setRole(SPECIES_ROLE_UNDEFINED);
186 fail_unless(SRG->getRoleString() == "undefined");
187 SRG->setRole(SPECIES_ROLE_SUBSTRATE);
188 fail_unless(SRG->getRoleString() == "substrate");
189 SRG->setRole(SPECIES_ROLE_PRODUCT);
190 fail_unless(SRG->getRoleString() == "product");
191 SRG->setRole(SPECIES_ROLE_SIDESUBSTRATE);
192 fail_unless(SRG->getRoleString() == "sidesubstrate");
193 SRG->setRole(SPECIES_ROLE_SIDEPRODUCT);
194 fail_unless(SRG->getRoleString() == "sideproduct");
195 SRG->setRole(SPECIES_ROLE_MODIFIER);
196 fail_unless(SRG->getRoleString() == "modifier");
197 SRG->setRole(SPECIES_ROLE_ACTIVATOR);
198 fail_unless(SRG->getRoleString() == "activator");
199 SRG->setRole(SPECIES_ROLE_INHIBITOR);
200 fail_unless(SRG->getRoleString() == "inhibitor");
201 }
202 END_TEST
203
START_TEST(test_SpeciesReferenceGlyph_setCurve)204 START_TEST (test_SpeciesReferenceGlyph_setCurve)
205 {
206 Curve* c=new Curve();
207 LineSegment* ls=new LineSegment();
208 c->addCurveSegment(ls);
209 delete ls;
210 ls=new LineSegment();
211 c->addCurveSegment(ls);
212 delete ls;
213 SRG->setCurve(c);
214 fail_unless(SRG->isSetCurve());
215 fail_unless(SRG->getCurve()->getNumCurveSegments() == 2);
216 delete c;
217 }
218 END_TEST
219
START_TEST(test_SpeciesReferenceGlyph_setCurve_NULL)220 START_TEST (test_SpeciesReferenceGlyph_setCurve_NULL)
221 {
222 SRG->setCurve(NULL);
223 fail_unless(!SRG->isSetCurve());
224 fail_unless(SRG->getCurve() != NULL);
225 }
226 END_TEST
227
START_TEST(test_SpeciesReferenceGlyph_createLineSegment)228 START_TEST (test_SpeciesReferenceGlyph_createLineSegment)
229 {
230 LineSegment* ls=SRG->createLineSegment();
231 fail_unless(SRG->isSetCurve());
232 Point* p=ls->getStart();
233 fail_unless(p->getXOffset() == 0.0);
234 fail_unless(p->getYOffset() == 0.0);
235 fail_unless(p->getZOffset() == 0.0);
236 p=ls->getEnd();
237 fail_unless(p->getXOffset() == 0.0);
238 fail_unless(p->getYOffset() == 0.0);
239 fail_unless(p->getZOffset() == 0.0);
240 }
241 END_TEST
242
START_TEST(test_SpeciesReferenceGlyph_createCubicBezier)243 START_TEST (test_SpeciesReferenceGlyph_createCubicBezier)
244 {
245 CubicBezier* cb=SRG->createCubicBezier();
246 fail_unless(SRG->isSetCurve());
247 Point* p=cb->getStart();
248 fail_unless(p->getXOffset() == 0.0);
249 fail_unless(p->getYOffset() == 0.0);
250 fail_unless(p->getZOffset() == 0.0);
251 p=cb->getBasePoint1();
252 fail_unless(p->getXOffset() == 0.0);
253 fail_unless(p->getYOffset() == 0.0);
254 fail_unless(p->getZOffset() == 0.0);
255 p=cb->getBasePoint2();
256 fail_unless(p->getXOffset() == 0.0);
257 fail_unless(p->getYOffset() == 0.0);
258 fail_unless(p->getZOffset() == 0.0);
259 p=cb->getEnd();
260 fail_unless(p->getXOffset() == 0.0);
261 fail_unless(p->getYOffset() == 0.0);
262 fail_unless(p->getZOffset() == 0.0);
263 }
264 END_TEST
265
START_TEST(test_SpeciesReferenceGlyph_copyConstructor)266 START_TEST ( test_SpeciesReferenceGlyph_copyConstructor )
267 {
268 SpeciesReferenceGlyph* srg1=new SpeciesReferenceGlyph();
269 XMLNode notes;
270 srg1->setNotes(¬es);
271 XMLNode annotation;
272 srg1->setAnnotation(&annotation);
273 srg1->getCurve()->createLineSegment();
274 srg1->getCurve()->createLineSegment();
275 srg1->getCurve()->createCubicBezier();
276 srg1->getCurve()->createLineSegment();
277 srg1->getCurve()->createLineSegment();
278 srg1->getCurve()->createCubicBezier();
279 srg1->getCurve()->createLineSegment();
280 srg1->getCurve()->createLineSegment();
281 srg1->getCurve()->createCubicBezier();
282 SpeciesReferenceGlyph* srg2=new SpeciesReferenceGlyph(*srg1);
283 delete srg2;
284 delete srg1;
285 }
286 END_TEST
287
START_TEST(test_SpeciesReferenceGlyph_assignmentOperator)288 START_TEST ( test_SpeciesReferenceGlyph_assignmentOperator )
289 {
290 SpeciesReferenceGlyph* srg1=new SpeciesReferenceGlyph();
291 XMLNode notes;
292 srg1->setNotes(¬es);
293 XMLNode annotation;
294 srg1->setAnnotation(&annotation);
295 srg1->getCurve()->createLineSegment();
296 srg1->getCurve()->createLineSegment();
297 srg1->getCurve()->createCubicBezier();
298 srg1->getCurve()->createLineSegment();
299 srg1->getCurve()->createLineSegment();
300 srg1->getCurve()->createCubicBezier();
301 srg1->getCurve()->createLineSegment();
302 srg1->getCurve()->createLineSegment();
303 srg1->getCurve()->createCubicBezier();
304 SpeciesReferenceGlyph srg2=*srg1;
305 delete srg1;
306 }
307 END_TEST
308
309
310
START_TEST(test_SpeciesReferenceGlyph_createWith)311 START_TEST ( test_SpeciesReferenceGlyph_createWith )
312 {
313 SpeciesReferenceGlyph* srg1= SpeciesReferenceGlyph_createWith("id", "glyphId", "referenceId", SPECIES_ROLE_PRODUCT);
314 fail_unless(srg1->getId() == "id");
315 fail_unless(srg1->getSpeciesGlyphId() == "glyphId");
316 fail_unless(srg1->getSpeciesReferenceId() == "referenceId");
317 fail_unless(srg1->getRole() == SPECIES_ROLE_PRODUCT);
318 delete srg1;
319
320 LayoutPkgNamespaces layoutns(3, 1, 1, "layout");
321 SpeciesReferenceGlyph srg(&layoutns, "id", "glyphId", "referenceId", SPECIES_ROLE_PRODUCT);
322 fail_unless(srg.getId() == "id");
323 fail_unless(srg.getSpeciesGlyphId() == "glyphId");
324 fail_unless(srg.getSpeciesReferenceId() == "referenceId");
325 fail_unless(srg.getRole() == SPECIES_ROLE_PRODUCT);
326 }
327 END_TEST
328
329
330 Suite *
create_suite_SpeciesReferenceGlyph(void)331 create_suite_SpeciesReferenceGlyph (void)
332 {
333 Suite *suite = suite_create("SpeciesReferenceGlyph");
334 TCase *tcase = tcase_create("SpeciesReferenceGlyph");
335
336 tcase_add_checked_fixture( tcase,
337 SpeciesReferenceGlyphTest_setup,
338 SpeciesReferenceGlyphTest_teardown );
339
340 tcase_add_test( tcase, test_SpeciesReferenceGlyph_new );
341 tcase_add_test( tcase, test_SpeciesReferenceGlyph_new_with_data );
342 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setSpeciesGlyphId );
343 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setSpeciesReferenceId );
344 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setRole );
345 tcase_add_test( tcase, test_SpeciesReferenceGlyph_getRoleString );
346 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setRole_by_string );
347 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setCurve );
348 tcase_add_test( tcase, test_SpeciesReferenceGlyph_setCurve_NULL );
349 tcase_add_test( tcase, test_SpeciesReferenceGlyph_createLineSegment );
350 tcase_add_test( tcase, test_SpeciesReferenceGlyph_createCubicBezier );
351 tcase_add_test( tcase, test_SpeciesReferenceGlyph_copyConstructor );
352 tcase_add_test( tcase, test_SpeciesReferenceGlyph_assignmentOperator );
353 tcase_add_test( tcase, test_SpeciesReferenceGlyph_createWith );
354
355 suite_add_tcase(suite, tcase);
356
357 return suite;
358 }
359
360
361
362 END_C_DECLS
363