4
# $Id: 09case.t,v 1.3 2002-08-15 21:34:00 wadg Exp $
6
BEGIN { plan tests => 10 }
12
# Get files from the 't' directory, portably
13
chdir('t') if ( -d 't' );
15
# CASE SENSITIVE CHECKS
18
# newval and val - Check that correct case brings back the correct value
19
$ini = new Config::IniFiles;
20
$ini->newval("Section", "PaRaMeTeR", "Mixed Case");
21
$ini->newval("Section", "Parameter", "Title Case");
22
my $mixed_case = $ini->val("Section", "PaRaMeTeR");
23
my $title_case = $ini->val("Section", "Parameter");
24
ok(($mixed_case eq "Mixed Case") and ($title_case eq "Title Case"));
28
# Set up a controlled environment
29
$ini = new Config::IniFiles;
30
$ini->newval("Section", "Parameter", "Value");
31
$ini->newval("section", "parameter", "value");
32
my $section_case_check_pass = 1;
33
$section_case_check_pass = 0 unless (scalar($ini->Sections()) == 2);
34
ok($section_case_check_pass);
38
# Set up a controlled environment
39
$ini = new Config::IniFiles;
40
$ini->newval("Section", "Parameter", "Title Case");
41
$ini->newval("Section", "parameter", "lower case");
42
$ini->newval("Section", "PARAMETER", "UPPER CASE");
43
my $delete_case_check_pass = 1;
44
@members = $ini->Parameters("Section");
45
$delete_case_check_pass = 0 unless (scalar(@members) == 3);
46
$ini->delval("Section", "PARAMETER");
47
@members = $ini->Parameters("Section");
48
$delete_case_check_pass = 0 unless (scalar(@members) == 2);
49
$delete_case_check_pass = 0 unless (grep {/Parameter/} @members);
50
$delete_case_check_pass = 0 unless (grep {/parameter/} @members);
51
ok($delete_case_check_pass);
55
$ini = new Config::IniFiles;
56
$ini->newval("Section", "PaRaMeTeR", "Mixed Case");
57
$ini->newval("Section", "Parameter", "Title Case");
58
$ini->newval("SECTION", "Parameter", "N/A");
59
my @parameter_list = $ini->Parameters("SECTION");
60
my $parameters_case_check_pass = 1;
61
$parameters_case_check_pass = 0 unless scalar(@parameter_list) == 1;
62
$parameters_case_check_pass = 0 unless $parameter_list[0] eq "Parameter";
63
@parameter_list = $ini->Parameters("Section");
64
$parameters_case_check_pass = 0 unless scalar(@parameter_list) == 2;
65
my $parameters = join " ", @parameter_list;
66
$parameters_case_check_pass = 0 unless ($parameters =~ /PaRaMeTeR/);
67
$parameters_case_check_pass = 0 unless ($parameters =~ /Parameter/);
68
ok($parameters_case_check_pass);
71
# Case sensitive handling of groups
72
# Set up a controlled environment
73
$ini = new Config::IniFiles;
74
$ini->newval("interface foo", "parameter", "foo");
75
$ini->newval("interface bar", "parameter", "bar");
76
$ini->newval("INTERFACE blurgle", "parameter", "flurgle");
77
my $group_case_check_pass = 1;
78
# We should have two groups - "interface" and "Interface"
79
my $group_case_count = $ini->Groups();
80
$group_case_check_pass = 0 unless ($group_case_count == 2);
81
# We don't want to get the "interface" entries when we use the wrong case
82
@members = $ini->GroupMembers("Interface");
83
$group_case_check_pass = 0 unless (scalar(@members) == 0);
84
# We *do* want to get the "interface" entries when we use the right case
85
@members = $ini->GroupMembers("interface");
86
$group_case_check_pass = 0 unless (scalar(@members) == 2);
87
$group_case_check_pass = 0 unless (grep {/interface foo/} @members);
88
$group_case_check_pass = 0 unless (grep {/interface bar/} @members);
89
ok($group_case_check_pass);
93
# CASE INSENSITIVE CHECKS
96
# newval - Check that case-insensitive version returns one value
97
$ini = new Config::IniFiles( -nocase => "1" );
98
$ini->newval("Section", "PaRaMeTeR", "Mixed Case");
99
$ini->newval("Section", "Parameter", "Title Case");
100
my @values = $ini->val("Section", "parameter");
101
ok((scalar(@values) == 1) and ($values[0] eq "Title Case"));
104
# Case insensitive handling of groups
105
$ini = new Config::IniFiles( -file =>'test.ini', -nocase => 1 );
106
$string = join " ", $ini->GroupMembers("GrOuP");
107
ok($string eq "group member one group member two group member three");
109
$ini = new Config::IniFiles( -file => "test.ini", -default => 'test1', -nocase => 1 );
110
$ini->SetFileName("test09.ini");
113
# Case insensitivity in parameters
114
ok( (defined $ini) && ($ini->val('test2', 'FOUR') eq 'value4') );
117
# Case insensitivity in sections
118
ok( (defined $ini) && ($ini->val('TEST2', 'four') eq 'value4') );
122
ok( (defined $ini) && ($v = $ini->val('mixedcasesect', 'mixedcaseparam')) && ($v eq 'MixedCaseVal'));