@@ -9,11 +9,11 @@ use crate::parser::model2::Literal;
99
1010#[ derive( Parser ) ]
1111#[ grammar = "parser/grammar/json_path_9535.pest" ]
12- struct JSPathParser ;
12+ pub ( super ) struct JSPathParser ;
1313const MAX_VAL : i64 = 9007199254740991 ; // Maximum safe integer value in JavaScript
1414const MIN_VAL : i64 = -9007199254740991 ; // Minimum safe integer value in JavaScript
1515
16- type Parsed < T > = Result < T , JsonPathParserError > ;
16+ pub ( super ) type Parsed < T > = Result < T , JsonPathParserError > ;
1717
1818/// Parses a string into a [JsonPath].
1919///
@@ -74,86 +74,5 @@ mod tests {
7474 use pest:: error:: Error ;
7575 use crate :: lit;
7676
77- struct TestPair < T > {
78- rule : Rule ,
79- parse_fn : fn ( Pair < Rule > ) -> Parsed < T > ,
80- }
81-
82- impl < T : PartialEq + Debug > TestPair < T > {
83- fn new ( rule : Rule , parse_fn : fn ( Pair < Rule > ) -> Parsed < T > ) -> Self {
84- Self {
85- rule,
86- parse_fn
87- }
88- }
89- fn assert ( self , input : & str , expected : T ) -> Self {
90- match parse ( input, self . rule ) {
91- Ok ( e) => {
92- assert ( ( self . parse_fn ) ( e) , expected) ;
93- } ,
94- Err ( e) => {
95- panic ! ( "parsing error `{}`" , e) ;
96- }
97- }
98- self
99- }
100- fn assert_fail ( self , input : & str ) -> Self {
101- match parse ( input, self . rule ) {
102- Ok ( e) => {
103- if let Ok ( r) = ( self . parse_fn ) ( e) {
104- panic ! ( "expected error, got {:?}" , r) ;
105- }
106- } ,
107- Err ( _) => { }
108- }
109- self
110- }
111- }
112-
113- fn parse ( input : & str , rule : Rule ) -> Result < Pair < Rule > , Error < Rule > > {
114- match JSPathParser :: parse ( rule, input) {
115- Ok ( e) => {
116- Ok ( e. into_iter ( ) . next ( ) . expect ( "no pairs found" ) )
117- } ,
118- Err ( e) => {
119- Err ( e)
120- }
121- }
122- }
123-
124- fn assert < T > ( result : Parsed < T > , expected : T )
125- where T : PartialEq + Debug {
126- match result {
127- Ok ( e) => assert_eq ! ( e, expected) ,
128- Err ( e) => {
129- panic ! ( "parsing error `{}`" , e) ;
130- }
131- }
132- }
13377
134-
135- #[ test]
136- fn literals ( ) {
137-
138- TestPair :: new ( Rule :: literal, literal)
139- . assert ( "null" , lit ! ( ) )
140- . assert ( "false" , lit ! ( b false ) )
141- . assert ( "true" , lit ! ( b true ) )
142- . assert ( "\" hello\" " , lit ! ( s "\" hello\" " ) )
143- . assert ( "\' hello\' " , lit ! ( s "\' hello\' " ) )
144- . assert ( "\' hel\\ 'lo\' " , lit ! ( s "\' hel\\ 'lo\' " ) )
145- . assert ( "\' hel\" lo\' " , lit ! ( s "\' hel\" lo\' " ) )
146- . assert ( "\' hel\n lo\' " , lit ! ( s "\' hel\n lo\' " ) )
147- . assert ( "\' \" \' " , lit ! ( s "\' \" \' " ) )
148- . assert_fail ( "\' hel\\ \" lo\' " )
149- . assert ( "1" , lit ! ( i 1 ) )
150- . assert ( "0" , lit ! ( i 0 ) )
151- . assert ( "-0" , lit ! ( i 0 ) )
152- . assert ( "1.2" , lit ! ( f 1.2 ) )
153- . assert ( "9007199254740990" , lit ! ( i 9007199254740990 ) )
154- . assert_fail ( "9007199254740995" )
155- ;
156-
157-
158- }
15978}
0 commit comments