- my $suite = $@ ? JSON::jsonToObj( $data ) : JSON::from_json( $data );
- my $variables = $suite->{variables};
-
- my $count = 0;
- for my $test (@{ $suite->{tests} }) {
- my $template = URI::Template->new( $test->{template} );
- my $result = $template->process( $variables );
- $count++;
- is( $result, $test->{expected}, "${file} test ${count}" );
+ 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 );
+ }
+