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

use strict;
use Test::More;
use FindBin qw($Bin);
use Brackup::Config;

my ($config);

my %source_defaults = (
  noatime => 1,
  chunk_size => '64MB',
  merge_files_under => '1kB',
  smart_mp3_chunking => 1,
);
my %target_defaults = (
  type => 'Ftp',
  ftp_host => 'myserver',
  ftp_user => 'myusername',
  ftp_password => 'mypassword',
  path => '.',
);
my %override = (
  home_weekly => {
    chunk_size => '96MB',
  },
  home_monthly => {
    chunk_size => '128MB',
  },
  ftp_home => {
    path => 'home',
  },
  ftp_images => {
    path => 'images',
  },
);

ok($config = Brackup::Config->load("$Bin/misc/brackup.conf"), "misc/brackup.conf loaded");

is($config->{'SOURCE:defaults'}->value($_), $source_defaults{$_}, "source defaults $_ ok")
  for sort keys %source_defaults;

is($config->{'SOURCE:home'}->value($_), $source_defaults{$_}, "home $_ ok")
  for sort keys %source_defaults;

is($config->{'SOURCE:home_weekly'}->value($_), $override{home_weekly}{$_} || $source_defaults{$_}, "home_weekly $_ ok")
  for sort keys %source_defaults;

is($config->{'SOURCE:home_monthly'}->value($_), $override{home_monthly}{$_} || $source_defaults{$_}, "home_monthly $_ ok")
  for sort keys %source_defaults;

is($config->{'TARGET:ftp_defaults'}->value($_), $target_defaults{$_}, "target ftp_defaults $_ ok")
  for sort keys %target_defaults;

is($config->{'TARGET:ftp_home'}->value($_), $override{ftp_home}{$_} || $target_defaults{$_}, "ftp_home $_ ok")
  for sort keys %target_defaults;

is($config->{'TARGET:ftp_images'}->value($_), $override{ftp_images}{$_} || $target_defaults{$_}, "ftp_images $_ ok")
  for sort keys %target_defaults;

done_testing;