The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# Before `make install' is performed this script should be runnable with
# `make test'. After `make install' it should work as `perl test.pl'

#########################

# change 'tests => 1' to 'tests => last_test_to_print';

use Test;
BEGIN { plan tests => 6 };
use Data::Fallback;
ok(1); # If we made it this far, we're ok.

#########################

# Insert your test code below, the Test module is use()ed here so read
# its man page ( perldoc Test ) for help writing this test script.

use strict;
use Data::Fallback;
use Carp qw(confess);

# I use dumper just to show some complex structures
use Data::Dumper;

# here I write out a couple files which I late clean up
# the idea is that the over file, overrides the default file

my $over_file    = "/tmp/data_fallback_over";
my $default_file = "/tmp/data_fallback_default";

open (FILE, ">$over_file") || confess "couldn't open $over_file: $!";
print FILE "key2 over2";
close(FILE);

open (FILE, ">$default_file") || confess "couldn't open $default_file: $!";
print FILE "key1 default1\nkey2 default2";
close(FILE);

my $self = Data::Fallback->new({

# list is an array ref of hash refs to fall through looking for data

list => [
{
# accept_update says to update the conf
  accept_update => 'group',

# this means to cache everything
cache_level => 'all',

# where to get the content
content => $over_file,
},
{
  cache_level => 'all',
  content     => $default_file,
},
],

# need to name list
list_name => 'test',

# object global for package
package => 'ConfFile',

zeroth_hash => {
  ttl => '5 seconds',
},
});
my $back1 = $self->get('key2');
print "\$back1 = '$back1'\n";
print Dumper $self->{history};
ok($back1 eq 'over2');

my $back2 = $self->get('key2');
print "\$back2 = '$back2'\n";
print Dumper $self->{history};
ok($back2 eq 'over2');

my $back3 = $self->get('key1');
print "\$back3 = '$back3'\n";
print Dumper $self->{history};
ok($back3 eq 'default1');

my $back4 = $self->get('key1');
print "\$back4 = '$back4'\n";
print Dumper $self->{history};
ok($back4 eq 'default1');

ok(unlink $over_file, $default_file);