1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42
mod base_types; mod model; #[cfg(feature = "default")] mod pyo; pub use base_types::{ Compartment, Constraint, InitialAssignment, ListOfSpecies, ModelUnits, Parameter, Reaction, Specie, SpeciesReference, Unit, UnitSId, UnitSidRef, }; pub use model::{parse_document, Model}; #[cfg(feature = "default")] pub use pyo::*; #[cfg(test)] mod tests { use super::*; use roxmltree; #[test] fn test_name() { let reactions: Vec<Reaction> = roxmltree::Document::parse( "<model id='example'><listOfReactions> <reaction id='J1' reversible='false'> <listOfReactants> <speciesReference species='X0' stoichiometry='2' constant='true'/> <reaction id='J2' reversible='false'> <listOfReactants> <speciesReference species='CAP' stoichiometry='2' constant='true'/> <speciesReference species='ZOOM' stoichiometry='-2' constant='true'/> </listOfReactants></reaction> </listOfReactants></reaction></listOfReactions></model>", ) .unwrap() .descendants() .filter(|n| n.tag_name().name() == "reaction") .map(|n| Reaction::from(n)) .collect(); println!("{:?}", reactions); assert_eq!(reactions[1].list_of_reactants.0.len(), 2); } }