4 use Test::More tests => 15;
6 use_ok( 'URI::Template' );
8 # fatal - no template provided
10 eval { URI::Template->new; };
15 my $text = 'http://foo.com/{bar}/{baz}?q=%7B';
16 my $template = URI::Template->new( $text );
17 isa_ok( $template, 'URI::Template' );
19 [ sort $template->variables ],
23 is( "$template", $text, 'as_string()' );
26 my $result = $template->process( bar => 'x', baz => 'y' );
27 is( $result, 'http://foo.com/x/y?q=%7B', 'process()' );
28 isa_ok( $result, 'URI', 'return value from process() isa URI' );
31 my $result = $template->process_to_string( bar => 'x', baz => 'y' );
32 is( $result, 'http://foo.com/x/y?q=%7B', 'process_to_string()' );
33 ok( !ref $result, 'result is not a ref' );
38 my $template = URI::Template->new( 'http://foo.com/{z(}/' );
39 my $result = $template->process( 'z(' => 'x' );
40 is( $result, 'http://foo.com/x/', 'potential regex issue escaped' );
44 my $template = URI::Template->new( 'http://foo.com/{z}/' );
46 my $result = $template->process( 'z' => '{x}' );
47 is( $result, 'http://foo.com/%7Bx%7D/', 'values are uri escaped' );
50 my $result = $template->process();
51 is( $result, 'http://foo.com//', 'no value sent' );
54 my $result = $template->process( 'y' => '1' );
55 is( $result, 'http://foo.com//', 'no valid keys used' );
60 my $template = URI::Template->new( 'http://foo.com/{z}/{z}/' );
61 is_deeply( [ $template->variables ], [ 'z' ], 'unique vars' );
62 my $result = $template->process( 'z' => 'x' );
63 is( $result, 'http://foo.com/x/x/', 'multiple replaces' );