The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# -*-perl-*-

use strict;
use warnings;
use Test::More;
use FindBin qw($Bin);
use Data::Dumper;

use MogileFS::Server;
use MogileFS::Util qw(error_code);
use MogileFS::Test;

my $obj;

$obj = MogileFS::ReplicationPolicy->new_from_policy_string("MultipleHosts(5)");
isa_ok($obj, "MogileFS::ReplicationPolicy::MultipleHosts", "got a multiple hosts policy")
    or die "can't proceed";
is($obj->mindevcount, 5, "got correct devcount");

$obj = MogileFS::ReplicationPolicy->new_from_policy_string("MultipleHosts()");
isa_ok($obj, "MogileFS::ReplicationPolicy::MultipleHosts", "got a multiple hosts policy")
    or die "can't proceed";

foreach my $str ("Union(MultipleHosts(5), MultipleHosts(2))",
                 "Union(MultipleHosts(5), MultipleHosts(2), )",
                 "Union( MultipleHosts(5), MultipleHosts(2) )",
                 "Union(MultipleHosts(  5),MultipleHosts(2))",
                 "Union ( MultipleHosts ( 5 ) , MultipleHosts ( 2 ) )",
                 "Union ( MultipleHosts ( 5 ) ,\n MultipleHosts ( 2 ) )",
                 "Union ( MultipleHosts ( 5 ) , \n MultipleHosts ( 2 ), )",
                 )
{
    $obj = MogileFS::ReplicationPolicy->new_from_policy_string($str);
    isa_ok($obj, "MogileFS::ReplicationPolicy::Union") or die "Failed to parse: $str";
    is(scalar @{$obj->{policies}}, 2, "got 2 sub policies");
    isa_ok($obj->{policies}[0], "MogileFS::ReplicationPolicy::MultipleHosts");
    isa_ok($obj->{policies}[1], "MogileFS::ReplicationPolicy::MultipleHosts");
}

done_testing();