mirror of
https://github.com/fluencelabs/jsonpath
synced 2025-04-13 03:56:04 +00:00
select code coverage
This commit is contained in:
parent
c19c75dac5
commit
f536391b71
@ -995,8 +995,30 @@ impl<'a, 'b> NodeVisitor for Selector<'a, 'b> {
|
|||||||
.push(Some(ExprTerm::Number(Number::from_f64(*v).unwrap())));
|
.push(Some(ExprTerm::Number(Number::from_f64(*v).unwrap())));
|
||||||
}
|
}
|
||||||
ParseToken::Filter(ref ft) => {
|
ParseToken::Filter(ref ft) => {
|
||||||
if let Some(Some(ref right)) = self.terms.pop() {
|
let ref right = match self.terms.pop() {
|
||||||
if let Some(Some(left)) = self.terms.pop() {
|
Some(Some(right)) => right,
|
||||||
|
Some(None) => ExprTerm::Json(
|
||||||
|
None,
|
||||||
|
match &self.current {
|
||||||
|
Some(current) => current.to_vec(),
|
||||||
|
_ => unreachable!(),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
_ => panic!("empty term right"),
|
||||||
|
};
|
||||||
|
|
||||||
|
let left = match self.terms.pop() {
|
||||||
|
Some(Some(left)) => left,
|
||||||
|
Some(None) => ExprTerm::Json(
|
||||||
|
None,
|
||||||
|
match &self.current {
|
||||||
|
Some(current) => current.to_vec(),
|
||||||
|
_ => unreachable!(),
|
||||||
|
},
|
||||||
|
),
|
||||||
|
_ => panic!("empty term left"),
|
||||||
|
};
|
||||||
|
|
||||||
let mut ret = None;
|
let mut ret = None;
|
||||||
match ft {
|
match ft {
|
||||||
FilterToken::Equal => left.eq(right, &mut ret),
|
FilterToken::Equal => left.eq(right, &mut ret),
|
||||||
@ -1012,12 +1034,6 @@ impl<'a, 'b> NodeVisitor for Selector<'a, 'b> {
|
|||||||
if let Some(e) = ret {
|
if let Some(e) = ret {
|
||||||
self.terms.push(Some(e));
|
self.terms.push(Some(e));
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
unreachable!()
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
unreachable!()
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
ParseToken::Range(from, to, step) => {
|
ParseToken::Range(from, to, step) => {
|
||||||
if !self.terms.is_empty() {
|
if !self.terms.is_empty() {
|
||||||
|
@ -343,6 +343,22 @@ fn op_complex() {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn op_compare() {
|
||||||
|
setup();
|
||||||
|
|
||||||
|
for path in [
|
||||||
|
r#"$[?("1" == 1)]"#,
|
||||||
|
r#"$[?(1 == "1")]"#,
|
||||||
|
r#"$[?(true == 1)]"#,
|
||||||
|
r#"$[?(@ == 1)]"#,
|
||||||
|
]
|
||||||
|
.iter()
|
||||||
|
{
|
||||||
|
select_and_then_compare(path, json!({}), json!([Value::Null]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn example() {
|
fn example() {
|
||||||
setup();
|
setup();
|
||||||
|
Loading…
x
Reference in New Issue
Block a user