1 /**
2  * Filename    : TestLayout.cpp
3  * Description : Unit tests for Layout
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/packages/layout/sbml/Layout.h>
44 #include <sbml/packages/layout/sbml/GraphicalObject.h>
45 #include <sbml/packages/layout/sbml/GeneralGlyph.h>
46 #include <sbml/packages/layout/sbml/CompartmentGlyph.h>
47 #include <sbml/packages/layout/sbml/SpeciesGlyph.h>
48 #include <sbml/packages/layout/sbml/ReactionGlyph.h>
49 #include <sbml/packages/layout/sbml/TextGlyph.h>
50 
51 #include <check.h>
52 
53 LIBSBML_CPP_NAMESPACE_USE
54 
55 BEGIN_C_DECLS
56 
57 static Layout * L;
58 static LayoutPkgNamespaces* LN;
59 
60 void
LayoutTest_setup(void)61 LayoutTest_setup (void)
62 {
63   LN = new LayoutPkgNamespaces();
64   L = new (std::nothrow) Layout(LN);
65 
66   if (L == NULL)
67   {
68     fail("new(std::nothrow) Layout() returned a NULL pointer.");
69   }
70 
71 }
72 
73 void
LayoutTest_teardown(void)74 LayoutTest_teardown (void)
75 {
76   delete L;
77   delete LN;
78 }
79 
START_TEST(test_Layout_new)80 START_TEST ( test_Layout_new )
81 {
82   fail_unless( L->getTypeCode()    == SBML_LAYOUT_LAYOUT );
83   fail_unless( L->getMetaId()      == "" );
84   //    fail_unless( L->getNotes()       == "" );
85   //    fail_unless( L->getAnnotation()  == "" );
86   fail_unless( L->getId()          == "" );
87   fail_unless( !L->isSetId());
88   Dimensions* dim=(L->getDimensions());
89   fail_unless (dim->getWidth()  == 0.0 );
90   fail_unless (dim->getHeight() == 0.0 );
91   fail_unless (dim->getDepth()  == 0.0 );
92 
93   fail_unless ( L->getNumCompartmentGlyphs()         == 0 );
94   fail_unless ( L->getNumSpeciesGlyphs()             == 0 );
95   fail_unless ( L->getNumReactionGlyphs()            == 0 );
96   fail_unless ( L->getNumTextGlyphs()                == 0 );
97   fail_unless ( L->getNumAdditionalGraphicalObjects() == 0 );
98 }
99 END_TEST
100 
START_TEST(test_Layout_new_with_id_and_dimensions)101 START_TEST ( test_Layout_new_with_id_and_dimensions )
102 {
103   std::string id="TestLayoutId";
104   Dimensions dimensions=Dimensions(LN,-1.1,2.2,3.3);
105   Layout* l=new Layout(LN,id,&dimensions);
106   fail_unless( l->getTypeCode()    == SBML_LAYOUT_LAYOUT );
107   fail_unless( l->getMetaId()      == "" );
108   //    fail_unless( l->getNotes()       == "" );
109   //    fail_unless( l->getAnnotation()  == "" );
110   fail_unless( l->getId()          == id );
111   fail_unless( l->isSetId());
112   Dimensions* dim=(l->getDimensions());
113   fail_unless (dim->getWidth()  == dimensions.getWidth() );
114   fail_unless (dim->getHeight() == dimensions.getHeight() );
115   fail_unless (dim->getDepth()  == dimensions.getDepth() );
116 
117   fail_unless ( l->getNumCompartmentGlyphs()         == 0 );
118   fail_unless ( l->getNumSpeciesGlyphs()             == 0 );
119   fail_unless ( l->getNumReactionGlyphs()            == 0 );
120   fail_unless ( l->getNumTextGlyphs()                == 0 );
121   fail_unless ( l->getNumAdditionalGraphicalObjects() == 0 );
122   delete l;
123 }
124 END_TEST
125 
START_TEST(test_Layout_setId)126 START_TEST ( test_Layout_setId )
127 {
128   std::string id="TestLayoutId";
129   L->setId(id);
130   fail_unless(L->isSetId());
131   fail_unless(L->getId() == id);
132 }
133 END_TEST
134 
START_TEST(test_Layout_setDimensions)135 START_TEST ( test_Layout_setDimensions )
136 {
137   Dimensions dimensions=Dimensions(LN,-1.1,2.2,-3.3);
138   L->setDimensions(&dimensions);
139   Dimensions* dim=(L->getDimensions());
140   fail_unless(dim->getWidth()  == dimensions.getWidth());
141   fail_unless(dim->getHeight() == dimensions.getHeight());
142   fail_unless(dim->getDepth()  == dimensions.getDepth());
143 }
144 END_TEST
145 
START_TEST(test_Layout_addCompartmentGlyph)146 START_TEST ( test_Layout_addCompartmentGlyph )
147 {
148   CompartmentGlyph* cg=new CompartmentGlyph();
149   L->addCompartmentGlyph(cg);
150   fail_unless ( L->getNumCompartmentGlyphs() == 1 );
151   delete cg;
152 }
153 END_TEST
154 
START_TEST(test_Layout_addSpeciesGlyph)155 START_TEST ( test_Layout_addSpeciesGlyph )
156 {
157   SpeciesGlyph* sg=new SpeciesGlyph();
158   L->addSpeciesGlyph(sg);
159   fail_unless ( L->getNumSpeciesGlyphs() == 1 );
160   delete sg;
161 }
162 END_TEST
163 
START_TEST(test_Layout_addReactionGlyph)164 START_TEST ( test_Layout_addReactionGlyph )
165 {
166   ReactionGlyph* rg=new ReactionGlyph();
167   L->addReactionGlyph(rg);
168   fail_unless ( L->getNumReactionGlyphs() == 1 );
169 
170   delete rg;
171 }
172 END_TEST
173 
START_TEST(test_Layout_addTextGlyph)174 START_TEST ( test_Layout_addTextGlyph )
175 {
176   TextGlyph* tg=new TextGlyph();
177   L->addTextGlyph(tg);
178   fail_unless ( L->getNumTextGlyphs() == 1 );
179 
180   delete tg;
181 }
182 END_TEST
183 
START_TEST(test_Layout_addAdditionalGraphicalObject)184 START_TEST ( test_Layout_addAdditionalGraphicalObject )
185 {
186   GraphicalObject* ago=new GraphicalObject();
187   L->addAdditionalGraphicalObject(ago);
188   fail_unless ( L->getNumAdditionalGraphicalObjects() == 1 );
189   delete ago;
190 }
191 END_TEST
192 
193 
START_TEST(test_Layout_addGeneralGlyph)194 START_TEST ( test_Layout_addGeneralGlyph )
195 {
196   GeneralGlyph* ago=new GeneralGlyph();
197   L->addGeneralGlyph(ago);
198   fail_unless ( L->getNumGeneralGlyphs() == 1 );
199   delete ago;
200 }
201 END_TEST
202 
START_TEST(test_Layout_getNumCompartmentGlyphs)203 START_TEST ( test_Layout_getNumCompartmentGlyphs )
204 {
205   std::string id1="TestCompartment_1";
206   std::string id2="TestCompartment_2";
207   std::string id3="TestCompartment_3";
208   std::string id4="TestCompartment_4";
209   std::string id5="TestCompartment_5";
210   CompartmentGlyph* cg1=new CompartmentGlyph(LN,id1);
211   CompartmentGlyph* cg2=new CompartmentGlyph(LN,id2);
212   CompartmentGlyph* cg3=new CompartmentGlyph(LN,id3);
213   CompartmentGlyph* cg4=new CompartmentGlyph(LN,id4);
214   CompartmentGlyph* cg5=new CompartmentGlyph(LN,id5);
215   L->addCompartmentGlyph(cg1);
216   L->addCompartmentGlyph(cg2);
217   L->addCompartmentGlyph(cg3);
218   L->addCompartmentGlyph(cg4);
219   L->addCompartmentGlyph(cg5);
220   fail_unless( L->getNumCompartmentGlyphs() == 5);
221   delete cg1;
222   delete cg2;
223   delete cg3;
224   delete cg4;
225   delete cg5;
226 }
227 END_TEST
228 
START_TEST(test_Layout_getNumGeneralGlyphs)229 START_TEST ( test_Layout_getNumGeneralGlyphs )
230 {
231   GeneralGlyph* cg1=new GeneralGlyph(LN);
232   GeneralGlyph* cg2=new GeneralGlyph(LN);
233   GeneralGlyph* cg3=new GeneralGlyph(LN);
234   GeneralGlyph* cg4=new GeneralGlyph(LN);
235   GeneralGlyph* cg5=new GeneralGlyph(LN);
236   L->addGeneralGlyph(cg1);
237   L->addGeneralGlyph(cg2);
238   L->addGeneralGlyph(cg3);
239   L->addGeneralGlyph(cg4);
240   L->addGeneralGlyph(cg5);
241   fail_unless( L->getNumGeneralGlyphs() == 5);
242   delete cg1;
243   delete cg2;
244   delete cg3;
245   delete cg4;
246   delete cg5;
247 }
248 END_TEST
249 
START_TEST(test_Layout_getNumSpeciesGlyphs)250 START_TEST ( test_Layout_getNumSpeciesGlyphs )
251 {
252   std::string id1="TestSpecies_1";
253   std::string id2="TestSpecies_2";
254   std::string id3="TestSpecies_3";
255   std::string id4="TestSpecies_4";
256   std::string id5="TestSpecies_5";
257   SpeciesGlyph* sg1=new SpeciesGlyph(LN,id1);
258   SpeciesGlyph* sg2=new SpeciesGlyph(LN,id2);
259   SpeciesGlyph* sg3=new SpeciesGlyph(LN,id3);
260   SpeciesGlyph* sg4=new SpeciesGlyph(LN,id4);
261   SpeciesGlyph* sg5=new SpeciesGlyph(LN,id5);
262   L->addSpeciesGlyph(sg1);
263   L->addSpeciesGlyph(sg2);
264   L->addSpeciesGlyph(sg3);
265   L->addSpeciesGlyph(sg4);
266   L->addSpeciesGlyph(sg5);
267   fail_unless( L->getNumSpeciesGlyphs() == 5);
268   delete sg1;
269   delete sg2;
270   delete sg3;
271   delete sg4;
272   delete sg5;
273 }
274 END_TEST
275 
276 
START_TEST(test_Layout_getNumReactionGlyphs)277 START_TEST ( test_Layout_getNumReactionGlyphs )
278 {
279   std::string id1="TestReaction_1";
280   std::string id2="TestReaction_2";
281   std::string id3="TestReaction_3";
282   std::string id4="TestReaction_4";
283   std::string id5="TestReaction_5";
284   ReactionGlyph* rg1=new ReactionGlyph(LN,id1);
285   ReactionGlyph* rg2=new ReactionGlyph(LN,id2);
286   ReactionGlyph* rg3=new ReactionGlyph(LN,id3);
287   ReactionGlyph* rg4=new ReactionGlyph(LN,id4);
288   ReactionGlyph* rg5=new ReactionGlyph(LN,id5);
289   L->addReactionGlyph(rg1);
290   L->addReactionGlyph(rg2);
291   L->addReactionGlyph(rg3);
292   L->addReactionGlyph(rg4);
293   L->addReactionGlyph(rg5);
294   fail_unless( L->getNumReactionGlyphs() == 5);
295   delete rg1;
296   delete rg2;
297   delete rg3;
298   delete rg4;
299   delete rg5;
300 }
301 END_TEST
302 
303 
START_TEST(test_Layout_getNumTextGlyphs)304 START_TEST ( test_Layout_getNumTextGlyphs )
305 {
306   std::string id1="TestText_1";
307   std::string id2="TestText_2";
308   std::string id3="TestText_3";
309   std::string id4="TestText_4";
310   std::string id5="TestText_5";
311   TextGlyph* tg1=new TextGlyph(LN,id1);
312   TextGlyph* tg2=new TextGlyph(LN,id2);
313   TextGlyph* tg3=new TextGlyph(LN,id3);
314   TextGlyph* tg4=new TextGlyph(LN,id4);
315   TextGlyph* tg5=new TextGlyph(LN,id5);
316   L->addTextGlyph(tg1);
317   L->addTextGlyph(tg2);
318   L->addTextGlyph(tg3);
319   L->addTextGlyph(tg4);
320   L->addTextGlyph(tg5);
321   fail_unless( L->getNumTextGlyphs() == 5);
322   delete tg1;
323   delete tg2;
324   delete tg3;
325   delete tg4;
326   delete tg5;
327 }
328 END_TEST
329 
330 
START_TEST(test_Layout_getNumAdditionalGraphicalObjects)331 START_TEST ( test_Layout_getNumAdditionalGraphicalObjects )
332 {
333   std::string id1="TestGraphicalObject_1";
334   std::string id2="TestGraphicalObject_2";
335   std::string id3="TestGraphicalObject_3";
336   std::string id4="TestGraphicalObject_4";
337   std::string id5="TestGraphicalObject_5";
338   GraphicalObject* go1=new GraphicalObject(LN,id1);
339   GraphicalObject* go2=new GraphicalObject(LN,id2);
340   GraphicalObject* go3=new GraphicalObject(LN,id3);
341   GraphicalObject* go4=new GraphicalObject(LN,id4);
342   GraphicalObject* go5=new GraphicalObject(LN,id5);
343   L->addAdditionalGraphicalObject(go1);
344   L->addAdditionalGraphicalObject(go2);
345   L->addAdditionalGraphicalObject(go3);
346   L->addAdditionalGraphicalObject(go4);
347   L->addAdditionalGraphicalObject(go5);
348   fail_unless( L->getNumAdditionalGraphicalObjects() == 5);
349   delete go1;
350   delete go2;
351   delete go3;
352   delete go4;
353   delete go5;
354 }
355 END_TEST
356 
START_TEST(test_Layout_createCompartmentGlyph)357 START_TEST ( test_Layout_createCompartmentGlyph )
358 {
359   L->createCompartmentGlyph();
360   L->createCompartmentGlyph();
361   L->createCompartmentGlyph();
362   fail_unless ( L->getNumCompartmentGlyphs() == 3 );
363 }
364 END_TEST
365 
START_TEST(test_Layout_createSpeciesGlyph)366 START_TEST ( test_Layout_createSpeciesGlyph )
367 {
368   L->createSpeciesGlyph();
369   L->createSpeciesGlyph();
370   L->createSpeciesGlyph();
371   fail_unless ( L->getNumSpeciesGlyphs() == 3 );
372 }
373 END_TEST
374 
375 
START_TEST(test_Layout_createReactionGlyph)376 START_TEST ( test_Layout_createReactionGlyph )
377 {
378   L->createReactionGlyph();
379   L->createReactionGlyph();
380   L->createReactionGlyph();
381   fail_unless ( L->getNumReactionGlyphs() == 3 );
382 }
383 END_TEST
384 
385 
START_TEST(test_Layout_createTextGlyph)386 START_TEST ( test_Layout_createTextGlyph )
387 {
388   L->createTextGlyph();
389   L->createTextGlyph();
390   L->createTextGlyph();
391   fail_unless ( L->getNumTextGlyphs() == 3 );
392 }
393 END_TEST
394 
395 
START_TEST(test_Layout_createGeneralGlyph)396 START_TEST ( test_Layout_createGeneralGlyph )
397 {
398   L->createGeneralGlyph();
399   L->createGeneralGlyph();
400   L->createGeneralGlyph();
401   fail_unless ( L->getNumGeneralGlyphs() == 3 );
402 }
403 END_TEST
404 
START_TEST(test_Layout_createAdditionalGraphicalObject)405 START_TEST ( test_Layout_createAdditionalGraphicalObject )
406 {
407   L->createAdditionalGraphicalObject();
408   L->createAdditionalGraphicalObject();
409   L->createAdditionalGraphicalObject();
410   fail_unless ( L->getNumAdditionalGraphicalObjects() == 3 );
411 }
412 END_TEST
413 
414 
START_TEST(test_Layout_createSpeciesReferenceGlyph)415 START_TEST ( test_Layout_createSpeciesReferenceGlyph )
416 {
417   SpeciesReferenceGlyph* srg=L->createSpeciesReferenceGlyph();
418   fail_unless(srg == NULL);
419   L->createReactionGlyph();
420   srg=L->createSpeciesReferenceGlyph();
421   fail_unless(srg != NULL);
422 }
423 END_TEST
424 
425 
START_TEST(test_Layout_createLineSegment)426 START_TEST ( test_Layout_createLineSegment )
427 {
428   LineSegment* ls=L->createLineSegment();
429   fail_unless(ls == NULL);
430   L->createReactionGlyph();
431   ls=L->createLineSegment();
432   fail_unless(ls != NULL);
433   L->createSpeciesReferenceGlyph();
434   ls=L->createLineSegment();
435   fail_unless ( ls != NULL );
436   ReactionGlyph* rg=L->getReactionGlyph(0);
437   fail_unless( rg->getCurve()->getNumCurveSegments() == 1);
438   fail_unless( rg->getSpeciesReferenceGlyph(0)->getCurve()->getNumCurveSegments() == 1);
439 }
440 END_TEST
441 
442 
START_TEST(test_Layout_createCubicBezier)443 START_TEST ( test_Layout_createCubicBezier )
444 {
445   CubicBezier* cb=L->createCubicBezier();
446   fail_unless(cb == NULL);
447   L->createReactionGlyph();
448   cb=L->createCubicBezier();
449   fail_unless(cb != NULL);
450   L->createSpeciesReferenceGlyph();
451   cb=L->createCubicBezier();
452   fail_unless ( cb != NULL );
453   ReactionGlyph* rg=L->getReactionGlyph(0);
454   fail_unless( rg->getCurve()->getNumCurveSegments() == 1);
455   fail_unless( rg->getSpeciesReferenceGlyph(0)->getCurve()->getNumCurveSegments() == 1);
456 }
457 END_TEST
458 
459 
460 
START_TEST(test_Layout_copyConstructor)461 START_TEST ( test_Layout_copyConstructor )
462 {
463   Layout* l1=new Layout();
464   XMLNode notes;
465   l1->setNotes(&notes);
466   XMLNode annotation;
467   l1->setAnnotation(&annotation);
468   GraphicalObject* go=l1->createCompartmentGlyph();
469   go->setId("go1");
470   go=l1->createCompartmentGlyph();
471   go->setId("go2");
472   go=l1->createCompartmentGlyph();
473   go->setId("go3");
474   go=l1->createSpeciesGlyph();
475   go->setId("go4");
476   go=l1->createSpeciesGlyph();
477   go->setId("go5");
478   go=l1->createSpeciesGlyph();
479   go->setId("go6");
480   go=l1->createSpeciesGlyph();
481   go->setId("go7");
482   go=l1->createSpeciesGlyph();
483   go->setId("go8");
484   go=l1->createSpeciesGlyph();
485   go->setId("go9");
486   go=l1->createSpeciesGlyph();
487   go->setId("go10");
488   go=l1->createReactionGlyph();
489   go->setId("go11");
490   go=l1->createReactionGlyph();
491   go->setId("go12");
492   go=l1->createReactionGlyph();
493   go->setId("go13");
494   go=l1->createReactionGlyph();
495   go->setId("go14");
496   go=l1->createReactionGlyph();
497   go->setId("go15");
498   go=l1->createReactionGlyph();
499   go->setId("go16");
500   go=l1->createReactionGlyph();
501   go->setId("go17");
502   go=l1->createReactionGlyph();
503   go->setId("go18");
504   go=l1->createTextGlyph();
505   go->setId("go19");
506   go=l1->createTextGlyph();
507   go->setId("go20");
508   go=l1->createTextGlyph();
509   go->setId("go21");
510   go=l1->createAdditionalGraphicalObject();
511   go->setId("go22");
512   go=l1->createAdditionalGraphicalObject();
513   go->setId("go23");
514   go=l1->createAdditionalGraphicalObject();
515   go->setId("go24");
516   go=l1->createAdditionalGraphicalObject();
517   go->setId("go25");
518   Layout* l2=new Layout(*l1);
519   delete l2;
520   delete l1;
521 }
522 END_TEST
523 
START_TEST(test_Layout_assignmentOperator)524 START_TEST ( test_Layout_assignmentOperator )
525 {
526   Layout* l1=new Layout();
527   XMLNode notes;
528   l1->setNotes(&notes);
529   XMLNode annotation;
530   l1->setAnnotation(&annotation);
531   GraphicalObject* go=l1->createCompartmentGlyph();
532   go->setId("go1");
533   go=l1->createCompartmentGlyph();
534   go->setId("go2");
535   go=l1->createCompartmentGlyph();
536   go->setId("go3");
537   go=l1->createSpeciesGlyph();
538   go->setId("go4");
539   go=l1->createSpeciesGlyph();
540   go->setId("go5");
541   go=l1->createSpeciesGlyph();
542   go->setId("go6");
543   go=l1->createSpeciesGlyph();
544   go->setId("go7");
545   go=l1->createSpeciesGlyph();
546   go->setId("go8");
547   go=l1->createSpeciesGlyph();
548   go->setId("go9");
549   go=l1->createSpeciesGlyph();
550   go->setId("go10");
551   go=l1->createReactionGlyph();
552   go->setId("go11");
553   go=l1->createReactionGlyph();
554   go->setId("go12");
555   go=l1->createReactionGlyph();
556   go->setId("go13");
557   go=l1->createReactionGlyph();
558   go->setId("go14");
559   go=l1->createReactionGlyph();
560   go->setId("go15");
561   go=l1->createReactionGlyph();
562   go->setId("go16");
563   go=l1->createReactionGlyph();
564   go->setId("go17");
565   go=l1->createReactionGlyph();
566   go->setId("go18");
567   go=l1->createTextGlyph();
568   go->setId("go19");
569   go=l1->createTextGlyph();
570   go->setId("go20");
571   go=l1->createTextGlyph();
572   go->setId("go21");
573   go=l1->createAdditionalGraphicalObject();
574   go->setId("go22");
575   go=l1->createAdditionalGraphicalObject();
576   go->setId("go23");
577   go=l1->createAdditionalGraphicalObject();
578   go->setId("go24");
579   go=l1->createAdditionalGraphicalObject();
580   go->setId("go25");
581   Layout l2=*l1;
582   delete l1;
583 }
584 END_TEST
585 
586 
587 Suite *
create_suite_Layout(void)588 create_suite_Layout (void)
589 {
590   Suite *suite = suite_create("Layout");
591   TCase *tcase = tcase_create("Layout");
592 
593   tcase_add_checked_fixture( tcase,
594                             LayoutTest_setup,
595                             LayoutTest_teardown );
596 
597   tcase_add_test ( tcase , test_Layout_new                              );
598   tcase_add_test ( tcase , test_Layout_new_with_id_and_dimensions       );
599   tcase_add_test ( tcase , test_Layout_setId                            );
600   tcase_add_test ( tcase , test_Layout_setDimensions                    );
601   tcase_add_test ( tcase , test_Layout_addCompartmentGlyph              );
602   tcase_add_test ( tcase , test_Layout_addSpeciesGlyph                  );
603   tcase_add_test ( tcase , test_Layout_addGeneralGlyph                  );
604   tcase_add_test ( tcase , test_Layout_addReactionGlyph                 );
605   tcase_add_test ( tcase , test_Layout_addTextGlyph                     );
606   tcase_add_test ( tcase , test_Layout_addAdditionalGraphicalObject     );
607   tcase_add_test ( tcase , test_Layout_createCompartmentGlyph           );
608   tcase_add_test ( tcase , test_Layout_createSpeciesGlyph               );
609   tcase_add_test ( tcase , test_Layout_createGeneralGlyph               );
610   tcase_add_test ( tcase , test_Layout_createReactionGlyph              );
611   tcase_add_test ( tcase , test_Layout_createTextGlyph                  );
612   tcase_add_test ( tcase , test_Layout_createAdditionalGraphicalObject  );
613   tcase_add_test ( tcase , test_Layout_createSpeciesReferenceGlyph      );
614   tcase_add_test ( tcase , test_Layout_createLineSegment                );
615   tcase_add_test ( tcase , test_Layout_createCubicBezier                );
616   tcase_add_test ( tcase , test_Layout_getNumCompartmentGlyphs          );
617   tcase_add_test ( tcase , test_Layout_getNumGeneralGlyphs              );
618   tcase_add_test ( tcase , test_Layout_getNumSpeciesGlyphs              );
619   tcase_add_test ( tcase , test_Layout_getNumReactionGlyphs             );
620   tcase_add_test ( tcase , test_Layout_getNumTextGlyphs                 );
621   tcase_add_test ( tcase , test_Layout_getNumAdditionalGraphicalObjects );
622   tcase_add_test(  tcase , test_Layout_copyConstructor                  );
623   tcase_add_test(  tcase , test_Layout_assignmentOperator               );
624 
625   suite_add_tcase(suite, tcase);
626 
627   return suite;
628 }
629 
630 
631 
632 END_C_DECLS
633