summaryrefslogtreecommitdiffstats
path: root/vendor/jsonpath_lib/tests/jsonpath_examples.rs
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/jsonpath_lib/tests/jsonpath_examples.rs')
-rw-r--r--vendor/jsonpath_lib/tests/jsonpath_examples.rs242
1 files changed, 242 insertions, 0 deletions
diff --git a/vendor/jsonpath_lib/tests/jsonpath_examples.rs b/vendor/jsonpath_lib/tests/jsonpath_examples.rs
new file mode 100644
index 000000000..35e84a3dd
--- /dev/null
+++ b/vendor/jsonpath_lib/tests/jsonpath_examples.rs
@@ -0,0 +1,242 @@
+#[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"),
+ );
+}