The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Encode qw(encode decode);
use Test::More;
use SVN::Web::action;

my $action = SVN::Web::action->new;

{
    my $uri = decode('utf8','svn://test.my/repo');
    my $svn_uri = 'svn://test.my/repo';
    is $action->encode_svn_uri($uri), $svn_uri, 'encode: simple svn-schema uri';
    is $action->decode_svn_uri($svn_uri), $uri, 'decode: simple svn-schema uri';
}

{
    my $uri = decode('utf8','svn://test.my/repo/dir with spaces/file.txt');
    my $svn_uri = 'svn://test.my/repo/dir%20with%20spaces/file.txt';
    is $action->encode_svn_uri($uri), $svn_uri, 'encode: path with spaces';
    is $action->decode_svn_uri($svn_uri), $uri, 'decode: path with spaces';
}

{
    my $uri = decode('utf8','svn://test.my/repo/абвгд.txt');
    my $svn_uri = 'svn://test.my/repo/%D0%B0%D0%B1%D0%B2%D0%B3%D0%B4.txt';
    is $action->encode_svn_uri($uri), $svn_uri, 'encode: path with unicode symbols';
    is $action->decode_svn_uri($svn_uri), $uri, 'decode: path with unicode symbols';
}

done_testing;