+ eval { JSON->VERSION( 2 ) };
+ my $suite = $@ ? JSON::jsonToObj( $data ) : JSON::from_json( $data );
+
+ for my $name ( sort keys %$suite ) {
+ my $info = $suite->{ $name };
+ my $vars = $info->{ variables };
+ my $cases = $info->{ testcases };
+
+ note( sprintf( '%s [level %d]', $name, ( $info->{ level } || 4 ) ) );
+
+ for my $case ( @$cases ) {
+ my ( $input, $expect ) = @$case;
+ my $result;
+ eval {
+ my $template = URI::Template->new( $input );
+ $result = $template->process_to_string( $vars );
+ };
+
+ _check_result( $result, $expect, $input );
+ }