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

use strict;
use warnings;

use File::Copy;
use File::Spec::Functions qw(catfile);

use Test::More;
use FindBin;
use lib $FindBin::Bin;
use t::Util;
use Test::Mock::Net::FTP;

copy( catfile('t', 'testdata', 'data1.txt'), catfile('tmp', 'ftpserver', 'dir2', 'data1.txt' ) );
copy( catfile('t', 'testdata', 'data1.txt'), catfile('tmp', 'ftpserver', 'dir2', 'data2.txt' ) );

subtest 'ls to dir', sub {
    my $ftp = prepare_ftp();

    my @ls_result = $ftp->ls('dir2');
    is( scalar(@ls_result), 2 );
    is( $ls_result[0], 'dir2/data1.txt' );

    my $ls_result_aref = $ftp->ls('dir2'); #scalar context
    is( ref $ls_result_aref, 'ARRAY' );
    is( scalar(@{ $ls_result_aref }), 2);
    is( $ls_result_aref->[0], 'dir2/data1.txt');
    done_testing();
};

subtest 'ls to current dir', sub {
    my $ftp = prepare_ftp();

    $ftp->cwd('dir2');
    my @ls_result = $ftp->ls();
    is( scalar(@ls_result), 2 );
    is( $ls_result[0], 'data1.txt' );

    done_testing();
};

subtest 'specify absolute path', sub {
    my $ftp = prepare_ftp();

    $ftp->cwd();
    my @ls_result = $ftp->ls('/ftproot/dir2'); #absolute path
    is( scalar(@ls_result), 2 );
    is( $ls_result[0], '/ftproot/dir2/data1.txt' );

    done_testing();
};


done_testing();