Imported upstream version 0.10
[liburi-template-perl.git] / t / 12-suite.t
1 use strict;
2 use warnings;
3
4 use Test::More;
5
6 BEGIN {
7     eval "use JSON ();";
8     plan skip_all => "JSON required" if $@;
9     plan( 'no_plan' );
10     use_ok( 'URI::Template' );
11 }
12
13 my @files = glob( 't/data/*.json' );
14
15 for my $file ( @files ) {
16     open( my $json, $file );
17     my $data = do { local $/; <$json> };
18     close( $json );
19
20     eval { JSON->VERSION( 2 ) };
21     my $suite = $@ ? JSON::jsonToObj( $data ) : JSON::from_json( $data );
22     my %variables = %{ $suite->{ variables } };
23
24     my $count = 0;
25     for my $test ( @{ $suite->{ tests } } ) {
26         my $template = URI::Template->new( $test->{ template } );
27         my $result   = $template->process( %variables );
28         $count++;
29         is( $result, $test->{ expected }, "${file}#${count}" );
30     }
31 }
32