1 /**
2 * \file TestSBMLParentObject.cpp
3 * \brief SBML parent object unit tests
4 * \author Sarah Keating
5 *
6 * <!--------------------------------------------------------------------------
7 * This file is part of libSBML. Please visit http://sbml.org for more
8 * information about SBML, and the latest version of libSBML.
9 *
10 * Copyright (C) 2020 jointly by the following organizations:
11 * 1. California Institute of Technology, Pasadena, CA, USA
12 * 2. University of Heidelberg, Heidelberg, Germany
13 * 3. University College London, London, UK
14 *
15 * Copyright (C) 2019 jointly by the following organizations:
16 * 1. California Institute of Technology, Pasadena, CA, USA
17 * 2. University of Heidelberg, Heidelberg, Germany
18 *
19 * Copyright (C) 2013-2018 jointly by the following organizations:
20 * 1. California Institute of Technology, Pasadena, CA, USA
21 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
22 * 3. University of Heidelberg, Heidelberg, Germany
23 *
24 * Copyright (C) 2009-2013 jointly by the following organizations:
25 * 1. California Institute of Technology, Pasadena, CA, USA
26 * 2. EMBL European Bioinformatics Institute (EMBL-EBI), Hinxton, UK
27 *
28 * Copyright (C) 2006-2008 by the California Institute of Technology,
29 * Pasadena, CA, USA
30 *
31 * Copyright (C) 2002-2005 jointly by the following organizations:
32 * 1. California Institute of Technology, Pasadena, CA, USA
33 * 2. Japan Science and Technology Agency, Japan
34 *
35 * This library is free software; you can redistribute it and/or modify it
36 * under the terms of the GNU Lesser General Public License as published by
37 * the Free Software Foundation. A copy of the license agreement is provided
38 * in the file named "LICENSE.txt" included with this software distribution
39 * and also available online as http://sbml.org/software/libsbml/license.html
40 * ---------------------------------------------------------------------- -->*/
41
42 #include <sbml/common/common.h>
43
44 #include <sbml/SBase.h>
45 #include <sbml/Compartment.h>
46 #include <sbml/CompartmentType.h>
47 #include <sbml/Constraint.h>
48 #include <sbml/Delay.h>
49 #include <sbml/Event.h>
50 #include <sbml/EventAssignment.h>
51 #include <sbml/FunctionDefinition.h>
52 #include <sbml/InitialAssignment.h>
53 #include <sbml/KineticLaw.h>
54 #include <sbml/ListOf.h>
55 #include <sbml/Model.h>
56 #include <sbml/Parameter.h>
57 #include <sbml/Reaction.h>
58 #include <sbml/SBMLDocument.h>
59 #include <sbml/Species.h>
60 #include <sbml/SpeciesReference.h>
61 #include <sbml/ModifierSpeciesReference.h>
62 #include <sbml/SpeciesType.h>
63
64 #include <sbml/AlgebraicRule.h>
65 #include <sbml/AssignmentRule.h>
66 #include <sbml/RateRule.h>
67
68 #include <sbml/Unit.h>
69 #include <sbml/UnitDefinition.h>
70 #include <sbml/units/FormulaUnitsData.h>
71
72 #include <sbml/math/ASTNode.h>
73 #include <sbml/math/FormulaParser.h>
74
75 #include <check.h>
76
77 /** @cond doxygenIgnored */
78
79 using namespace std;
80 LIBSBML_CPP_NAMESPACE_USE
81
82 /** @endcond */
83
84
85 BEGIN_C_DECLS
86
START_TEST(test_Compartment_parent_add)87 START_TEST ( test_Compartment_parent_add )
88 {
89 Compartment *c = new Compartment(2, 4);
90 c->setId("c");
91 Model *m = new Model(2, 4);
92
93 m->addCompartment(c);
94
95 delete c;
96
97 ListOf *lo = m->getListOfCompartments();
98
99 fail_unless(lo == m->getCompartment(0)->getParentSBMLObject());
100 fail_unless(m == lo->getParentSBMLObject());
101
102 delete m;
103 }
104 END_TEST
105
106
START_TEST(test_CompartmentType_parent_add)107 START_TEST ( test_CompartmentType_parent_add )
108 {
109 CompartmentType *ct = new CompartmentType(2, 4);
110 Model *m = new Model(2, 4);
111 ct->setId("ct");
112 m->addCompartmentType(ct);
113
114 delete ct;
115
116 ListOf *lo = m->getListOfCompartmentTypes();
117
118 fail_unless(lo == m->getCompartmentType(0)->getParentSBMLObject());
119 fail_unless(m == lo->getParentSBMLObject());
120
121 delete m;
122 }
123 END_TEST
124
125
START_TEST(test_Constraint_parent_add)126 START_TEST ( test_Constraint_parent_add )
127 {
128 Constraint *ct = new Constraint(2, 4);
129 Model *m = new Model(2, 4);
130 ASTNode_t* math = SBML_parseFormula("a-k");
131 ct->setMath(math);
132 ASTNode_free(math);
133 m->addConstraint(ct);
134
135 delete ct;
136
137 ListOf *lo = m->getListOfConstraints();
138
139 fail_unless(lo == m->getConstraint(0)->getParentSBMLObject());
140 fail_unless(m == lo->getParentSBMLObject());
141
142 delete m;
143 }
144 END_TEST
145
146
START_TEST(test_Delay_parent_add)147 START_TEST ( test_Delay_parent_add )
148 {
149 Delay *d = new Delay(2, 4);
150 Event *e = new Event(2, 4);
151 ASTNode_t* math = SBML_parseFormula("1");
152 d->setMath(math);
153 ASTNode_free(math);
154
155 e->setDelay(d);
156
157 delete d;
158
159 fail_unless(e == e->getDelay()->getParentSBMLObject());
160
161 delete e;
162 }
163 END_TEST
164
165
START_TEST(test_Event_parent_add)166 START_TEST ( test_Event_parent_add )
167 {
168 Event *e = new Event(2, 4);
169 Trigger *t = new Trigger(2, 4);
170 ASTNode_t* math = SBML_parseFormula("true");
171 t->setMath(math);
172 ASTNode_free(math);
173 e->setTrigger(t);
174 e->createEventAssignment();
175 Model *m = new Model(2, 4);
176
177 m->addEvent(e);
178
179 ListOf *lo = m->getListOfEvents();
180
181 fail_unless(lo == m->getEvent(0)->getParentSBMLObject());
182 fail_unless(m == lo->getParentSBMLObject());
183
184 delete e;
185 delete t;
186 delete m;
187 }
188 END_TEST
189
190
START_TEST(test_EventAssignment_parent_add)191 START_TEST ( test_EventAssignment_parent_add )
192 {
193 Event *e = new Event(2, 4);
194 EventAssignment *ea = new EventAssignment(2, 4);
195 ea->setVariable("c");
196 ASTNode_t* math = SBML_parseFormula("K+L");
197 ea->setMath(math);
198 ASTNode_free(math);
199
200 e->addEventAssignment(ea);
201
202 delete ea;
203
204 ListOf *lo = e->getListOfEventAssignments();
205
206 fail_unless(lo == e->getEventAssignment(0)->getParentSBMLObject());
207 fail_unless(e == lo->getParentSBMLObject());
208
209 delete e;
210 }
211 END_TEST
212
213
START_TEST(test_FunctionDefinition_parent_add)214 START_TEST ( test_FunctionDefinition_parent_add )
215 {
216 FunctionDefinition *fd = new FunctionDefinition(2, 4);
217 Model *m = new Model(2, 4);
218 fd->setId("fd");
219 ASTNode_t* math = SBML_parseFormula("l");
220 fd->setMath(math);
221 ASTNode_free(math);
222
223 m->addFunctionDefinition(fd);
224
225 delete fd;
226
227 ListOf *lo = m->getListOfFunctionDefinitions();
228
229 fail_unless(lo == m->getFunctionDefinition(0)->getParentSBMLObject());
230 fail_unless(m == lo->getParentSBMLObject());
231
232 delete m;
233 }
234 END_TEST
235
236
START_TEST(test_InitialAssignment_parent_add)237 START_TEST ( test_InitialAssignment_parent_add )
238 {
239 InitialAssignment *ia = new InitialAssignment(2, 4);
240 Model *m = new Model(2, 4);
241 ia->setSymbol("c");
242 ASTNode_t* math = SBML_parseFormula("9");
243 ia->setMath(math);
244 ASTNode_free(math);
245
246 m->addInitialAssignment(ia);
247
248 delete ia;
249
250 ListOf *lo = m->getListOfInitialAssignments();
251
252 fail_unless(lo == m->getInitialAssignment(0)->getParentSBMLObject());
253 fail_unless(m == lo->getParentSBMLObject());
254
255 delete m;
256 }
257 END_TEST
258
259
START_TEST(test_KineticLaw_parent_add)260 START_TEST ( test_KineticLaw_parent_add )
261 {
262 KineticLaw* kl=new KineticLaw(2, 4);
263 ASTNode_t* math = SBML_parseFormula("a");
264 kl->setMath(math);
265 ASTNode_free(math);
266
267 Reaction * r = new Reaction(2, 4);
268
269 r->setKineticLaw(kl);
270
271 fail_unless(r == r->getKineticLaw()->getParentSBMLObject());
272
273 delete r;
274 delete kl;
275 }
276 END_TEST
277
278
START_TEST(test_KineticLaw_Parameter_parent_add)279 START_TEST ( test_KineticLaw_Parameter_parent_add )
280 {
281 KineticLaw* kl=new KineticLaw(2, 4);
282
283 Parameter *p = new Parameter(2, 4);
284 p->setId("jake");
285 kl->addParameter(p);
286 delete p;
287
288 fail_unless(kl->getNumParameters() == 1);
289 fail_unless(kl->getParameter(0)->getId() == "jake");
290
291 ListOfParameters *lop = kl->getListOfParameters();
292
293 fail_unless(kl == lop->getParentSBMLObject());
294 fail_unless(lop == kl->getParameter(0)->getParentSBMLObject());
295
296 delete kl;
297 }
298 END_TEST
299
300
START_TEST(test_Model_parent_add)301 START_TEST ( test_Model_parent_add )
302 {
303 SBMLDocument *d = new SBMLDocument(2, 4);
304 Model *m = new Model(2, 4);
305
306 d->setModel(m);
307
308 fail_unless(d == d->getModel()->getParentSBMLObject());
309
310 delete d;
311 delete m;
312 }
313 END_TEST
314
315
START_TEST(test_Parameter_parent_add)316 START_TEST ( test_Parameter_parent_add )
317 {
318 Parameter *ia = new Parameter(2, 4);
319 Model *m = new Model(2, 4);
320 ia->setId("p");
321
322 m->addParameter(ia);
323
324 delete ia;
325
326 ListOf *lo = m->getListOfParameters();
327
328 fail_unless(lo == m->getParameter(0)->getParentSBMLObject());
329 fail_unless(m == lo->getParentSBMLObject());
330
331 delete m;
332 }
333 END_TEST
334
335
START_TEST(test_Reaction_parent_add)336 START_TEST ( test_Reaction_parent_add )
337 {
338 Reaction *ia = new Reaction(2, 4);
339 Model *m = new Model(2, 4);
340 ia->setId("k");
341
342 m->addReaction(ia);
343
344 delete ia;
345
346 ListOf *lo = m->getListOfReactions();
347
348 fail_unless(lo == m->getReaction(0)->getParentSBMLObject());
349 fail_unless(m == lo->getParentSBMLObject());
350
351 delete m;
352 }
353 END_TEST
354
355
356
START_TEST(test_Rule_parent_add)357 START_TEST ( test_Rule_parent_add )
358 {
359 Rule *ia = new RateRule(2, 4);
360 ia->setVariable("a");
361 ASTNode_t* math = SBML_parseFormula("9");
362 ia->setMath(math);
363 ASTNode_free(math);
364 Model *m = new Model(2, 4);
365
366 m->addRule(ia);
367
368 delete ia;
369
370 ListOf *lo = m->getListOfRules();
371
372 fail_unless(lo == m->getRule(0)->getParentSBMLObject());
373 fail_unless(m == lo->getParentSBMLObject());
374
375 delete m;
376 }
377 END_TEST
378
379
380
START_TEST(test_Species_parent_add)381 START_TEST ( test_Species_parent_add )
382 {
383 Species *ia = new Species(2, 4);
384 ia->setId("s");
385 ia->setCompartment("c");
386 Model *m = new Model(2, 4);
387
388 m->addSpecies(ia);
389
390 delete ia;
391
392 ListOf *lo = m->getListOfSpecies();
393
394 fail_unless(lo == m->getSpecies(0)->getParentSBMLObject());
395 fail_unless(m == lo->getParentSBMLObject());
396
397 delete m;
398 }
399 END_TEST
400
401
402
START_TEST(test_SpeciesReference_Product_parent_add)403 START_TEST ( test_SpeciesReference_Product_parent_add )
404 {
405 SpeciesReference *sr = new SpeciesReference(2, 4);
406 Reaction *r = new Reaction(2, 4);
407 sr->setSpecies("p");
408
409 r->addProduct(sr);
410
411 delete sr;
412
413 ListOf *lo = r->getListOfProducts();
414
415 fail_unless(lo == r->getProduct(0)->getParentSBMLObject());
416 fail_unless(r == lo->getParentSBMLObject());
417
418 delete r;
419 }
420 END_TEST
421
422
START_TEST(test_SpeciesReference_Reactant_parent_add)423 START_TEST ( test_SpeciesReference_Reactant_parent_add )
424 {
425 SpeciesReference *sr = new SpeciesReference(2, 4);
426 Reaction *r = new Reaction(2, 4);
427
428 sr->setSpecies("s");
429 r->addReactant(sr);
430
431 delete sr;
432
433 ListOf *lo = r->getListOfReactants();
434
435 fail_unless(lo == r->getReactant(0)->getParentSBMLObject());
436 fail_unless(r == lo->getParentSBMLObject());
437
438 delete r;
439 }
440 END_TEST
441
442
START_TEST(test_SpeciesReference_Modifier_parent_add)443 START_TEST ( test_SpeciesReference_Modifier_parent_add )
444 {
445 ModifierSpeciesReference *sr = new ModifierSpeciesReference(2, 4);
446 sr->setSpecies("s");
447 Reaction *r = new Reaction(2, 4);
448
449 r->addModifier(sr);
450
451 delete sr;
452
453 ListOf *lo = r->getListOfModifiers();
454
455 fail_unless(lo == r->getModifier(0)->getParentSBMLObject());
456 fail_unless(r == lo->getParentSBMLObject());
457
458 delete r;
459 }
460 END_TEST
461
462
START_TEST(test_SpeciesType_parent_add)463 START_TEST ( test_SpeciesType_parent_add )
464 {
465 SpeciesType *ia = new SpeciesType(2, 4);
466 ia->setId("s");
467 Model *m = new Model(2, 4);
468
469 m->addSpeciesType(ia);
470
471 delete ia;
472
473 ListOf *lo = m->getListOfSpeciesTypes();
474
475 fail_unless(lo == m->getSpeciesType(0)->getParentSBMLObject());
476 fail_unless(m == lo->getParentSBMLObject());
477
478 delete m;
479 }
480 END_TEST
481
482
START_TEST(test_StoichiometryMath_parent_add)483 START_TEST ( test_StoichiometryMath_parent_add )
484 {
485 StoichiometryMath *m = new StoichiometryMath(2, 4);
486 ASTNode_t* math = SBML_parseFormula("1");
487 m->setMath(math);
488 ASTNode_free(math);
489 SpeciesReference *sr = new SpeciesReference(2, 4);
490
491 sr->setStoichiometryMath(m);
492
493 delete m;
494
495 fail_unless(sr == sr->getStoichiometryMath()->getParentSBMLObject());
496
497 delete sr;
498 }
499 END_TEST
500
501
START_TEST(test_Trigger_parent_add)502 START_TEST ( test_Trigger_parent_add )
503 {
504 Trigger *d = new Trigger(2, 4);
505 ASTNode_t* math = SBML_parseFormula("false");
506 d->setMath(math);
507 ASTNode_free(math);
508 Event *e = new Event(2, 4);
509
510 e->setTrigger(d);
511
512 delete d;
513
514 fail_unless(e == e->getTrigger()->getParentSBMLObject());
515
516 delete e;
517 }
518 END_TEST
519
520
START_TEST(test_Unit_parent_add)521 START_TEST ( test_Unit_parent_add )
522 {
523 UnitDefinition* ud=new UnitDefinition(2, 4);
524
525 Unit * u = new Unit(2, 4);
526 u->setKind(UNIT_KIND_MOLE);
527 ud->addUnit(u);
528 delete u;
529
530 fail_unless(ud->getNumUnits() == 1);
531
532 ListOf *lo = ud->getListOfUnits();
533
534 fail_unless(lo == ud->getUnit(0)->getParentSBMLObject());
535 fail_unless(ud == lo->getParentSBMLObject());
536
537 delete ud;
538 }
539 END_TEST
540
541
START_TEST(test_UnitDefinition_parent_add)542 START_TEST ( test_UnitDefinition_parent_add )
543 {
544 UnitDefinition *ia = new UnitDefinition(2, 4);
545 Model *m = new Model(2, 4);
546 ia->setId("u");
547 ia->createUnit();
548
549 m->addUnitDefinition(ia);
550
551 delete ia;
552
553 ListOf *lo = m->getListOfUnitDefinitions();
554
555 fail_unless(lo == m->getUnitDefinition(0)->getParentSBMLObject());
556 fail_unless(m == lo->getParentSBMLObject());
557
558 delete m;
559 }
560 END_TEST
561
562
START_TEST(test_Compartment_parent_create)563 START_TEST ( test_Compartment_parent_create )
564 {
565 Model *m = new Model(2, 4);
566 Compartment *c = m->createCompartment();
567
568 ListOf *lo = m->getListOfCompartments();
569
570 fail_unless(lo == m->getCompartment(0)->getParentSBMLObject());
571 fail_unless(lo == c->getParentSBMLObject());
572 fail_unless(m == lo->getParentSBMLObject());
573
574 delete m;
575 }
576 END_TEST
577
578
START_TEST(test_CompartmentType_parent_create)579 START_TEST ( test_CompartmentType_parent_create )
580 {
581 Model *m = new Model(2, 4);
582 CompartmentType *ct = m->createCompartmentType();
583
584 ListOf *lo = m->getListOfCompartmentTypes();
585
586 fail_unless(lo == m->getCompartmentType(0)->getParentSBMLObject());
587 fail_unless(lo == ct->getParentSBMLObject());
588 fail_unless(m == lo->getParentSBMLObject());
589
590 delete m;
591 }
592 END_TEST
593
594
START_TEST(test_Constraint_parent_create)595 START_TEST ( test_Constraint_parent_create )
596 {
597 Model *m = new Model(2, 4);
598 Constraint *ct = m->createConstraint();
599
600 ListOf *lo = m->getListOfConstraints();
601
602 fail_unless(lo == m->getConstraint(0)->getParentSBMLObject());
603 fail_unless(lo == ct->getParentSBMLObject());
604 fail_unless(m == lo->getParentSBMLObject());
605
606 delete m;
607 }
608 END_TEST
609
610
START_TEST(test_Event_parent_create)611 START_TEST ( test_Event_parent_create )
612 {
613 Model *m = new Model(2, 4);
614 Event *e = m->createEvent();
615
616 ListOf *lo = m->getListOfEvents();
617
618 fail_unless(lo == m->getEvent(0)->getParentSBMLObject());
619 fail_unless(lo == e->getParentSBMLObject());
620 fail_unless(m == lo->getParentSBMLObject());
621
622 delete m;
623 }
624 END_TEST
625
626
START_TEST(test_EventAssignment_parent_create)627 START_TEST ( test_EventAssignment_parent_create )
628 {
629 Event *e = new Event(2, 4);
630
631 EventAssignment *ea = e->createEventAssignment();
632
633 ListOf *lo = e->getListOfEventAssignments();
634
635 fail_unless(lo == e->getEventAssignment(0)->getParentSBMLObject());
636 fail_unless(lo == ea->getParentSBMLObject());
637 fail_unless(e == lo->getParentSBMLObject());
638
639 delete e;
640 }
641 END_TEST
642
643
START_TEST(test_EventAssignment_parent_create_model)644 START_TEST ( test_EventAssignment_parent_create_model )
645 {
646 Model *m = new Model(2, 4);
647 Event *e = m->createEvent();
648
649 EventAssignment *ea = m->createEventAssignment();
650
651 ListOf *lo = e->getListOfEventAssignments();
652
653 fail_unless(lo == e->getEventAssignment(0)->getParentSBMLObject());
654 fail_unless(lo == ea->getParentSBMLObject());
655 fail_unless(e == lo->getParentSBMLObject());
656
657 delete m;
658 }
659 END_TEST
660
661
START_TEST(test_FunctionDefinition_parent_create)662 START_TEST ( test_FunctionDefinition_parent_create )
663 {
664 Model *m = new Model(2, 4);
665 FunctionDefinition *fd = m->createFunctionDefinition();
666
667 ListOf *lo = m->getListOfFunctionDefinitions();
668
669 fail_unless(lo == m->getFunctionDefinition(0)->getParentSBMLObject());
670 fail_unless(lo == fd->getParentSBMLObject());
671 fail_unless(m == lo->getParentSBMLObject());
672
673 delete m;
674 }
675 END_TEST
676
677
START_TEST(test_InitialAssignment_parent_create)678 START_TEST ( test_InitialAssignment_parent_create )
679 {
680 Model *m = new Model(2, 4);
681 InitialAssignment *ia = m->createInitialAssignment();
682
683 ListOf *lo = m->getListOfInitialAssignments();
684
685 fail_unless(lo == m->getInitialAssignment(0)->getParentSBMLObject());
686 fail_unless(lo == ia->getParentSBMLObject());
687 fail_unless(m == lo->getParentSBMLObject());
688
689 delete m;
690 }
691 END_TEST
692
693
START_TEST(test_KineticLaw_parent_create)694 START_TEST ( test_KineticLaw_parent_create )
695 {
696 Reaction * r = new Reaction(2, 4);
697 KineticLaw* kl = r->createKineticLaw();
698
699 fail_unless(r == kl->getParentSBMLObject());
700
701 delete r;
702 }
703 END_TEST
704
705
START_TEST(test_KineticLaw_parent_create_model)706 START_TEST ( test_KineticLaw_parent_create_model )
707 {
708 Model *m = new Model(2, 4);
709 Reaction * r = m->createReaction();
710 KineticLaw* kl = r->createKineticLaw();
711
712 fail_unless(r == kl->getParentSBMLObject());
713 fail_unless(r == r->getKineticLaw()->getParentSBMLObject());
714
715 delete m;
716 }
717 END_TEST
718
719
START_TEST(test_KineticLaw_Parameter_parent_create)720 START_TEST ( test_KineticLaw_Parameter_parent_create )
721 {
722 KineticLaw* kl=new KineticLaw(2, 4);
723 Parameter * p = kl->createParameter();
724
725 fail_unless(kl->getNumParameters() == 1);
726
727 ListOfParameters *lop = kl->getListOfParameters();
728
729 fail_unless(kl == lop->getParentSBMLObject());
730 fail_unless(lop == p->getParentSBMLObject());
731 fail_unless(lop == kl->getParameter(0)->getParentSBMLObject());
732
733 delete kl;
734 }
735 END_TEST
736
737
START_TEST(test_KineticLaw_Parameter_parent_create_model)738 START_TEST ( test_KineticLaw_Parameter_parent_create_model )
739 {
740 Model *m = new Model(2, 4);
741 Reaction *r = m->createReaction();
742 KineticLaw* kl = m->createKineticLaw();
743 Parameter * p = m->createKineticLawParameter();
744
745 fail_unless(kl->getNumParameters() == 1);
746
747 ListOfParameters *lop = kl->getListOfParameters();
748
749 fail_unless(r == kl->getParentSBMLObject());
750 fail_unless(kl == lop->getParentSBMLObject());
751 fail_unless(lop == p->getParentSBMLObject());
752 fail_unless(lop == kl->getParameter(0)->getParentSBMLObject());
753
754 delete m;
755 }
756 END_TEST
757
758
START_TEST(test_Model_parent_create)759 START_TEST ( test_Model_parent_create )
760 {
761 SBMLDocument *d = new SBMLDocument(2, 4);
762 Model *m = d->createModel();
763
764 fail_unless(d == m->getParentSBMLObject());
765
766 delete d;
767 }
768 END_TEST
769
770
START_TEST(test_Parameter_parent_create)771 START_TEST ( test_Parameter_parent_create )
772 {
773 Model *m = new Model(2, 4);
774 Parameter *p = m->createParameter();
775
776 ListOf *lo = m->getListOfParameters();
777
778 fail_unless(lo == m->getParameter(0)->getParentSBMLObject());
779 fail_unless(lo == p->getParentSBMLObject());
780 fail_unless(m == lo->getParentSBMLObject());
781
782 delete m;
783 }
784 END_TEST
785
786
START_TEST(test_Reaction_parent_create)787 START_TEST ( test_Reaction_parent_create )
788 {
789 Model *m = new Model(2, 4);
790 Reaction *r = m->createReaction();
791
792 ListOf *lo = m->getListOfReactions();
793
794 fail_unless(lo == m->getReaction(0)->getParentSBMLObject());
795 fail_unless(lo == r->getParentSBMLObject());
796 fail_unless(m == lo->getParentSBMLObject());
797
798 delete m;
799 }
800 END_TEST
801
802
803
START_TEST(test_AlgebraicRule_parent_create)804 START_TEST ( test_AlgebraicRule_parent_create )
805 {
806 Model *m = new Model(2, 4);
807 AlgebraicRule *r = m->createAlgebraicRule();
808
809 ListOf *lo = m->getListOfRules();
810
811 fail_unless(lo == m->getRule(0)->getParentSBMLObject());
812 fail_unless(lo == r->getParentSBMLObject());
813 fail_unless(m == lo->getParentSBMLObject());
814
815 delete m;
816 }
817 END_TEST
818
819
START_TEST(test_AssignmentRule_parent_create)820 START_TEST ( test_AssignmentRule_parent_create )
821 {
822 Model *m = new Model(2, 4);
823 AssignmentRule *r = m->createAssignmentRule();
824
825 ListOf *lo = m->getListOfRules();
826
827 fail_unless(lo == m->getRule(0)->getParentSBMLObject());
828 fail_unless(lo == r->getParentSBMLObject());
829 fail_unless(m == lo->getParentSBMLObject());
830
831 delete m;
832 }
833 END_TEST
834
835
START_TEST(test_RateRule_parent_create)836 START_TEST ( test_RateRule_parent_create )
837 {
838 Model *m = new Model(2, 4);
839 RateRule *r = m->createRateRule();
840
841 ListOf *lo = m->getListOfRules();
842
843 fail_unless(lo == m->getRule(0)->getParentSBMLObject());
844 fail_unless(lo == r->getParentSBMLObject());
845 fail_unless(m == lo->getParentSBMLObject());
846
847 delete m;
848 }
849 END_TEST
850
851
START_TEST(test_Species_parent_create)852 START_TEST ( test_Species_parent_create )
853 {
854 Model *m = new Model(2, 4);
855 Species *s = m->createSpecies();
856
857 ListOf *lo = m->getListOfSpecies();
858
859 fail_unless(lo == s->getParentSBMLObject());
860 fail_unless(lo == m->getSpecies(0)->getParentSBMLObject());
861 fail_unless(m == lo->getParentSBMLObject());
862
863 delete m;
864 }
865 END_TEST
866
867
START_TEST(test_SpeciesReference_Product_parent_create)868 START_TEST ( test_SpeciesReference_Product_parent_create )
869 {
870 Reaction *r = new Reaction(2, 4);
871 SpeciesReference *sr = r->createProduct();
872
873 ListOf *lo = r->getListOfProducts();
874
875 fail_unless(lo == r->getProduct(0)->getParentSBMLObject());
876 fail_unless(lo == sr->getParentSBMLObject());
877 fail_unless(r == lo->getParentSBMLObject());
878
879 delete r;
880 }
881 END_TEST
882
883
START_TEST(test_SpeciesReference_Product_parent_create_model)884 START_TEST ( test_SpeciesReference_Product_parent_create_model )
885 {
886 Model *m = new Model(2, 4);
887 Reaction *r = m->createReaction();
888 SpeciesReference *sr = m->createProduct();
889
890 ListOf *lo = r->getListOfProducts();
891
892 fail_unless(lo == r->getProduct(0)->getParentSBMLObject());
893 fail_unless(lo == sr->getParentSBMLObject());
894 fail_unless(r == lo->getParentSBMLObject());
895
896 delete m;
897 }
898 END_TEST
899
900
START_TEST(test_SpeciesReference_Reactant_parent_create)901 START_TEST ( test_SpeciesReference_Reactant_parent_create )
902 {
903 Reaction *r = new Reaction(2, 4);
904 SpeciesReference *sr = r->createReactant();
905
906 ListOf *lo = r->getListOfReactants();
907
908 fail_unless(lo == r->getReactant(0)->getParentSBMLObject());
909 fail_unless(lo == sr->getParentSBMLObject());
910 fail_unless(r == lo->getParentSBMLObject());
911
912 delete r;
913 }
914 END_TEST
915
916
START_TEST(test_SpeciesReference_Reactant_parent_create_model)917 START_TEST ( test_SpeciesReference_Reactant_parent_create_model )
918 {
919 Model *m = new Model(2, 4);
920 Reaction *r = m->createReaction();
921 SpeciesReference *sr = m->createReactant();
922
923 ListOf *lo = r->getListOfReactants();
924
925 fail_unless(lo == r->getReactant(0)->getParentSBMLObject());
926 fail_unless(lo == sr->getParentSBMLObject());
927 fail_unless(r == lo->getParentSBMLObject());
928
929 delete m;
930 }
931 END_TEST
932
933
START_TEST(test_SpeciesReference_Modifier_parent_create)934 START_TEST ( test_SpeciesReference_Modifier_parent_create )
935 {
936 Reaction *r = new Reaction(2, 4);
937 ModifierSpeciesReference *sr = r->createModifier();
938
939 ListOf *lo = r->getListOfModifiers();
940
941 fail_unless(lo == sr->getParentSBMLObject());
942 fail_unless(lo == r->getModifier(0)->getParentSBMLObject());
943 fail_unless(r == lo->getParentSBMLObject());
944
945 delete r;
946 }
947 END_TEST
948
949
START_TEST(test_SpeciesReference_Modifier_parent_create_model)950 START_TEST ( test_SpeciesReference_Modifier_parent_create_model )
951 {
952 Model *m = new Model(2, 4);
953 Reaction *r = m->createReaction();
954 ModifierSpeciesReference *sr = m->createModifier();
955
956 ListOf *lo = r->getListOfModifiers();
957
958 fail_unless(lo == sr->getParentSBMLObject());
959 fail_unless(lo == r->getModifier(0)->getParentSBMLObject());
960 fail_unless(r == lo->getParentSBMLObject());
961
962 delete m;
963 }
964 END_TEST
965
966
START_TEST(test_SpeciesType_parent_create)967 START_TEST ( test_SpeciesType_parent_create )
968 {
969 Model *m = new Model(2, 4);
970 SpeciesType *st = m->createSpeciesType();
971
972 ListOf *lo = m->getListOfSpeciesTypes();
973
974 fail_unless(lo == m->getSpeciesType(0)->getParentSBMLObject());
975 fail_unless(lo == st->getParentSBMLObject());
976 fail_unless(m == lo->getParentSBMLObject());
977
978 delete m;
979 }
980 END_TEST
981
982
START_TEST(test_Unit_parent_create)983 START_TEST ( test_Unit_parent_create )
984 {
985 UnitDefinition* ud = new UnitDefinition(2, 4);
986 Unit * u = ud->createUnit();
987
988 fail_unless(ud->getNumUnits() == 1);
989
990 ListOf *lo = ud->getListOfUnits();
991
992 fail_unless(lo == ud->getUnit(0)->getParentSBMLObject());
993 fail_unless(lo == u->getParentSBMLObject());
994 fail_unless(ud == lo->getParentSBMLObject());
995
996 delete ud;
997 }
998 END_TEST
999
1000
START_TEST(test_Unit_parent_create_model)1001 START_TEST ( test_Unit_parent_create_model )
1002 {
1003 Model *m = new Model(2, 4);
1004 UnitDefinition* ud = m->createUnitDefinition();
1005 Unit * u = m->createUnit();
1006
1007 fail_unless(ud->getNumUnits() == 1);
1008
1009 ListOf *lo = ud->getListOfUnits();
1010
1011 fail_unless(lo == ud->getUnit(0)->getParentSBMLObject());
1012 fail_unless(lo == u->getParentSBMLObject());
1013 fail_unless(ud == lo->getParentSBMLObject());
1014
1015 delete m;
1016 }
1017 END_TEST
1018
1019
START_TEST(test_UnitDefinition_parent_create)1020 START_TEST ( test_UnitDefinition_parent_create )
1021 {
1022 Model *m = new Model(2, 4);
1023 UnitDefinition *ud = m->createUnitDefinition();
1024
1025 ListOf *lo = m->getListOfUnitDefinitions();
1026
1027 fail_unless(lo == m->getUnitDefinition(0)->getParentSBMLObject());
1028 fail_unless(lo == ud->getParentSBMLObject());
1029 fail_unless(m == lo->getParentSBMLObject());
1030
1031 delete m;
1032 }
1033 END_TEST
1034
1035
START_TEST(test_Compartment_parent_NULL)1036 START_TEST ( test_Compartment_parent_NULL )
1037 {
1038 SBMLDocument *d = new SBMLDocument();
1039 Model *m = d->createModel();
1040 Compartment *c = m->createCompartment();
1041
1042 Compartment *c1 = c->clone();
1043 delete d;
1044
1045 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1046 fail_unless(c1->getParentSBMLObject() == NULL);
1047 fail_unless (c1->getSBMLDocument() == NULL);
1048
1049 delete c1;
1050 }
1051 END_TEST
1052
1053
START_TEST(test_CompartmentType_parent_NULL)1054 START_TEST ( test_CompartmentType_parent_NULL )
1055 {
1056 SBMLDocument *d = new SBMLDocument(2, 4);
1057 Model *m = d->createModel();
1058 CompartmentType *c = m->createCompartmentType();
1059
1060 CompartmentType *c1 = c->clone();
1061 delete d;
1062
1063 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1064 fail_unless(c1->getParentSBMLObject() == NULL);
1065 fail_unless (c1->getSBMLDocument() == NULL);
1066
1067 delete c1;
1068 }
1069 END_TEST
1070
1071
START_TEST(test_Constraint_parent_NULL)1072 START_TEST ( test_Constraint_parent_NULL )
1073 {
1074 SBMLDocument *d = new SBMLDocument();
1075 Model *m = d->createModel();
1076 Constraint *c = m->createConstraint();
1077
1078 Constraint *c1 = c->clone();
1079 delete d;
1080
1081 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1082 fail_unless(c1->getParentSBMLObject() == NULL);
1083 fail_unless (c1->getSBMLDocument() == NULL);
1084
1085 delete c1;
1086 }
1087 END_TEST
1088
1089
START_TEST(test_Event_parent_NULL)1090 START_TEST ( test_Event_parent_NULL )
1091 {
1092 SBMLDocument *d = new SBMLDocument(2, 4);
1093 Model *m = d->createModel();
1094 Event *c = m->createEvent();
1095 EventAssignment *ea = c->createEventAssignment();
1096 Trigger *t = new Trigger(2, 4);
1097 ASTNode math;
1098 t->setMath(&math);
1099 Delay *dy = new Delay(2, 4);
1100 dy->setMath(&math);
1101 c->setTrigger(t);
1102 c->setDelay(dy);
1103
1104 fail_unless(c->getAncestorOfType(SBML_MODEL) == m);
1105 fail_unless(c->getTrigger()->getParentSBMLObject() == c);
1106 fail_unless (c->getDelay()->getSBMLDocument() == d);
1107 fail_unless(ea->getAncestorOfType(SBML_EVENT) == c);
1108
1109 Event *c1 = c->clone();
1110 delete d;
1111 delete t;
1112 delete dy;
1113
1114 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1115 fail_unless(c1->getParentSBMLObject() == NULL);
1116 fail_unless (c1->getSBMLDocument() == NULL);
1117
1118 fail_unless(c1->getEventAssignment(0)->getAncestorOfType(SBML_MODEL) == NULL);
1119 fail_unless(c1->getEventAssignment(0)->getAncestorOfType(SBML_EVENT) == c1);
1120 fail_unless(c1->getEventAssignment(0)->getParentSBMLObject() != NULL);
1121 fail_unless(c1->getEventAssignment(0)->getSBMLDocument() == NULL);
1122
1123 fail_unless(c1->getTrigger()->getAncestorOfType(SBML_MODEL) == NULL);
1124 fail_unless(c1->getTrigger()->getAncestorOfType(SBML_EVENT) == c1);
1125 fail_unless(c1->getTrigger()->getParentSBMLObject() != NULL);
1126 fail_unless(c1->getTrigger()->getSBMLDocument() == NULL);
1127
1128 fail_unless(c1->getDelay()->getAncestorOfType(SBML_MODEL) == NULL);
1129 fail_unless(c1->getDelay()->getAncestorOfType(SBML_EVENT) == c1);
1130 fail_unless(c1->getDelay()->getParentSBMLObject() != NULL);
1131 fail_unless(c1->getDelay()->getSBMLDocument() == NULL);
1132
1133 delete c1;
1134 }
1135 END_TEST
1136
1137
START_TEST(test_FunctionDefinition_parent_NULL)1138 START_TEST ( test_FunctionDefinition_parent_NULL )
1139 {
1140 SBMLDocument *d = new SBMLDocument();
1141 Model *m = d->createModel();
1142 FunctionDefinition *c = m->createFunctionDefinition();
1143
1144 FunctionDefinition *c1 = c->clone();
1145 delete d;
1146
1147 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1148 fail_unless(c1->getParentSBMLObject() == NULL);
1149 fail_unless (c1->getSBMLDocument() == NULL);
1150
1151 delete c1;
1152 }
1153 END_TEST
1154
1155
START_TEST(test_InitialAssignment_parent_NULL)1156 START_TEST ( test_InitialAssignment_parent_NULL )
1157 {
1158 SBMLDocument *d = new SBMLDocument();
1159 Model *m = d->createModel();
1160 InitialAssignment *c = m->createInitialAssignment();
1161
1162 InitialAssignment *c1 = c->clone();
1163 delete d;
1164
1165 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1166 fail_unless(c1->getParentSBMLObject() == NULL);
1167 fail_unless (c1->getSBMLDocument() == NULL);
1168
1169 delete c1;
1170 }
1171 END_TEST
1172
1173
START_TEST(test_KineticLaw_parent_NULL)1174 START_TEST ( test_KineticLaw_parent_NULL )
1175 {
1176 Reaction * r = new Reaction(2, 4);
1177 KineticLaw *kl = r->createKineticLaw();
1178 Parameter *p = kl->createParameter();
1179
1180 fail_unless(r == kl->getParentSBMLObject());
1181 fail_unless(r == p->getAncestorOfType(SBML_REACTION));
1182 fail_unless(kl == p->getAncestorOfType(SBML_KINETIC_LAW));
1183
1184 KineticLaw *kl1 = kl->clone();
1185
1186 fail_unless(kl1->getParentSBMLObject() == NULL);
1187 fail_unless(kl1->getParameter(0)->getAncestorOfType(SBML_REACTION) == NULL);
1188 fail_unless(kl1 == kl1->getParameter(0)->getAncestorOfType(SBML_KINETIC_LAW));
1189
1190 delete r;
1191 delete kl1;
1192 }
1193 END_TEST
1194
1195
START_TEST(test_Parameter_parent_NULL)1196 START_TEST ( test_Parameter_parent_NULL )
1197 {
1198 SBMLDocument *d = new SBMLDocument();
1199 Model *m = d->createModel();
1200 Parameter *c = m->createParameter();
1201
1202 Parameter *c1 = c->clone();
1203 delete d;
1204
1205 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1206 fail_unless(c1->getParentSBMLObject() == NULL);
1207 fail_unless (c1->getSBMLDocument() == NULL);
1208
1209 delete c1;
1210 }
1211 END_TEST
1212
1213
START_TEST(test_Reaction_parent_NULL)1214 START_TEST ( test_Reaction_parent_NULL )
1215 {
1216 SBMLDocument *d = new SBMLDocument();
1217 Model *m = d->createModel();
1218 Reaction *c = m->createReaction();
1219 SpeciesReference *sr = c->createReactant();
1220 KineticLaw *kl = c->createKineticLaw();
1221
1222 fail_unless(c->getAncestorOfType(SBML_MODEL) == m);
1223 fail_unless (c->getSBMLDocument() == d);
1224 fail_unless(sr->getAncestorOfType(SBML_REACTION) == c);
1225 fail_unless(kl->getAncestorOfType(SBML_REACTION) == c);
1226
1227 Reaction *c1 = c->clone();
1228 delete d;
1229
1230 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1231 fail_unless(c1->getParentSBMLObject() == NULL);
1232 fail_unless (c1->getSBMLDocument() == NULL);
1233
1234 SpeciesReference *sr1 = c1->getReactant(0);
1235 fail_unless(sr1->getAncestorOfType(SBML_MODEL) == NULL);
1236 fail_unless(sr1->getAncestorOfType(SBML_REACTION) == c1);
1237 fail_unless (sr1->getSBMLDocument() == NULL);
1238
1239 fail_unless(c1->getKineticLaw()->getAncestorOfType(SBML_MODEL) == NULL);
1240 fail_unless(c1->getKineticLaw()->getAncestorOfType(SBML_REACTION) == c1);
1241 fail_unless (c1->getKineticLaw()->getSBMLDocument() == NULL);
1242
1243
1244 delete c1;
1245 }
1246 END_TEST
1247
1248
START_TEST(test_Species_parent_NULL)1249 START_TEST ( test_Species_parent_NULL )
1250 {
1251 SBMLDocument *d = new SBMLDocument();
1252 Model *m = d->createModel();
1253 Species *c = m->createSpecies();
1254
1255 Species *c1 = c->clone();
1256 delete d;
1257
1258 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1259 fail_unless(c1->getParentSBMLObject() == NULL);
1260 fail_unless (c1->getSBMLDocument() == NULL);
1261
1262 delete c1;
1263 }
1264 END_TEST
1265
1266
START_TEST(test_SpeciesType_parent_NULL)1267 START_TEST ( test_SpeciesType_parent_NULL )
1268 {
1269 SBMLDocument *d = new SBMLDocument(2, 4);
1270 Model *m = d->createModel();
1271 SpeciesType *c = m->createSpeciesType();
1272
1273 SpeciesType *c1 = c->clone();
1274 delete d;
1275
1276 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1277 fail_unless(c1->getParentSBMLObject() == NULL);
1278 fail_unless (c1->getSBMLDocument() == NULL);
1279
1280 delete c1;
1281 }
1282 END_TEST
1283
1284
START_TEST(test_UnitDefinition_parent_NULL)1285 START_TEST ( test_UnitDefinition_parent_NULL )
1286 {
1287 SBMLDocument *d = new SBMLDocument();
1288 Model *m = d->createModel();
1289 UnitDefinition *c = m->createUnitDefinition();
1290 Unit *u = c->createUnit();
1291
1292 fail_unless(u->getAncestorOfType(SBML_UNIT_DEFINITION) == c);
1293
1294 UnitDefinition *c1 = c->clone();
1295 delete d;
1296
1297 fail_unless(c1->getAncestorOfType(SBML_MODEL) == NULL);
1298 fail_unless(c1->getParentSBMLObject() == NULL);
1299 fail_unless (c1->getSBMLDocument() == NULL);
1300
1301 fail_unless(c1->getUnit(0)->getAncestorOfType(SBML_UNIT_DEFINITION) == c1);
1302 fail_unless(c1->getUnit(0)->getParentSBMLObject() != NULL);
1303 fail_unless (c1->getUnit(0)->getSBMLDocument() == NULL);
1304
1305 delete c1;
1306 }
1307 END_TEST
1308
1309
START_TEST(test_Compartment_parent_mismatch)1310 START_TEST ( test_Compartment_parent_mismatch )
1311 {
1312 Compartment *c = new Compartment(2, 3);
1313 c->setId("c");
1314 Model *m = new Model(2, 4);
1315
1316 int success = m->addCompartment(c);
1317
1318 fail_unless(success == LIBSBML_VERSION_MISMATCH);
1319
1320 delete c;
1321 delete m;
1322 }
1323 END_TEST
1324
1325
START_TEST(test_CompartmentType_parent_mismatch)1326 START_TEST ( test_CompartmentType_parent_mismatch )
1327 {
1328 CompartmentType *ct = new CompartmentType(2, 4);
1329 Model *m = new Model(3, 1);
1330 ct->setId("ct");
1331
1332 int success = m->addCompartmentType(ct);
1333
1334 fail_unless(success == LIBSBML_LEVEL_MISMATCH);
1335
1336 delete ct;
1337 delete m;
1338 }
1339 END_TEST
1340
1341
START_TEST(test_Constraint_parent_mismatch)1342 START_TEST ( test_Constraint_parent_mismatch )
1343 {
1344 Constraint *ct = NULL;
1345 Model *m = new Model(2, 4);
1346
1347 int success = m->addConstraint(ct);
1348
1349 fail_unless(success == LIBSBML_OPERATION_FAILED);
1350
1351 delete ct;
1352 delete m;
1353 }
1354 END_TEST
1355
1356
START_TEST(test_Delay_parent_mismatch)1357 START_TEST ( test_Delay_parent_mismatch )
1358 {
1359 Event *e = new Event(3, 1);
1360 Delay *d = NULL;
1361
1362 int success = e->setDelay(d);
1363
1364 fail_unless(success == LIBSBML_OPERATION_SUCCESS);
1365
1366 delete e;
1367 delete d;
1368 }
1369 END_TEST
1370
1371
START_TEST(test_Event_parent_mismatch)1372 START_TEST ( test_Event_parent_mismatch )
1373 {
1374 Event *e = new Event(3, 1);
1375 Model *m = new Model(3, 1);
1376
1377 int success = m->addEvent(e);
1378
1379 fail_unless(success == LIBSBML_INVALID_OBJECT);
1380
1381 delete e;
1382 delete m;
1383 }
1384 END_TEST
1385
1386
START_TEST(test_EventAssignment_parent_mismatch)1387 START_TEST ( test_EventAssignment_parent_mismatch )
1388 {
1389 SBMLNamespaces sbmlns(3, 1);
1390 Event *e = new Event(&sbmlns);
1391 //sbmlns->addPackageNamespace("comp", 1);
1392 sbmlns.addNamespace("http://www.sbml.org/sbml/level3/version1/comp/version1", "comp");
1393 EventAssignment *ea = new EventAssignment(&sbmlns);
1394 ea->setVariable("c");
1395 ASTNode_t* math = SBML_parseFormula("K+L");
1396 ea->setMath(math);
1397 ASTNode_free(math);
1398
1399 int success = e->addEventAssignment(ea);
1400
1401 fail_unless(success == LIBSBML_NAMESPACES_MISMATCH);
1402
1403 delete e;
1404 delete ea;
1405 }
1406 END_TEST
1407
1408
START_TEST(test_KineticLaw_parent_mismatch)1409 START_TEST ( test_KineticLaw_parent_mismatch )
1410 {
1411 KineticLaw* kl=new KineticLaw(2, 3);
1412 ASTNode_t* math = SBML_parseFormula("true");
1413 kl->setMath(math);
1414 ASTNode_free(math);
1415
1416 Reaction * r = new Reaction(2, 4);
1417
1418 int success = r->setKineticLaw(kl);
1419
1420 fail_unless(success == LIBSBML_VERSION_MISMATCH);
1421
1422 delete r;
1423 delete kl;
1424 }
1425 END_TEST
1426
1427
START_TEST(test_Model_parent_mismatch)1428 START_TEST ( test_Model_parent_mismatch )
1429 {
1430 SBMLNamespaces sbmlns(3, 1);
1431 SBMLDocument *d = new SBMLDocument(&sbmlns);
1432 //sbmlns->addPackageNamespace("comp", 1);
1433 sbmlns.addNamespace("http://www.sbml.org/sbml/level3/version1/comp/version1", "comp");
1434 Model *m = new Model(&sbmlns);
1435
1436 int success = d->setModel(m);
1437
1438 fail_unless(success == LIBSBML_NAMESPACES_MISMATCH);
1439
1440 delete d;
1441 delete m;
1442 }
1443 END_TEST
1444
1445
START_TEST(test_StoichiometryMath_parent_mismatch)1446 START_TEST ( test_StoichiometryMath_parent_mismatch )
1447 {
1448 StoichiometryMath *m = new StoichiometryMath(2, 4);
1449 SpeciesReference *sr = new SpeciesReference(2, 4);
1450
1451 int success = sr->setStoichiometryMath(m);
1452
1453 fail_unless(success == LIBSBML_INVALID_OBJECT);
1454
1455 delete sr;
1456 delete m;
1457 }
1458 END_TEST
1459
1460
START_TEST(test_Priority_parent_mismatch)1461 START_TEST ( test_Priority_parent_mismatch )
1462 {
1463 Event *e = new Event(3, 1);
1464 Priority *p= new Priority(3, 1);
1465 ASTNode_t* math = SBML_parseFormula("K+L");
1466 p->setMath(math);
1467 ASTNode_free(math);
1468
1469 int success = e->setPriority(p);
1470
1471 fail_unless(success == LIBSBML_OPERATION_SUCCESS);
1472
1473 success = e->setPriority(e->getPriority());
1474
1475 fail_unless(success == LIBSBML_OPERATION_SUCCESS);
1476
1477 delete e;
1478 delete p;
1479 }
1480 END_TEST
1481
1482
START_TEST(test_Trigger_parent_mismatch)1483 START_TEST ( test_Trigger_parent_mismatch )
1484 {
1485 Event *e = new Event(3, 1);
1486 Trigger *t= new Trigger(2, 4);
1487 ASTNode_t* math = SBML_parseFormula("true");
1488 t->setMath(math);
1489 ASTNode_free(math);
1490
1491 int success = e->setTrigger(t);
1492
1493 fail_unless(success == LIBSBML_LEVEL_MISMATCH);
1494
1495 delete e;
1496 delete t;
1497 }
1498 END_TEST
1499
1500
1501 Suite *
create_suite_ParentObject(void)1502 create_suite_ParentObject (void)
1503 {
1504 Suite *suite = suite_create("ParentObject");
1505 TCase *tcase = tcase_create("ParentObject");
1506
1507 tcase_add_test( tcase, test_Compartment_parent_add );
1508 tcase_add_test( tcase, test_CompartmentType_parent_add );
1509 tcase_add_test( tcase, test_Constraint_parent_add );
1510 tcase_add_test( tcase, test_Delay_parent_add );
1511 tcase_add_test( tcase, test_Event_parent_add );
1512 tcase_add_test( tcase, test_EventAssignment_parent_add );
1513 tcase_add_test( tcase, test_FunctionDefinition_parent_add );
1514 tcase_add_test( tcase, test_InitialAssignment_parent_add );
1515 tcase_add_test( tcase, test_KineticLaw_parent_add );
1516 tcase_add_test( tcase, test_KineticLaw_Parameter_parent_add );
1517 tcase_add_test( tcase, test_Model_parent_add );
1518 tcase_add_test( tcase, test_Parameter_parent_add );
1519 tcase_add_test( tcase, test_Reaction_parent_add );
1520 tcase_add_test( tcase, test_Rule_parent_add );
1521 tcase_add_test( tcase, test_Species_parent_add );
1522 tcase_add_test( tcase, test_SpeciesReference_Product_parent_add );
1523 tcase_add_test( tcase, test_SpeciesReference_Reactant_parent_add );
1524 tcase_add_test( tcase, test_SpeciesReference_Modifier_parent_add );
1525 tcase_add_test( tcase, test_SpeciesType_parent_add );
1526 tcase_add_test( tcase, test_StoichiometryMath_parent_add );
1527 tcase_add_test( tcase, test_Trigger_parent_add );
1528 tcase_add_test( tcase, test_Unit_parent_add );
1529 tcase_add_test( tcase, test_UnitDefinition_parent_add );
1530 tcase_add_test( tcase, test_Compartment_parent_create );
1531 tcase_add_test( tcase, test_CompartmentType_parent_create );
1532 tcase_add_test( tcase, test_Constraint_parent_create );
1533 tcase_add_test( tcase, test_Event_parent_create );
1534 tcase_add_test( tcase, test_EventAssignment_parent_create );
1535 tcase_add_test( tcase, test_EventAssignment_parent_create_model );
1536 tcase_add_test( tcase, test_FunctionDefinition_parent_create );
1537 tcase_add_test( tcase, test_InitialAssignment_parent_create );
1538 tcase_add_test( tcase, test_KineticLaw_parent_create );
1539 tcase_add_test( tcase, test_KineticLaw_parent_create_model );
1540 tcase_add_test( tcase, test_KineticLaw_Parameter_parent_create );
1541 tcase_add_test( tcase, test_KineticLaw_Parameter_parent_create_model );
1542 tcase_add_test( tcase, test_Model_parent_create );
1543 tcase_add_test( tcase, test_Parameter_parent_create );
1544 tcase_add_test( tcase, test_Reaction_parent_create );
1545 tcase_add_test( tcase, test_AlgebraicRule_parent_create );
1546 tcase_add_test( tcase, test_AssignmentRule_parent_create );
1547 tcase_add_test( tcase, test_RateRule_parent_create );
1548 tcase_add_test( tcase, test_Species_parent_create );
1549 tcase_add_test( tcase, test_SpeciesReference_Product_parent_create );
1550 tcase_add_test( tcase, test_SpeciesReference_Product_parent_create_model );
1551 tcase_add_test( tcase, test_SpeciesReference_Reactant_parent_create );
1552 tcase_add_test( tcase, test_SpeciesReference_Reactant_parent_create_model );
1553 tcase_add_test( tcase, test_SpeciesReference_Modifier_parent_create );
1554 tcase_add_test( tcase, test_SpeciesReference_Modifier_parent_create_model );
1555 tcase_add_test( tcase, test_SpeciesType_parent_create );
1556 tcase_add_test( tcase, test_Unit_parent_create );
1557 tcase_add_test( tcase, test_Unit_parent_create_model );
1558 tcase_add_test( tcase, test_UnitDefinition_parent_create );
1559 tcase_add_test( tcase, test_Compartment_parent_NULL );
1560 tcase_add_test( tcase, test_CompartmentType_parent_NULL );
1561 tcase_add_test( tcase, test_Constraint_parent_NULL );
1562 tcase_add_test( tcase, test_Event_parent_NULL );
1563 tcase_add_test( tcase, test_FunctionDefinition_parent_NULL );
1564 tcase_add_test( tcase, test_InitialAssignment_parent_NULL );
1565 tcase_add_test( tcase, test_KineticLaw_parent_NULL );
1566 tcase_add_test( tcase, test_Parameter_parent_NULL );
1567 tcase_add_test( tcase, test_Reaction_parent_NULL );
1568 tcase_add_test( tcase, test_Species_parent_NULL );
1569 tcase_add_test( tcase, test_SpeciesType_parent_NULL );
1570 tcase_add_test( tcase, test_UnitDefinition_parent_NULL );
1571 tcase_add_test( tcase, test_Compartment_parent_mismatch );
1572 tcase_add_test( tcase, test_CompartmentType_parent_mismatch );
1573 tcase_add_test( tcase, test_Constraint_parent_mismatch );
1574 tcase_add_test( tcase, test_Delay_parent_mismatch );
1575 tcase_add_test( tcase, test_Event_parent_mismatch );
1576 tcase_add_test( tcase, test_EventAssignment_parent_mismatch );
1577 tcase_add_test( tcase, test_KineticLaw_parent_mismatch );
1578 tcase_add_test( tcase, test_Model_parent_mismatch );
1579 tcase_add_test( tcase, test_StoichiometryMath_parent_mismatch );
1580 tcase_add_test( tcase, test_Priority_parent_mismatch );
1581 tcase_add_test( tcase, test_Trigger_parent_mismatch );
1582
1583 suite_add_tcase(suite, tcase);
1584
1585 return suite;
1586 }
1587
1588 END_C_DECLS
1589
1590