1function y = testReadFromFile1(silent)
2
3filename = fullfile(pwd,'test-data', 'l1v1-branch.xml');
4notes1 = sprintf('%s\n  %s\n    %s\n    %s\n    %s\n    %s\n    %s\n  %s\n%s', ...
5    '<notes>', ...
6    '<body xmlns="http://www.w3.org/1999/xhtml">', ...
7    '<p>Simple branch system.</p>', ...
8    '<p>The reaction looks like this:</p>', ...
9    '<p>reaction-1:   X0 -&gt; S1; k1*X0;</p>', ...
10    '<p>reaction-2:   S1 -&gt; X1; k2*S1;</p>', ...
11    '<p>reaction-3:   S1 -&gt; X2; k3*S1;</p>', ...
12    '</body>', ...
13    '</notes>');
14
15
16
17m = TranslateSBML(filename);
18
19test = 72;
20Totalfail = 0;
21
22Totalfail = Totalfail + fail_unless(m.SBML_level == 1);
23Totalfail = Totalfail + fail_unless(m.SBML_version == 1);
24Totalfail = Totalfail + fail_unless(strcmp(m.name,'Branch'));
25Totalfail = Totalfail + fail_unless(strcmp(m.notes, notes1));
26
27%  /**
28%    * <listOfCompartments>
29%    *  <compartment name="compartmentOne" volume="1"/>
30%    * </listOfCompartments>
31%    */
32  Totalfail = Totalfail + fail_unless( length(m.compartment) == 1);
33
34  Totalfail = Totalfail + fail_unless( strcmp(m.compartment.name, 'compartmentOne'));
35  Totalfail = Totalfail + fail_unless( m.compartment.volume == 1);
36  Totalfail = Totalfail + fail_unless( m.compartment.level == 1);
37
38
39
40%   /**
41%    * <listOfSpecies>
42%    *   <specie name="S1" initialAmount="0" compartment="compartmentOne"
43%    *           boundaryCondition="false"/>
44%    *   <specie name="X0" initialAmount="0" compartment="compartmentOne"
45%    *           boundaryCondition="true"/>
46%    *   <specie name="X1" initialAmount="0" compartment="compartmentOne"
47%    *           boundaryCondition="true"/>
48%    *   <specie name="X2" initialAmount="0" compartment="compartmentOne"
49%    *           boundaryCondition="true"/>
50%    * </listOfSpecies>
51%    */
52  Totalfail = Totalfail + fail_unless( length(m.species) == 4);
53
54  Totalfail = Totalfail + fail_unless( strcmp( m.species(1).name, 'S1'             ));
55  Totalfail = Totalfail + fail_unless( strcmp( m.species(1).compartment, 'compartmentOne' ));
56  Totalfail = Totalfail + fail_unless( m.species(1).initialAmount == 0);
57  Totalfail = Totalfail + fail_unless( m.species(1).boundaryCondition == 0);
58
59  Totalfail = Totalfail + fail_unless( strcmp( m.species(2).name, 'X0'             ));
60  Totalfail = Totalfail + fail_unless( strcmp( m.species(2).compartment, 'compartmentOne' ));
61  Totalfail = Totalfail + fail_unless( m.species(2).initialAmount == 0);
62  Totalfail = Totalfail + fail_unless( m.species(2).boundaryCondition == 1);
63
64  Totalfail = Totalfail + fail_unless( strcmp( m.species(3).name, 'X1'             ));
65  Totalfail = Totalfail + fail_unless( strcmp( m.species(3).compartment, 'compartmentOne' ));
66  Totalfail = Totalfail + fail_unless( m.species(3).initialAmount == 0);
67  Totalfail = Totalfail + fail_unless( m.species(3).boundaryCondition == 1);
68
69  Totalfail = Totalfail + fail_unless( strcmp( m.species(4).name, 'X2'             ));
70  Totalfail = Totalfail + fail_unless( strcmp( m.species(4).compartment, 'compartmentOne' ));
71  Totalfail = Totalfail + fail_unless( m.species(4).initialAmount == 0);
72  Totalfail = Totalfail + fail_unless( m.species(4).boundaryCondition == 1);
73  Totalfail = Totalfail + fail_unless( m.species(4).version == 1);
74
75%
76%   /**
77%    * <listOfReactions>
78%    *   <reaction name="reaction_1" reversible="false"> ... </reaction>
79%    *   <reaction name="reaction_2" reversible="false"> ... </reaction>
80%    *   <reaction name="reaction_3" reversible="false"> ... </reaction>
81%    * </listOfReactions>
82%    */
83  Totalfail = Totalfail + fail_unless( length(m.reaction) == 3);
84
85  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(1).name, 'reaction_1'));
86  Totalfail = Totalfail + fail_unless( m.reaction(1).reversible == 0);
87  Totalfail = Totalfail + fail_unless( m.reaction(1).fast == 0);
88
89  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(2).name, 'reaction_2'));
90  Totalfail = Totalfail + fail_unless( m.reaction(2).reversible == 0);
91  Totalfail = Totalfail + fail_unless( m.reaction(2).fast == 0);
92
93  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(3).name, 'reaction_3'));
94  Totalfail = Totalfail + fail_unless( m.reaction(3).reversible == 0);
95  Totalfail = Totalfail + fail_unless( m.reaction(3).fast == 0);
96%
97%   /**
98%    * <reaction name="reaction_1" reversible="false">
99%    *   <listOfReactants>
100%    *     <specieReference specie="X0" stoichiometry="1"/>
101%    *   </listOfReactants>
102%    *   <listOfProducts>
103%    *     <specieReference specie="S1" stoichiometry="1"/>
104%    *   </listOfProducts>
105%    *   <kineticLaw formula="k1 * X0">
106%    *     <listOfParameters>
107%    *       <parameter name="k1" value="0"/>
108%    *     </listOfParameters>
109%    *   </kineticLaw>
110%    * </reaction>
111%    */
112%
113  Totalfail = Totalfail + fail_unless( length(m.reaction(1).reactant) == 1);
114  Totalfail = Totalfail + fail_unless( length(m.reaction(1).product)  == 1);
115
116  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(1).reactant.species, 'X0'));
117  Totalfail = Totalfail + fail_unless( m.reaction(1).reactant.stoichiometry == 1);
118  Totalfail = Totalfail + fail_unless( m.reaction(1).reactant.denominator == 1);
119
120  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(1).product.species, 'S1'));
121  Totalfail = Totalfail + fail_unless( m.reaction(1).product.stoichiometry == 1);
122  Totalfail = Totalfail + fail_unless( m.reaction(1).product.denominator == 1);
123
124  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(1).kineticLaw.formula, 'k1*X0'));
125  Totalfail = Totalfail + fail_unless(length(m.reaction(1).kineticLaw.parameter) == 1);
126
127  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(1).kineticLaw.parameter.name, 'k1'));
128  Totalfail = Totalfail + fail_unless( m.reaction(1).kineticLaw.parameter.value == 0);
129%
130%
131%   /**
132%    * <reaction name="reaction_2" reversible="false">
133%    *   <listOfReactants>
134%    *     <specieReference specie="S1" stoichiometry="1"/>
135%    *   </listOfReactants>
136%    *   <listOfProducts>
137%    *     <specieReference specie="X1" stoichiometry="1"/>
138%    *   </listOfProducts>
139%    *   <kineticLaw formula="k2 * S1">
140%    *     <listOfParameters>
141%    *       <parameter name="k2" value="0"/>
142%    *     </listOfParameters>
143%    *   </kineticLaw>
144%    * </reaction>
145%    */
146  Totalfail = Totalfail + fail_unless( length(m.reaction(2).reactant) == 1);
147  Totalfail = Totalfail + fail_unless( length(m.reaction(2).product)  == 1);
148
149  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(2).reactant.species, 'S1'));
150  Totalfail = Totalfail + fail_unless( m.reaction(2).reactant.stoichiometry == 1);
151  Totalfail = Totalfail + fail_unless( m.reaction(2).reactant.denominator == 1);
152
153  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(2).product.species, 'X1'));
154  Totalfail = Totalfail + fail_unless( m.reaction(2).product.stoichiometry == 1);
155  Totalfail = Totalfail + fail_unless( m.reaction(2).product.denominator == 1);
156
157  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(2).kineticLaw.formula, 'k2*S1'));
158  Totalfail = Totalfail + fail_unless(length(m.reaction(2).kineticLaw.parameter) == 1);
159
160  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(2).kineticLaw.parameter.name, 'k2'));
161  Totalfail = Totalfail + fail_unless( m.reaction(2).kineticLaw.parameter.value == 0);
162
163%
164%   /**
165%    * <reaction name="reaction_3" reversible="false">
166%    *   <listOfReactants>
167%    *     <specieReference specie="S1" stoichiometry="1"/>
168%    *   </listOfReactants>
169%    *   <listOfProducts>
170%    *     <specieReference specie="X2" stoichiometry="1"/>
171%    *   </listOfProducts>
172%    *   <kineticLaw formula="k3 * S1">
173%    *     <listOfParameters>
174%    *       <parameter name="k3" value="0"/>
175%    *     </listOfParameters>
176%    *   </kineticLaw>
177%    * </reaction>
178%    */
179  Totalfail = Totalfail + fail_unless( length(m.reaction(3).reactant) == 1);
180  Totalfail = Totalfail + fail_unless( length(m.reaction(3).product)  == 1);
181
182  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(3).reactant.species, 'S1'));
183  Totalfail = Totalfail + fail_unless( m.reaction(3).reactant.stoichiometry == 1);
184  Totalfail = Totalfail + fail_unless( m.reaction(3).reactant.denominator == 1);
185
186  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(3).product.species, 'X2'));
187  Totalfail = Totalfail + fail_unless( m.reaction(3).product.stoichiometry == 1);
188  Totalfail = Totalfail + fail_unless( m.reaction(3).product.denominator == 1);
189
190  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(3).kineticLaw.formula, 'k3*S1'));
191  Totalfail = Totalfail + fail_unless(length(m.reaction(3).kineticLaw.parameter) == 1);
192
193  Totalfail = Totalfail + fail_unless( strcmp(m.reaction(3).kineticLaw.parameter.name, 'k3'));
194  Totalfail = Totalfail + fail_unless( m.reaction(3).kineticLaw.parameter.value == 0);
195
196if (silent == 0)
197disp('Testing readFromFile1:');
198disp(sprintf('Number tests: %d', test));
199disp(sprintf('Number fails: %d', Totalfail));
200disp(sprintf('Pass rate: %d%%\n', ((test-Totalfail)/test)*100));
201end;
202
203if (Totalfail == 0)
204    y = 0;
205else
206    y = 1;
207end;
208
209function y = fail_unless(arg)
210
211if (~arg)
212    y = 1;
213else
214    y = 0;
215end;
216
217