mirror of
https://github.com/fluencelabs/jsonpath
synced 2025-03-28 04:41:02 +00:00
243 lines
5.8 KiB
Rust
243 lines
5.8 KiB
Rust
#[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"),
|
|
);
|
|
}
|