extern crate jsonway; #[derive(Debug)] enum Side { Light, Dark } struct Jedi { name: String, side: Side } fn jedi_array() -> Vec { vec![ Jedi { name: "Saes Rrogon".to_string(), side: Side::Dark }, Jedi { name: "Qui-Gon Jinn".to_string(), side: Side::Light }, Jedi { name: "Obi-Wan Kenobi".to_string(), side: Side::Light } ] } #[test] fn simple_array_of_objects() { let jedi_array = jedi_array(); let json = jsonway::array(|json| { json.objects(jedi_array.iter(), |jedi, json| { match jedi.side { Side::Light => { json.set("name".to_string(), jedi.name.to_string()); json.set("side".to_string(), format!("{:?}", jedi.side)); }, Side::Dark => json.skip() } }) }).unwrap(); let array = json.as_array().unwrap(); assert_eq!(array.len(), 2); } #[test] fn simple_array_of_arrays() { let jedi_array = jedi_array(); let json = jsonway::array(|json| { json.objects(jedi_array.iter(), |jedi, json| { match jedi.side { Side::Light => { json.set("name".to_string(), jedi.name.to_string()); json.set("side".to_string(), format!("{:?}", jedi.side)); }, Side::Dark => json.skip() } }) }).unwrap(); let array = json.as_array().unwrap(); assert_eq!(array.len(), 2); }