| #[macro_use] |
| extern crate serde_json; |
| |
| use common::{read_json, select_and_then_compare, setup}; |
| |
| mod common; |
| |
| #[test] |
| fn example_authros_of_all_books() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$.store.book[*].author"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| "Nigel Rees", |
| "Evelyn Waugh", |
| "Herman Melville", |
| "J. R. R. Tolkien" |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_authors() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..author"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| "Nigel Rees", |
| "Evelyn Waugh", |
| "Herman Melville", |
| "J. R. R. Tolkien" |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_things_both_books_and_bicycles() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$.store.*"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| [ |
| {"category" : "reference", "author" : "Nigel Rees","title" : "Sayings of the Century", "price" : 8.95}, |
| {"category" : "fiction", "author" : "Evelyn Waugh","title" : "Sword of Honour","price" : 12.99}, |
| {"category" : "fiction", "author" : "Herman Melville","title" : "Moby Dick","isbn" : "0-553-21311-3","price" : 8.99}, |
| {"category" : "fiction", "author" : "J. R. R. Tolkien","title" : "The Lord of the Rings","isbn" : "0-395-19395-8","price" : 22.99} |
| ], |
| {"color" : "red","price" : 19.95}, |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn the_price_of_everything() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$.store..price"#, |
| read_json("./benchmark/example.json"), |
| json!([8.95, 12.99, 8.99, 22.99, 19.95]), |
| ); |
| } |
| |
| #[test] |
| fn the_third_book() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[2]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "fiction", |
| "author" : "Herman Melville", |
| "title" : "Moby Dick", |
| "isbn" : "0-553-21311-3", |
| "price" : 8.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn the_second_to_last_book() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[-2]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "fiction", |
| "author" : "Herman Melville", |
| "title" : "Moby Dick", |
| "isbn" : "0-553-21311-3", |
| "price" : 8.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn the_first_two_books() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[0, 1]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "reference", |
| "author" : "Nigel Rees", |
| "title" : "Sayings of the Century", |
| "price" : 8.95 |
| }, |
| { |
| "category" : "fiction", |
| "author" : "Evelyn Waugh", |
| "title" : "Sword of Honour", |
| "price" : 12.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_books_from_index_0_inclusive_until_index_2_exclusive() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[:2]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "reference", |
| "author" : "Nigel Rees", |
| "title" : "Sayings of the Century", |
| "price" : 8.95 |
| }, |
| { |
| "category" : "fiction", |
| "author" : "Evelyn Waugh", |
| "title" : "Sword of Honour", |
| "price" : 12.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_books_from_index_1_inclusive_until_index_2_exclusive() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[2:]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "fiction", |
| "author" : "Herman Melville", |
| "title" : "Moby Dick", |
| "isbn" : "0-553-21311-3", |
| "price" : 8.99 |
| }, |
| { |
| "category" : "fiction", |
| "author" : "J. R. R. Tolkien", |
| "title" : "The Lord of the Rings", |
| "isbn" : "0-395-19395-8", |
| "price" : 22.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_books_with_an_isbn_number() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..book[?(@.isbn)]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "fiction", |
| "author" : "Herman Melville", |
| "title" : "Moby Dick", |
| "isbn" : "0-553-21311-3", |
| "price" : 8.99 |
| }, |
| { |
| "category" : "fiction", |
| "author" : "J. R. R. Tolkien", |
| "title" : "The Lord of the Rings", |
| "isbn" : "0-395-19395-8", |
| "price" : 22.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn all_books_in_store_cheaper_than_10() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$.store.book[?(@.price < 10)]"#, |
| read_json("./benchmark/example.json"), |
| json!([ |
| { |
| "category" : "reference", |
| "author" : "Nigel Rees", |
| "title" : "Sayings of the Century", |
| "price" : 8.95 |
| }, |
| { |
| "category" : "fiction", |
| "author" : "Herman Melville", |
| "title" : "Moby Dick", |
| "isbn" : "0-553-21311-3", |
| "price" : 8.99 |
| } |
| ]), |
| ); |
| } |
| |
| #[test] |
| fn give_me_every_thing() { |
| setup(); |
| |
| select_and_then_compare( |
| r#"$..*"#, |
| read_json("./benchmark/example.json"), |
| read_json("./benchmark/giveme_every_thing_result.json"), |
| ); |
| } |