1function y = testIsSBMLModel(silent, FbcEnabled)
2
3  fail = 0;
4  test = 0;
5
6  m = TranslateSBML('test-data/l1v2-all.xml');
7
8  test = test + 1;
9  [pass, message] = isSBML_Model(m);
10  if (pass == 0)
11      fail = fail + 1;
12      disp('l1v2-all Model failed');
13      disp(message);
14  end;
15  test = test + 1;
16  [pass, message] = isSBML_Model(m, 0);
17  if (pass == 0)
18      fail = fail + 1;
19      disp('l1v2-all Model exclusive failed:');
20      disp(message);
21  end;
22
23
24  m.unitDefinition(1).unit(1).extra = 'extra';
25
26  test = test + 1;
27  [pass, message] = isSBML_Model(m);
28  if (pass == 0)
29      fail = fail + 1;
30      disp('l1v2-all unit extra failed');
31      disp(message);
32  end;
33
34  test = test + 1;
35  [pass, message] = isSBML_Model(m, 0);
36  if (pass == 1)
37      fail = fail + 1;
38      disp('l1v2-all unit extra exclusive failed');
39      disp(message);
40  end;
41
42  m = TranslateSBML('test-data/l1v2-all.xml');
43  m.rule(1).extra = 'extra';
44
45  test = test + 1;
46  [pass, message] = isSBML_Model(m);
47  if (pass == 0)
48      fail = fail + 1;
49      disp('l1v2-all algebraicRule extra failed');
50      disp(message);
51  end;
52  test = test + 1;
53  [pass, message] = isSBML_Model(m, 0);
54  if (pass == 1)
55      fail = fail + 1;
56      disp('l1v2-all algebraicRule extra exclusive failed');
57      disp(message);
58  end;
59
60  m = TranslateSBML('test-data/l1v2-all.xml');
61  m.rule(2).extra = 'extra';
62
63  test = test + 1;
64  [pass, message] = isSBML_Model(m);
65  if (pass == 0)
66      fail = fail + 1;
67      disp('l1v2-all species conc rule extra failed');
68      disp(message);
69  end;
70  test = test + 1;
71  [pass, message] = isSBML_Model(m, 0);
72  if (pass == 1)
73      fail = fail + 1;
74      disp('l1v2-all species conc rule extra exclusive failed');
75      disp(message);
76  end;
77
78  m = TranslateSBML('test-data/l1v2-all.xml');
79  m.rule(3).extra = 'extra';
80
81  test = test + 1;
82  [pass, message] = isSBML_Model(m);
83  if (pass == 0)
84      fail = fail + 1;
85      disp('l1v2-all comp vol rule extra failed');
86      disp(message);
87  end;
88  test = test + 1;
89  [pass, message] = isSBML_Model(m, 0);
90  if (pass == 1)
91      fail = fail + 1;
92      disp('l1v2-all comp vol rule extra exclusive failed');
93      disp(message);
94  end;
95
96  m = TranslateSBML('test-data/l1v2-all.xml');
97  m.rule(4).extra = 'extra';
98
99  test = test + 1;
100  [pass, message] = isSBML_Model(m);
101  if (pass == 0)
102      fail = fail + 1;
103      disp('l1v2-all param rule extra failed');
104      disp(message);
105  end;
106  test = test + 1;
107  [pass, message] = isSBML_Model(m, 0);
108  if (pass == 1)
109      fail = fail + 1;
110      disp('l1v2-all param rule extra exclusive failed');
111      disp(message);
112  end;
113  test = test + 1;
114  [pass, message] = isSBML_Model(m, 1, 1);
115  if (pass == 0)
116      fail = fail + 1;
117      disp('l1v2-all param rule user defined failed');
118      disp(message);
119  end;
120
121  m = TranslateSBML('test-data/l1v2-all.xml');
122  m.unitDefinition(1).extra = 'extra';
123
124  test = test + 1;
125  [pass, message] = isSBML_Model(m);
126  if (pass == 0)
127      fail = fail + 1;
128      disp('l1v2-all unitDefinition extra failed');
129      disp(message);
130  end;
131  test = test + 1;
132  [pass, message] = isSBML_Model(m, 0);
133  if (pass == 1)
134      fail = fail + 1;
135      disp('l1v2-all unitDefinition extra exclusive failed');
136      disp(message);
137  end;
138
139  m = TranslateSBML('test-data/l2v1-all.xml');
140
141  test = test + 1;
142  [pass, message] = isSBML_Model(m);
143  if (pass == 0)
144      fail = fail + 1;
145      disp('l2v1-all Model failed');
146      disp(message);
147  end;
148  test = test + 1;
149  [pass, message] = isSBML_Model(m, 0);
150  if (pass == 0)
151      fail = fail + 1;
152      disp('l2v1-all Model exclusive failed:');
153      disp(message);
154  end;
155
156
157  m.functionDefinition(1).extra = 'extra';
158
159    test = test + 1;
160  [pass, message] = isSBML_Model(m);
161  if (pass == 0)
162      fail = fail + 1;
163      disp('l2v1-all functionDefinition extra failed');
164      disp(message);
165  end;
166
167  test = test + 1;
168  [pass, message] = isSBML_Model(m, 0);
169  if (pass == 1)
170      fail = fail + 1;
171      disp('l2v1-all functionDefinition extra exclusive failed');
172      disp(message);
173  end;
174
175  m = TranslateSBML('test-data/l2v1-all.xml');
176  m.compartment(1).extra = 'extra';
177
178  test = test + 1;
179  [pass, message] = isSBML_Model(m);
180  if (pass == 0)
181      fail = fail + 1;
182      disp('l2v1-all compartment extra failed');
183      disp(message);
184  end;
185  test = test + 1;
186  [pass, message] = isSBML_Model(m, 0);
187  if (pass == 1)
188      fail = fail + 1;
189      disp('l2v1-all compartment extra exclusive failed');
190      disp(message);
191  end;
192
193  m = TranslateSBML('test-data/l2v1-all.xml');
194  m.species(1).extra = 'extra';
195
196  test = test + 1;
197  [pass, message] = isSBML_Model(m);
198  if (pass == 0)
199      fail = fail + 1;
200      disp('l2v1-all species extra failed');
201      disp(message);
202  end;
203  test = test + 1;
204  [pass, message] = isSBML_Model(m, 0);
205  if (pass == 1)
206      fail = fail + 1;
207      disp('l2v1-all species extra exclusive failed');
208      disp(message);
209  end;
210
211  m = TranslateSBML('test-data/l2v1-all.xml');
212  m.parameter(1).extra = 'extra';
213
214  test = test + 1;
215  [pass, message] = isSBML_Model(m);
216  if (pass == 0)
217      fail = fail + 1;
218      disp('l2v1-all parameter extra failed');
219      disp(message);
220  end;
221  test = test + 1;
222  [pass, message] = isSBML_Model(m, 0);
223  if (pass == 1)
224      fail = fail + 1;
225      disp('l2v1-all parameter extra exclusive failed');
226      disp(message);
227  end;
228
229  m = TranslateSBML('test-data/l2v1-all.xml');
230  m.rule(1).extra = 'extra';
231
232  test = test + 1;
233  [pass, message] = isSBML_Model(m);
234  if (pass == 0)
235      fail = fail + 1;
236      disp('l2v1-all algebraicRule extra failed');
237      disp(message);
238  end;
239  test = test + 1;
240  [pass, message] = isSBML_Model(m, 0);
241  if (pass == 1)
242      fail = fail + 1;
243      disp('l2v1-all algebraicRule extra exclusive failed');
244      disp(message);
245  end;
246
247  m = TranslateSBML('test-data/l2v1-all.xml');
248  m.rule(2).extra = 'extra';
249
250  test = test + 1;
251  [pass, message] = isSBML_Model(m);
252  if (pass == 0)
253      fail = fail + 1;
254      disp('l2v1-all assignmentRule extra failed');
255      disp(message);
256  end;
257  test = test + 1;
258  [pass, message] = isSBML_Model(m, 0);
259  if (pass == 1)
260      fail = fail + 1;
261      disp('l2v1-all assignmentRule extra exclusive failed');
262      disp(message);
263  end;
264
265  m = TranslateSBML('test-data/l2v1-all.xml');
266  m.rule(3).extra = 'extra';
267
268  test = test + 1;
269  [pass, message] = isSBML_Model(m);
270  if (pass == 0)
271      fail = fail + 1;
272      disp('l2v1-all rateRule extra failed');
273      disp(message);
274  end;
275  test = test + 1;
276  [pass, message] = isSBML_Model(m, 0);
277  if (pass == 1)
278      fail = fail + 1;
279      disp('l2v1-all rateRule extra exclusive failed');
280      disp(message);
281  end;
282
283  m = TranslateSBML('test-data/l2v1-all.xml');
284  m.reaction(1).extra = 'extra';
285
286  test = test + 1;
287  [pass, message] = isSBML_Model(m);
288  if (pass == 0)
289      fail = fail + 1;
290      disp('l2v1-all reaction extra failed');
291      disp(message);
292  end;
293  test = test + 1;
294  [pass, message] = isSBML_Model(m, 0);
295  if (pass == 1)
296      fail = fail + 1;
297      disp('l2v1-all reaction extra exclusive failed');
298      disp(message);
299  end;
300
301
302  m = TranslateSBML('test-data/l2v1-all.xml');
303  m.event(1).extra = 'extra';
304
305  test = test + 1;
306  [pass, message] = isSBML_Model(m);
307  if (pass == 0)
308      fail = fail + 1;
309      disp('l2v1-all event extra failed');
310      disp(message);
311  end;
312  test = test + 1;
313  [pass, message] = isSBML_Model(m, 0);
314  if (pass == 1)
315      fail = fail + 1;
316      disp('l2v1-all event extra exclusive failed');
317      disp(message);
318  end;
319
320  m = TranslateSBML('test-data/l2v2-newComponents.xml');
321
322  test = test + 1;
323  [pass, message] = isSBML_Model(m);
324  if (pass == 0)
325      fail = fail + 1;
326      disp('l2v2-newComponents Model failed');
327      disp(message);
328  end;
329  test = test + 1;
330  [pass, message] = isSBML_Model(m, 0);
331  if (pass == 0)
332      fail = fail + 1;
333      disp('l2v2-newComponents Model exclusive failed:');
334      disp(message);
335  end;
336
337
338  m.compartmentType(1).extra = 'extra';
339
340  test = test + 1;
341  [pass, message] = isSBML_Model(m);
342  if (pass == 0)
343      fail = fail + 1;
344      disp('l2v2-newComponents compartmentType extra failed');
345      disp(message);
346  end;
347
348  test = test + 1;
349  [pass, message] = isSBML_Model(m, 0);
350  if (pass == 1)
351      fail = fail + 1;
352      disp('l2v2-newComponents compartmentType extra exclusive failed');
353      disp(message);
354  end;
355
356  m = TranslateSBML('test-data/l2v2-newComponents.xml');
357  m.speciesType(1).extra = 'extra';
358
359  test = test + 1;
360  [pass, message] = isSBML_Model(m);
361  if (pass == 0)
362      fail = fail + 1;
363      disp('l2v2-newComponents speciesType extra failed');
364      disp(message);
365  end;
366  test = test + 1;
367  [pass, message] = isSBML_Model(m, 0);
368  if (pass == 1)
369      fail = fail + 1;
370      disp('l2v2-newComponents speciesType extra exclusive failed');
371      disp(message);
372  end;
373
374  m = TranslateSBML('test-data/l2v2-newComponents.xml');
375  m.initialAssignment(1).extra = 'extra';
376
377  test = test + 1;
378  [pass, message] = isSBML_Model(m);
379  if (pass == 0)
380      fail = fail + 1;
381      disp('l2v2-newComponents initialAssignment extra failed');
382      disp(message);
383  end;
384  test = test + 1;
385  [pass, message] = isSBML_Model(m, 0);
386  if (pass == 1)
387      fail = fail + 1;
388      disp('l2v2-newComponents initialAssignment extra exclusive failed');
389      disp(message);
390  end;
391
392
393  m = TranslateSBML('test-data/l2v2-newComponents.xml');
394  m.constraint(1).extra = 'extra';
395
396  test = test + 1;
397  [pass, message] = isSBML_Model(m);
398  if (pass == 0)
399      fail = fail + 1;
400      disp('l2v2-newComponents constraint extra failed');
401      disp(message);
402  end;
403  test = test + 1;
404  [pass, message] = isSBML_Model(m, 0);
405  if (pass == 1)
406      fail = fail + 1;
407      disp('l2v2-newComponents constraint extra exclusive failed');
408      disp(message);
409  end;
410
411  m = TranslateSBML('test-data/l2v2-newComponents.xml');
412  m.reaction(1).reactant(1).extra = 'extra';
413
414  test = test + 1;
415  [pass, message] = isSBML_Model(m);
416  if (pass == 0)
417      fail = fail + 1;
418      disp('l2v2-newComponents reactant extra failed');
419      disp(message);
420  end;
421  test = test + 1;
422  [pass, message] = isSBML_Model(m, 0);
423  if (pass == 1)
424      fail = fail + 1;
425      disp('l2v2-newComponents reactant extra exclusive failed');
426      disp(message);
427  end;
428
429  m = TranslateSBML('test-data/l2v2-newComponents.xml');
430  m.reaction(1).kineticLaw.extra = 'extra';
431
432  test = test + 1;
433  [pass, message] = isSBML_Model(m);
434  if (pass == 0)
435      fail = fail + 1;
436      disp('l2v2-newComponents kineticLaw extra failed');
437      disp(message);
438  end;
439  test = test + 1;
440  [pass, message] = isSBML_Model(m, 0);
441  if (pass == 1)
442      fail = fail + 1;
443      disp('l2v2-newComponents kineticLaw extra exclusive failed');
444      disp(message);
445  end;
446
447  m = TranslateSBML('test-data/l2v2-newComponents.xml');
448  m.reaction(1).kineticLaw.parameter(1).extra = 'extra';
449
450  test = test + 1;
451  [pass, message] = isSBML_Model(m);
452  if (pass == 0)
453      fail = fail + 1;
454      disp('l2v2-newComponents local parameter extra failed');
455      disp(message);
456  end;
457  test = test + 1;
458  [pass, message] = isSBML_Model(m, 0);
459  if (pass == 1)
460      fail = fail + 1;
461      disp('l2v2-newComponents local parameter extra exclusive failed');
462      disp(message);
463  end;
464
465  m = TranslateSBML('test-data/l2v3-all.xml');
466
467  test = test + 1;
468  [pass, message] = isSBML_Model(m);
469  if (pass == 0)
470      fail = fail + 1;
471      disp('l2v3-all Model failed');
472      disp(message);
473  end;
474  test = test + 1;
475  [pass, message] = isSBML_Model(m, 0);
476  if (pass == 0)
477      fail = fail + 1;
478      disp('l2v3-all Model exclusive failed:');
479      disp(message);
480  end;
481
482
483  m.reaction(1).reactant(1).stochiometryMath.extra = 'extra';
484
485  test = test + 1;
486  [pass, message] = isSBML_Model(m);
487  if (pass == 0)
488      fail = fail + 1;
489      disp('l2v3-all stochiometryMath extra failed');
490      disp(message);
491  end;
492
493  test = test + 1;
494  [pass, message] = isSBML_Model(m, 0);
495  if (pass == 1)
496      fail = fail + 1;
497      disp('l2v3-all stochiometryMath extra exclusive failed');
498      disp(message);
499  end;
500
501  m = TranslateSBML('test-data/l2v3-all.xml');
502  m.event(1).trigger.extra = 'extra';
503
504  test = test + 1;
505  [pass, message] = isSBML_Model(m);
506  if (pass == 0)
507      fail = fail + 1;
508      disp('l2v3-all trigger extra failed');
509      disp(message);
510  end;
511  test = test + 1;
512  [pass, message] = isSBML_Model(m, 0);
513  if (pass == 1)
514      fail = fail + 1;
515      disp('l2v3-all trigger extra exclusive failed');
516      disp(message);
517  end;
518
519  m = TranslateSBML('test-data/l2v3-all.xml');
520  m.event(1).eventAssignment(1).extra = 'extra';
521
522  test = test + 1;
523  [pass, message] = isSBML_Model(m);
524  if (pass == 0)
525      fail = fail + 1;
526      disp('l2v3-all eventAssignment extra failed');
527      disp(message);
528  end;
529  test = test + 1;
530  [pass, message] = isSBML_Model(m, 0);
531  if (pass == 1)
532      fail = fail + 1;
533      disp('l2v3-all eventAssignment extra exclusive failed');
534      disp(message);
535  end;
536
537
538  m = TranslateSBML('test-data/l2v5-all.xml');
539
540  test = test + 1;
541  [pass, message] = isSBML_Model(m);
542  if (pass == 0)
543      fail = fail + 1;
544      disp('l2v5-all Model failed');
545      disp(message);
546  end;
547  test = test + 1;
548  [pass, message] = isSBML_Model(m, 0);
549  if (pass == 0)
550      fail = fail + 1;
551      disp('l2v5-all Model exclusive failed:');
552      disp(message);
553  end;
554
555
556  m.reaction(1).reactant(1).stochiometryMath.extra = 'extra';
557
558  test = test + 1;
559  [pass, message] = isSBML_Model(m);
560  if (pass == 0)
561      fail = fail + 1;
562      disp('l2v5-all stochiometryMath extra failed');
563      disp(message);
564  end;
565
566  test = test + 1;
567  [pass, message] = isSBML_Model(m, 0);
568  if (pass == 1)
569      fail = fail + 1;
570      disp('l2v5-all stochiometryMath extra exclusive failed');
571      disp(message);
572  end;
573
574  m = TranslateSBML('test-data/l2v5-all.xml');
575  m.event(1).trigger.extra = 'extra';
576
577  test = test + 1;
578  [pass, message] = isSBML_Model(m);
579  if (pass == 0)
580      fail = fail + 1;
581      disp('l2v5-all trigger extra failed');
582      disp(message);
583  end;
584  test = test + 1;
585  [pass, message] = isSBML_Model(m, 0);
586  if (pass == 1)
587      fail = fail + 1;
588      disp('l2v5-all trigger extra exclusive failed');
589      disp(message);
590  end;
591
592  m = TranslateSBML('test-data/l2v5-all.xml');
593  m.event(1).eventAssignment(1).extra = 'extra';
594
595  test = test + 1;
596  [pass, message] = isSBML_Model(m);
597  if (pass == 0)
598      fail = fail + 1;
599      disp('l2v5-all eventAssignment extra failed');
600      disp(message);
601  end;
602  test = test + 1;
603  [pass, message] = isSBML_Model(m, 0);
604  if (pass == 1)
605      fail = fail + 1;
606      disp('l2v5-all eventAssignment extra exclusive failed');
607      disp(message);
608  end;
609
610
611  m = TranslateSBML('test-data/l3v1core.xml');
612
613  test = test + 1;
614  [pass, message] = isSBML_Model(m);
615  if (pass == 0)
616      fail = fail + 1;
617      disp('l3v1core Model failed');
618      disp(message);
619  end;
620  test = test + 1;
621  [pass, message] = isSBML_Model(m, 0);
622  if (pass == 0)
623      fail = fail + 1;
624      disp('l3v1core Model exclusive failed:');
625      disp(message);
626  end;
627
628
629  m.reaction(1).kineticLaw(1).localParameter(1).extra = 'extra';
630
631  test = test + 1;
632  [pass, message] = isSBML_Model(m);
633  if (pass == 0)
634      fail = fail + 1;
635      disp('l3v1core localParameter extra failed');
636      disp(message);
637  end;
638
639  test = test + 1;
640  [pass, message] = isSBML_Model(m, 0);
641  if (pass == 1)
642      fail = fail + 1;
643      disp('l3v1core localParameter extra exclusive failed');
644      disp(message);
645  end;
646
647  m = TranslateSBML('test-data/l3v1core.xml');
648  m.event(1).delay.extra = 'extra';
649
650  test = test + 1;
651  [pass, message] = isSBML_Model(m);
652  if (pass == 0)
653      fail = fail + 1;
654      disp('l3v1core delay extra failed');
655      disp(message);
656  end;
657  test = test + 1;
658  [pass, message] = isSBML_Model(m, 0);
659  if (pass == 1)
660      fail = fail + 1;
661      disp('l3v1core delay extra exclusive failed');
662      disp(message);
663  end;
664
665  m = TranslateSBML('test-data/l3v1core.xml');
666  m.event(1).priority.extra = 'extra';
667
668  test = test + 1;
669  [pass, message] = isSBML_Model(m);
670  if (pass == 0)
671      fail = fail + 1;
672      disp('l3v1core priority extra failed');
673      disp(message);
674  end;
675  test = test + 1;
676  [pass, message] = isSBML_Model(m, 0);
677  if (pass == 1)
678      fail = fail + 1;
679      disp('l3v1core priority extra exclusive failed');
680      disp(message);
681  end;
682
683
684 if (FbcEnabled == 1)
685  m = TranslateSBML('test-data/fbc.xml');
686
687  test = test + 1;
688  [pass, message] = isSBML_Model(m);
689  if (pass == 0)
690      fail = fail + 1;
691      disp('fbc Model failed');
692      disp(message);
693  end;
694  test = test + 1;
695  [pass, message] = isSBML_Model(m, 0);
696  if (pass == 0)
697      fail = fail + 1;
698      disp('fbc Model exclusive failed:');
699      disp(message);
700  end;
701
702  m = TranslateSBML('test-data/fbc.xml');
703  m.compartment(1).extra = 'extra';
704
705  test = test + 1;
706  [pass, message] = isSBML_Model(m);
707  if (pass == 0)
708      fail = fail + 1;
709      disp('fbc core extra failed');
710      disp(message);
711  end;
712  test = test + 1;
713  [pass, message] = isSBML_Model(m, 0);
714  if (pass == 1)
715      fail = fail + 1;
716      disp('fbc core extra exclusive failed:');
717      disp(message);
718  end;
719
720  m = TranslateSBML('test-data/fbc.xml');
721  m.fbc_fluxBound(1).extra = 'extra';
722
723  test = test + 1;
724  [pass, message] = isSBML_Model(m);
725  if (pass == 0)
726      fail = fail + 1;
727      disp('fbc fluxbound extra failed');
728      disp(message);
729  end;
730  test = test + 1;
731  [pass, message] = isSBML_Model(m, 0);
732  if (pass == 1)
733      fail = fail + 1;
734      disp('fbc fluxbound extra exclusive failed:');
735      disp(message);
736  end;
737
738  m = TranslateSBML('test-data/fbc.xml');
739  m.fbc_objective(1).extra = 'extra';
740
741  test = test + 1;
742  [pass, message] = isSBML_Model(m);
743  if (pass == 0)
744      fail = fail + 1;
745      disp('fbc objective extra failed');
746      disp(message);
747  end;
748  test = test + 1;
749  [pass, message] = isSBML_Model(m, 0);
750  if (pass == 1)
751      fail = fail + 1;
752      disp('fbc objective extra exclusive failed:');
753      disp(message);
754  end;
755
756  m = TranslateSBML('test-data/fbc.xml');
757  m.fbc_objective(1).fbc_fluxObjective(1).extra = 'extra';
758
759  test = test + 1;
760  [pass, message] = isSBML_Model(m);
761  if (pass == 0)
762      fail = fail + 1;
763      disp('fbc fluxObjective extra failed');
764      disp(message);
765  end;
766  test = test + 1;
767  [pass, message] = isSBML_Model(m, 0);
768  if (pass == 1)
769      fail = fail + 1;
770      disp('fbc fluxObjective extra exclusive failed:');
771      disp(message);
772  end;
773
774  m = TranslateSBML('test-data/fbc.xml');
775  m.species(1).extra = 'extra';
776
777  test = test + 1;
778  [pass, message] = isSBML_Model(m);
779  if (pass == 0)
780      fail = fail + 1;
781      disp('fbc species extra failed');
782      disp(message);
783  end;
784  test = test + 1;
785  [pass, message] = isSBML_Model(m, 0);
786  if (pass == 1)
787      fail = fail + 1;
788      disp('fbc species extra exclusive failed:');
789      disp(message);
790  end;
791
792  m = TranslateSBML('test-data/fbc.xml');
793  m.fbc_version = '';
794
795  test = test + 1;
796  [pass, message] = isSBML_Model(m);
797  if (pass == 1)
798      fail = fail + 1;
799      disp('fbc missing version should fail');
800      disp(message);
801  end;
802  test = test + 1;
803
804  m = TranslateSBML('test-data/fbcV2.xml');
805
806  test = test + 1;
807  [pass, message] = isSBML_Model(m);
808  if (pass == 0)
809      fail = fail + 1;
810      disp('fbc Model failed');
811      disp(message);
812  end;
813  test = test + 1;
814  [pass, message] = isSBML_Model(m, 0);
815  if (pass == 0)
816      fail = fail + 1;
817      disp('fbc Model exclusive failed:');
818      disp(message);
819  end;
820  test = test + 1;
821  [pass, message] = isSBML_Model(m, 0, 1);
822  if (pass == 0)
823      fail = fail + 1;
824      disp('fbc Model userDefined failed:');
825      disp(message);
826  end;
827
828 m.fbc_geneProduct(1).fbc_id = '';
829
830   test = test + 1;
831[pass, message] = isSBML_Model(m, 0, 1);
832  if (pass == 0)
833      fail = fail + 1;
834      disp('fbc Model userDefined should fail');
835      disp(message);
836  end;
837
838  m = TranslateSBML('test-data/fbc.xml');
839  m.fbc_version = '';
840
841  test = test + 1;
842  [pass, message] = isSBML_Model(m);
843  if (pass == 1)
844      fail = fail + 1;
845      disp('fbc missing version should fail');
846      disp(message);
847  end;
848  test = test + 1;
849
850  m = TranslateSBML('test-data/algebraicRules.xml');
851  m.rule(1).typecode = [];
852
853  test = test + 1;
854  [pass, message] = isSBML_Model(m);
855  if (pass == 1)
856      fail = fail + 1;
857      disp('missing typecode not correctly reported');
858      disp(message);
859  end;
860  test = test + 1;
861
862
863 end;
864
865
866  if (silent == 0)
867    disp('Testing isSBMLModel:');
868    disp(sprintf('Number tests: %d', test));
869    disp(sprintf('Number fails: %d', fail));
870    disp(sprintf('Pass rate: %d%%\n', ((test-fail)/test)*100));
871  end;
872
873  if (fail == 0)
874      y = 0;
875  else
876      y = 1;
877  end;