File: save.t

package info (click to toggle)
libconfigreader-simple-perl 1.29-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 220 kB
  • ctags: 27
  • sloc: perl: 657; makefile: 2
file content (86 lines) | stat: -rw-r--r-- 2,399 bytes parent folder | download | duplicates (7)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
use Test::More tests => 22;
use Test::Warn;

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

my $class = 'ConfigReader::Simple';

use_ok( $class );
can_ok( $class, qw( save ) );

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
my @Directives = qw( Test1 Test2 Test3 Test4 );
my @Files      = map { catfile( "t" , "$_.config" ) } qw(save_test1 save_test2);

unlink @Files;

my $config = $class->new(
	catfile( qw( t example.config) ), 
	\@Directives 
	);
isa_ok( $config, $class );

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with no values
{
my $result;

warning_like { $result = $config->save() } qr/No arguments to method/,
	'No arguments emits warning';

ok( ! defined $result, 'No arguments return undef' );
is( $@, '', 'There is nothing in $@ for a warning' );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with one value
{
ok( ! -e $Files[0], 'File does not exist' );
my $result = $config->save( $Files[0] );
ok( $result, 'Single argument returns true value' );
ok( -e $Files[0], 'File exists' );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with two values
foreach my $value ( undef, 'foo', {}, 0 )
	{
	my $result = eval { $config->save( $Files[0] => $value ) };
	ok( ! defined $result, 'Bad arguments return undef' );
	like( $@, qr/Argument is not an array reference/,
		'Error string says the right thing' );
	}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with three values
{
my $result = eval { $config->save( $Files[0] => [], $Files[1] ) };
ok( ! defined $result, 'Three arguments return undef' );
like( $@, qr/Odd number of arguments/ );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test with four values
{
my $result = eval { $config->save(
	$Files[0] => [ qw( Test1 Test2 ) ],
	$Files[1] => [ qw( Zero Test3 )  ]
	) };
ok( $result, 'Four arguments return true' );
}

# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# test when _save fails
{
no warnings 'redefine';
no warnings 'once';
no strict 'refs';
local *{ "${class}::_save" } = sub { $ConfigReader::Simple::ERROR = 'Oops'; 0 };
ok( ! $class->_save, "_save mock fails as it should" );

warning_like
	{ $config->save( $Files[0] => [ qw( Test1 Test2 ) ] ) }
	qr/Oops/;
}

unlink @Files;