10 #include "gtest/gtest.h" 16 TEST(ReactionNetworkParserUtilsTest, simple)
20 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
21 EXPECT_EQ(
reaction.getSpecies()[1],
"B");
22 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
23 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
24 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], 1);
25 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
26 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
32 catch (
const std::exception &
err)
35 std::string(
err.what()).
find(
"MetaData item 'this' was not found in reaction");
36 ASSERT_TRUE(pos != std::string::npos);
41 EXPECT_EQ(
reaction.getSpecies()[0],
"A+");
42 EXPECT_EQ(
reaction.getSpecies()[1],
"B-");
43 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A+");
44 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B-");
45 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], 1);
46 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
47 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
51 EXPECT_EQ(
reaction.getSpecies()[0],
"A(aq)+");
52 EXPECT_EQ(
reaction.getSpecies()[1],
"B(gas)-");
53 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A(aq)+");
54 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B(gas)-");
55 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], 1);
56 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
57 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
60 TEST(ReactionNetworkParserUtilsTest, minus_sign)
64 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
65 EXPECT_EQ(
reaction.getSpecies()[1],
"B");
66 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
67 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
68 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
69 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], -1);
70 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
74 EXPECT_EQ(
reaction.getSpecies()[0],
"A+");
75 EXPECT_EQ(
reaction.getSpecies()[1],
"B-");
76 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A+");
77 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B-");
78 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
79 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], -1);
80 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
84 EXPECT_EQ(
reaction.getSpecies()[0],
"A(aq)+");
85 EXPECT_EQ(
reaction.getSpecies()[1],
"B(gas)-");
86 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A(aq)+");
87 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B(gas)-");
88 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
89 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], -1);
90 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
93 TEST(ReactionNetworkParserUtilsTest, two_terms)
97 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
98 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
99 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
100 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
101 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
102 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
103 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
104 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
105 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -1);
106 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
110 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
111 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
112 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
113 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
114 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
115 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
116 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -10);
117 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 3.4);
118 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -2.1111111);
119 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
124 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
125 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
126 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
127 EXPECT_EQ(
reaction.getSpecies()[3],
"D");
128 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
129 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
130 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
131 EXPECT_EQ(
reaction.getProductSpecies()[1],
"D");
132 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -10);
133 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 3.4);
134 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -2.1111111);
135 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[3], 24);
136 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
139 TEST(ReactionNetworkParserUtilsTest, multiple_reactions)
145 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
146 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
147 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
148 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
149 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
150 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
151 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
152 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
153 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -1);
154 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
155 auto reaction2 = reactions[1];
156 EXPECT_EQ(reaction2.getSpecies()[0],
"D(aq)");
157 EXPECT_EQ(reaction2.getSpecies()[1],
"E+");
158 EXPECT_EQ(reaction2.getSpecies()[2],
"F");
159 EXPECT_EQ(reaction2.getSpecies()[3],
"G");
160 EXPECT_EQ(reaction2.getReactantSpecies()[0],
"D(aq)");
161 EXPECT_EQ(reaction2.getReactantSpecies()[1],
"E+");
162 EXPECT_EQ(reaction2.getProductSpecies()[0],
"F");
163 EXPECT_EQ(reaction2.getProductSpecies()[1],
"G");
164 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[0], 1);
165 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[1], 1);
166 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[2], 1);
167 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[3], -1.1);
168 EXPECT_EQ(reaction2.hasMetaData(
"this"),
false);
171 TEST(ReactionNetworkParserUtilsTest, non_unique_species)
175 "A - A + A -> -B\nD(aq) + E+ -> F + 2.1F - 1.1G",
false);
177 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
178 EXPECT_EQ(
reaction.getSpecies()[1],
"A");
179 EXPECT_EQ(
reaction.getSpecies()[2],
"A");
180 EXPECT_EQ(
reaction.getSpecies()[3],
"B");
181 EXPECT_EQ(
reaction.getUniqueSpecies()[0],
"A");
182 EXPECT_EQ(
reaction.getUniqueSpecies()[1],
"B");
183 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
184 EXPECT_EQ(
reaction.getUniqueReactantSpecies()[0],
"A");
185 EXPECT_EQ(
reaction.getUniqueReactantSpecies().size(), (
unsigned int)1);
186 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
187 EXPECT_EQ(
reaction.getUniqueProductSpecies()[0],
"B");
188 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], 1);
189 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], -1);
190 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[3], -1);
191 EXPECT_EQ(
reaction.getUniqueStoichiometricCoefficients()[
"A"], -1);
192 EXPECT_EQ(
reaction.getUniqueStoichiometricCoefficients()[
"B"], -1);
193 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
194 auto reaction2 = reactions[1];
195 EXPECT_EQ(reaction2.getSpecies()[0],
"D(aq)");
196 EXPECT_EQ(reaction2.getSpecies()[1],
"E+");
197 EXPECT_EQ(reaction2.getSpecies()[2],
"F");
198 EXPECT_EQ(reaction2.getSpecies()[3],
"F");
199 EXPECT_EQ(reaction2.getSpecies()[4],
"G");
200 EXPECT_EQ(reaction2.getUniqueSpecies()[0],
"D(aq)");
201 EXPECT_EQ(reaction2.getUniqueSpecies()[1],
"E+");
202 EXPECT_EQ(reaction2.getUniqueSpecies()[2],
"F");
203 EXPECT_EQ(reaction2.getUniqueSpecies()[3],
"G");
204 EXPECT_EQ(reaction2.getReactantSpecies()[0],
"D(aq)");
205 EXPECT_EQ(reaction2.getReactantSpecies()[1],
"E+");
206 EXPECT_EQ(reaction2.getProductSpecies()[0],
"F");
207 EXPECT_EQ(reaction2.getProductSpecies()[2],
"G");
208 EXPECT_EQ(reaction2.getUniqueProductSpecies()[0],
"F");
209 EXPECT_EQ(reaction2.getUniqueProductSpecies()[1],
"G");
210 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[0], 1);
211 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[1], 1);
212 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[2], 1);
213 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[3], 2.1);
214 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[4], -1.1);
215 EXPECT_EQ(reaction2.getUniqueStoichiometricCoefficients()[
"D(aq)"], -1);
216 EXPECT_EQ(reaction2.getUniqueStoichiometricCoefficients()[
"E+"], -1);
217 EXPECT_EQ(reaction2.getUniqueStoichiometricCoefficients()[
"F"], 3.1);
218 EXPECT_EQ(reaction2.getUniqueStoichiometricCoefficients()[
"G"], -1.1);
219 EXPECT_EQ(reaction2.hasMetaData(
"this"),
false);
222 TEST(ReactionNetworkParserUtilsTest, metadata)
226 "-10A + 3.4C -> -2.1111111B + 24D [k=2.1]",
false)[0];
227 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
228 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
229 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
230 EXPECT_EQ(
reaction.getSpecies()[3],
"D");
231 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
232 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
233 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
234 EXPECT_EQ(
reaction.getProductSpecies()[1],
"D");
235 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -10);
236 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 3.4);
237 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -2.1111111);
238 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[3], 24);
239 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
241 EXPECT_EQ(
reaction.hasMetaData(
"k"),
true);
242 EXPECT_EQ(
reaction.getMetaData(
"k"),
"2.1");
246 "-10A + 3.4C -> -2.1111111B + 24D [k=2.1, Q=-2]",
false)[0];
247 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
248 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
249 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
250 EXPECT_EQ(
reaction.getSpecies()[3],
"D");
251 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
252 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
253 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
254 EXPECT_EQ(
reaction.getProductSpecies()[1],
"D");
255 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -10);
256 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 3.4);
257 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -2.1111111);
258 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[3], 24);
259 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
261 EXPECT_EQ(
reaction.hasMetaData(
"k"),
true);
262 EXPECT_EQ(
reaction.getMetaData(
"k"),
"2.1");
264 EXPECT_EQ(
reaction.hasMetaData(
"Q"),
true);
265 EXPECT_EQ(
reaction.getMetaData(
"Q"),
"-2");
269 "-10A + 3.4C -> -2.1111111B + 24D [k=2.1, Q=-2, P=there]",
false)[0];
270 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
271 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
272 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
273 EXPECT_EQ(
reaction.getSpecies()[3],
"D");
274 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
275 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
276 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
277 EXPECT_EQ(
reaction.getProductSpecies()[1],
"D");
278 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -10);
279 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 3.4);
280 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -2.1111111);
281 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[3], 24);
282 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
284 EXPECT_EQ(
reaction.hasMetaData(
"k"),
true);
285 EXPECT_EQ(
reaction.getMetaData(
"k"),
"2.1");
287 EXPECT_EQ(
reaction.hasMetaData(
"Q"),
true);
288 EXPECT_EQ(
reaction.getMetaData(
"Q"),
"-2");
290 EXPECT_EQ(
reaction.hasMetaData(
"P"),
true);
291 EXPECT_EQ(
reaction.getMetaData(
"P"),
"there");
295 "-A + C -> -B [K=23,Q=2]\nD(aq) + E+ -> F - 1.1G[S12=meta,log34=three]",
false);
297 EXPECT_EQ(
reaction.getSpecies()[0],
"A");
298 EXPECT_EQ(
reaction.getSpecies()[1],
"C");
299 EXPECT_EQ(
reaction.getSpecies()[2],
"B");
300 EXPECT_EQ(
reaction.getReactantSpecies()[0],
"A");
301 EXPECT_EQ(
reaction.getReactantSpecies()[1],
"C");
302 EXPECT_EQ(
reaction.getProductSpecies()[0],
"B");
303 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[0], -1);
304 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[1], 1);
305 EXPECT_EQ(
reaction.getStoichiometricCoefficients()[2], -1);
306 EXPECT_EQ(
reaction.hasMetaData(
"this"),
false);
307 auto reaction2 = reactions[1];
308 EXPECT_EQ(reaction2.getSpecies()[0],
"D(aq)");
309 EXPECT_EQ(reaction2.getSpecies()[1],
"E+");
310 EXPECT_EQ(reaction2.getSpecies()[2],
"F");
311 EXPECT_EQ(reaction2.getSpecies()[3],
"G");
312 EXPECT_EQ(reaction2.getReactantSpecies()[0],
"D(aq)");
313 EXPECT_EQ(reaction2.getReactantSpecies()[1],
"E+");
314 EXPECT_EQ(reaction2.getProductSpecies()[0],
"F");
315 EXPECT_EQ(reaction2.getProductSpecies()[1],
"G");
316 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[0], 1);
317 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[1], 1);
318 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[2], 1);
319 EXPECT_EQ(reaction2.getStoichiometricCoefficients()[3], -1.1);
320 EXPECT_EQ(reaction2.hasMetaData(
"this"),
false);
TEST(ReactionNetworkParserUtilsTest, simple)
KOKKOS_INLINE_FUNCTION const T * find(const T &target, const T *const begin, const T *const end)
std::vector< Reaction > parseReactionNetwork(const std::string &reaction_network_string, bool output_to_cout)
Parses the reaction network from a string form to a vector a Reaction.
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
void ErrorVector unsigned int