1
1
use arbitrary:: { Arbitrary , Unstructured } ;
2
- use rinja_parser:: { Ast , Syntax } ;
2
+ use rinja_parser:: { Ast , Syntax , SyntaxBuilder } ;
3
3
4
4
#[ derive( Debug , Default ) ]
5
5
pub struct Scenario < ' a > {
@@ -13,10 +13,21 @@ impl<'a> super::Scenario<'a> for Scenario<'a> {
13
13
fn new ( data : & ' a [ u8 ] ) -> Result < Self , arbitrary:: Error > {
14
14
let mut data = Unstructured :: new ( data) ;
15
15
16
- let syntax = ArbitrarySyntax :: arbitrary ( & mut data) ?;
17
- let _syntax = syntax. as_syntax ( ) ;
18
- // FIXME: related issue: <https://github.com/rinja-rs/rinja/issues/138>
19
- let syntax = Syntax :: default ( ) ;
16
+ let syntax = if let Some ( syntax) = <Option < [ Option < & ' a str > ; 6 ] > >:: arbitrary ( & mut data) ? {
17
+ SyntaxBuilder {
18
+ name : "test" ,
19
+ block_start : syntax[ 0 ] ,
20
+ block_end : syntax[ 1 ] ,
21
+ expr_start : syntax[ 2 ] ,
22
+ expr_end : syntax[ 3 ] ,
23
+ comment_start : syntax[ 4 ] ,
24
+ comment_end : syntax[ 5 ] ,
25
+ }
26
+ . to_syntax ( )
27
+ . map_err ( |_| arbitrary:: Error :: IncorrectFormat ) ?
28
+ } else {
29
+ Syntax :: default ( )
30
+ } ;
20
31
21
32
let src = <& str >:: arbitrary_take_rest ( data) ?;
22
33
@@ -29,21 +40,3 @@ impl<'a> super::Scenario<'a> for Scenario<'a> {
29
40
Ok ( ( ) )
30
41
}
31
42
}
32
-
33
- #[ derive( Arbitrary , Default ) ]
34
- struct ArbitrarySyntax < ' a > ( Option < [ Option < & ' a str > ; 6 ] > ) ;
35
-
36
- impl < ' a > ArbitrarySyntax < ' a > {
37
- fn as_syntax ( & self ) -> Syntax < ' a > {
38
- let default = Syntax :: default ( ) ;
39
- let values = self . 0 . unwrap_or_default ( ) ;
40
- Syntax {
41
- block_start : values[ 0 ] . unwrap_or ( default. block_start ) ,
42
- block_end : values[ 1 ] . unwrap_or ( default. block_end ) ,
43
- expr_start : values[ 2 ] . unwrap_or ( default. expr_start ) ,
44
- expr_end : values[ 3 ] . unwrap_or ( default. expr_end ) ,
45
- comment_start : values[ 4 ] . unwrap_or ( default. comment_start ) ,
46
- comment_end : values[ 5 ] . unwrap_or ( default. comment_end ) ,
47
- }
48
- }
49
- }
0 commit comments