1 /**
2 * Filename : TestReferenceGlyph.cpp
3 * Description : Unit tests for ReferenceGlyph
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/ReferenceGlyph.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 ReferenceGlyph * SRG;
58 static LayoutPkgNamespaces* LN;
59
60 void
ReferenceGlyphTest_setup(void)61 ReferenceGlyphTest_setup (void)
62 {
63 LN = new LayoutPkgNamespaces();
64 SRG = new (std::nothrow) ReferenceGlyph(LN);
65
66 if (SRG == NULL)
67 {
68 fail("new(std::nothrow) ReferenceGlyph() returned a NULL pointer.");
69 }
70
71 }
72
73 void
ReferenceGlyphTest_teardown(void)74 ReferenceGlyphTest_teardown (void)
75 {
76 delete SRG;
77 delete LN;
78 }
79
START_TEST(test_ReferenceGlyph_new)80 START_TEST (test_ReferenceGlyph_new )
81 {
82 fail_unless( SRG->getTypeCode() == SBML_LAYOUT_REFERENCEGLYPH );
83 fail_unless( SRG->getMetaId() == "" );
84 fail_unless( !SRG->isSetId() );
85 fail_unless( !SRG->isSetReferenceId() );
86 fail_unless( !SRG->isSetGlyphId() );
87 fail_unless( !SRG->isSetRole() );
88 fail_unless( SRG->getRole() == "" );
89 fail_unless( SRG->getCurve() != NULL);
90 fail_unless( !SRG->isSetCurve());
91 }
92 END_TEST
93
START_TEST(test_ReferenceGlyph_new_with_data)94 START_TEST (test_ReferenceGlyph_new_with_data)
95 {
96 std::string sid="TestReferenceGlyph";
97 std::string glyphId="TestGlyph";
98 std::string referenceId="TestReference";
99 ReferenceGlyph* srg=new ReferenceGlyph( LN, sid,
100 glyphId,
101 referenceId,
102 "substrate"
103 );
104
105 fail_unless( srg->getTypeCode() == SBML_LAYOUT_REFERENCEGLYPH );
106 fail_unless( srg->getMetaId() == "" );
107 fail_unless( srg->isSetId() );
108 fail_unless( srg->getId() == sid);
109 fail_unless( srg->isSetReferenceId() );
110 fail_unless( srg->getReferenceId() == referenceId);
111 fail_unless( srg->isSetGlyphId() );
112 fail_unless( srg->getGlyphId() == glyphId);
113 fail_unless( srg->isSetRole());
114 fail_unless( srg->getRole() == "substrate" );
115 fail_unless( srg->getCurve() != NULL);
116 fail_unless( !srg->isSetCurve());
117
118 delete srg;
119 }
120 END_TEST
121
START_TEST(test_ReferenceGlyph_setGlyphId)122 START_TEST (test_ReferenceGlyph_setGlyphId)
123 {
124 std::string glyphId="TestGlyph";
125 SRG->setGlyphId(glyphId);
126 fail_unless(SRG->isSetGlyphId());
127 fail_unless(SRG->getGlyphId() == glyphId);
128 SRG->setGlyphId("");
129 fail_unless(!SRG->isSetGlyphId());
130 }
131 END_TEST
132
START_TEST(test_ReferenceGlyph_setReferenceId)133 START_TEST (test_ReferenceGlyph_setReferenceId)
134 {
135 std::string referenceId="TestReference";
136 SRG->setReferenceId(referenceId);
137 fail_unless(SRG->isSetReferenceId());
138 fail_unless(SRG->getReferenceId() == referenceId);
139 SRG->setReferenceId("");
140 fail_unless(!SRG->isSetReferenceId());
141 }
142 END_TEST
143
START_TEST(test_ReferenceGlyph_setRole)144 START_TEST (test_ReferenceGlyph_setRole)
145 {
146 SRG->setRole("modifier");
147 fail_unless(SRG->isSetRole());
148 fail_unless(SRG->getRole() == "modifier");
149 }
150 END_TEST
151
152
START_TEST(test_ReferenceGlyph_getRole)153 START_TEST ( test_ReferenceGlyph_getRole )
154 {
155 SRG->setRole("undefined");
156 fail_unless(SRG->getRole() == "undefined");
157 SRG->setRole("substrate");
158 fail_unless(SRG->getRole() == "substrate");
159 }
160 END_TEST
161
START_TEST(test_ReferenceGlyph_setCurve)162 START_TEST (test_ReferenceGlyph_setCurve)
163 {
164 Curve* c=new Curve();
165 LineSegment* ls=new LineSegment();
166 c->addCurveSegment(ls);
167 delete ls;
168 ls=new LineSegment();
169 c->addCurveSegment(ls);
170 delete ls;
171 SRG->setCurve(c);
172 fail_unless(SRG->isSetCurve());
173 fail_unless(SRG->getCurve()->getNumCurveSegments() == 2);
174 delete c;
175 }
176 END_TEST
177
START_TEST(test_ReferenceGlyph_setCurve_NULL)178 START_TEST (test_ReferenceGlyph_setCurve_NULL)
179 {
180 SRG->setCurve(NULL);
181 fail_unless(!SRG->isSetCurve());
182 fail_unless(SRG->getCurve() != NULL);
183 }
184 END_TEST
185
START_TEST(test_ReferenceGlyph_createLineSegment)186 START_TEST (test_ReferenceGlyph_createLineSegment)
187 {
188 LineSegment* ls=SRG->createLineSegment();
189 fail_unless(SRG->isSetCurve());
190 Point* p=ls->getStart();
191 fail_unless(p->getXOffset() == 0.0);
192 fail_unless(p->getYOffset() == 0.0);
193 fail_unless(p->getZOffset() == 0.0);
194 p=ls->getEnd();
195 fail_unless(p->getXOffset() == 0.0);
196 fail_unless(p->getYOffset() == 0.0);
197 fail_unless(p->getZOffset() == 0.0);
198 }
199 END_TEST
200
START_TEST(test_ReferenceGlyph_createCubicBezier)201 START_TEST (test_ReferenceGlyph_createCubicBezier)
202 {
203 CubicBezier* cb=SRG->createCubicBezier();
204 fail_unless(SRG->isSetCurve());
205 Point* p=cb->getStart();
206 fail_unless(p->getXOffset() == 0.0);
207 fail_unless(p->getYOffset() == 0.0);
208 fail_unless(p->getZOffset() == 0.0);
209 p=cb->getBasePoint1();
210 fail_unless(p->getXOffset() == 0.0);
211 fail_unless(p->getYOffset() == 0.0);
212 fail_unless(p->getZOffset() == 0.0);
213 p=cb->getBasePoint2();
214 fail_unless(p->getXOffset() == 0.0);
215 fail_unless(p->getYOffset() == 0.0);
216 fail_unless(p->getZOffset() == 0.0);
217 p=cb->getEnd();
218 fail_unless(p->getXOffset() == 0.0);
219 fail_unless(p->getYOffset() == 0.0);
220 fail_unless(p->getZOffset() == 0.0);
221 }
222 END_TEST
223
START_TEST(test_ReferenceGlyph_copyConstructor)224 START_TEST ( test_ReferenceGlyph_copyConstructor )
225 {
226 ReferenceGlyph* srg1=new ReferenceGlyph();
227 XMLNode notes;
228 srg1->setNotes(¬es);
229 XMLNode annotation;
230 srg1->setAnnotation(&annotation);
231 srg1->getCurve()->createLineSegment();
232 srg1->getCurve()->createLineSegment();
233 srg1->getCurve()->createCubicBezier();
234 srg1->getCurve()->createLineSegment();
235 srg1->getCurve()->createLineSegment();
236 srg1->getCurve()->createCubicBezier();
237 srg1->getCurve()->createLineSegment();
238 srg1->getCurve()->createLineSegment();
239 srg1->getCurve()->createCubicBezier();
240 ReferenceGlyph* srg2=new ReferenceGlyph(*srg1);
241 delete srg2;
242 delete srg1;
243 }
244 END_TEST
245
START_TEST(test_ReferenceGlyph_assignmentOperator)246 START_TEST ( test_ReferenceGlyph_assignmentOperator )
247 {
248 ReferenceGlyph* srg1=new ReferenceGlyph();
249 XMLNode notes;
250 srg1->setNotes(¬es);
251 XMLNode annotation;
252 srg1->setAnnotation(&annotation);
253 srg1->getCurve()->createLineSegment();
254 srg1->getCurve()->createLineSegment();
255 srg1->getCurve()->createCubicBezier();
256 srg1->getCurve()->createLineSegment();
257 srg1->getCurve()->createLineSegment();
258 srg1->getCurve()->createCubicBezier();
259 srg1->getCurve()->createLineSegment();
260 srg1->getCurve()->createLineSegment();
261 srg1->getCurve()->createCubicBezier();
262 ReferenceGlyph srg2=*srg1;
263 delete srg1;
264 }
265 END_TEST
266
267
START_TEST(test_ReferenceGlyph_createWith)268 START_TEST ( test_ReferenceGlyph_createWith )
269 {
270 ReferenceGlyph* srg1= ReferenceGlyph_createWith("id", "glyphId", "referenceId", "product");
271 fail_unless(srg1->getId() == "id");
272 fail_unless(srg1->getGlyphId() == "glyphId");
273 fail_unless(srg1->getReferenceId() == "referenceId");
274 fail_unless(srg1->getRole() == "product");
275 delete srg1;
276
277 LayoutPkgNamespaces layoutns(3, 1, 1, "layout");
278 ReferenceGlyph srg(&layoutns, "id", "glyphId", "referenceId", "product");
279 fail_unless(srg.getId() == "id");
280 fail_unless(srg.getGlyphId() == "glyphId");
281 fail_unless(srg.getReferenceId() == "referenceId");
282 fail_unless(srg.getRole() == "product");
283 }
284 END_TEST
285
286
287
288 Suite *
create_suite_ReferenceGlyph(void)289 create_suite_ReferenceGlyph (void)
290 {
291 Suite *suite = suite_create("ReferenceGlyph");
292 TCase *tcase = tcase_create("ReferenceGlyph");
293
294 tcase_add_checked_fixture( tcase,
295 ReferenceGlyphTest_setup,
296 ReferenceGlyphTest_teardown );
297
298 tcase_add_test( tcase, test_ReferenceGlyph_new );
299 tcase_add_test( tcase, test_ReferenceGlyph_new_with_data );
300 tcase_add_test( tcase, test_ReferenceGlyph_setGlyphId );
301 tcase_add_test( tcase, test_ReferenceGlyph_setReferenceId );
302 tcase_add_test( tcase, test_ReferenceGlyph_setRole );
303 tcase_add_test( tcase, test_ReferenceGlyph_getRole );
304 tcase_add_test( tcase, test_ReferenceGlyph_setCurve );
305 tcase_add_test( tcase, test_ReferenceGlyph_setCurve_NULL );
306 tcase_add_test( tcase, test_ReferenceGlyph_createLineSegment );
307 tcase_add_test( tcase, test_ReferenceGlyph_createCubicBezier );
308 tcase_add_test( tcase, test_ReferenceGlyph_copyConstructor );
309 tcase_add_test( tcase, test_ReferenceGlyph_assignmentOperator );
310 tcase_add_test( tcase, test_ReferenceGlyph_createWith );
311
312 suite_add_tcase(suite, tcase);
313
314 return suite;
315 }
316
317
318
319 END_C_DECLS
320