5
BEGIN { plan tests => 19 }
11
# Get files from the 't' directory, portably
12
chdir('t') if ( -d 't' );
18
ok( tie %ini, 'Config::IniFiles', ( -file => "test.ini", -default => 'test1', -nocase => 1 ) );
19
tied(%ini)->SetFileName("test05.ini");
20
tied(%ini)->SetWriteMode("0666");
23
# Retrieve scalar value
24
$value = $ini{test1}{one};
25
ok($value eq 'value1');
28
# Retrieve array reference
29
$value = $ini{test1}{mult};
30
ok(ref $value eq 'ARRAY');
33
# Creating a scalar value using tied hash
34
$ini{'test2'}{'seven'} = 'value7';
35
tied(%ini)->RewriteConfig;
36
tied(%ini)->ReadConfig;
37
$value = $ini{'test2'}{'seven'};
38
ok($value eq 'value7');
41
# Deleting a scalar value using tied hash
42
delete $ini{test2}{seven};
43
tied(%ini)->RewriteConfig;
44
tied(%ini)->ReadConfig;
46
$value = $ini{test2}{seven};
47
ok(! defined ($value));
50
# Testing default values using tied hash
51
ok( $ini{test2}{three} eq 'value3' );
54
# Case insensitivity in a hash parameter
55
ok( $ini{test2}{FOUR} eq 'value4' );
58
# Case insensitivity in a hash section
59
ok( $ini{TEST2}{four} eq 'value4' );
62
# Listing section names using keys
64
$ini = new Config::IniFiles( -file => "test.ini" );
65
$ini->SetFileName("test05b.ini");
66
my @S1 = $ini->Sections;
69
unless( (grep "$_", @S2) &&
70
(grep "$_", qw( test1 test2 [w]eird characters ) ) ) {
78
# Listing parameter names using keys
80
@S1 = $ini->Parameters('test1');
81
@S2 = keys %{$ini{test1}};
83
unless( (grep "$_", @S2) &&
84
(grep "$_", qw( three two one ) ) ) {
92
# Copying a section using tied hash
93
my %bak = %{$ini{test2}};
94
$value = $bak{six} || '';
95
ok( $value eq 'value6' );
98
# Deleting a whole section using tied hash
100
$value = $ini{test2};
104
# Creating a section and parameters using a hash
106
%{$ini{newsect}} = %bak;
107
$value = $ini{newsect}{four} || '';
108
ok( $value eq 'value4' );
111
# Checking use of default values for newly created section
112
$value = $ini{newsect}{one};
113
ok( $value eq 'value1' );
116
# print "Store new section in hash ........ ";
117
tied(%ini)->RewriteConfig;
118
tied(%ini)->ReadConfig;
119
$value = $ini{newsect}{four} || '';
120
ok( $value eq 'value4' );
123
# Writing 2 line multilvalue and returing it
125
$ini{test1}{multi_2} = ['line 1', 'line 2'];
126
tied(%ini)->RewriteConfig;
127
tied(%ini)->ReadConfig;
128
@value = @{$ini{test1}{multi_2}};
130
&& ($value[0] eq 'line 1')
131
&& ($value[1] eq 'line 2')
135
# Getting a default value not in the file
136
tie %ini, 'Config::IniFiles', ( -file => "test.ini", -default => 'default', -nocase => 1 );
137
$ini{default}{cassius} = 'clay';
138
$value = $ini{test1}{cassius};
139
ok( $value eq 'clay' );
142
# Setting value to number of elements in array
143
my @thing = ("one", "two", "three");
144
$ini{newsect}{five} = @thing;
145
$value = $ini{newsect}{five};
149
# Setting value to number of elements in array
151
$ini{newsect}{five} = @thing;
152
$value = $ini{newsect}{five};
155
# Clean up when we're done