Blame t/09case.t

Packit 7f3e4a
#!/usr/bin/perl
Packit 7f3e4a
Packit 7f3e4a
Packit 7f3e4a
use strict;
Packit 7f3e4a
use warnings;
Packit 7f3e4a
Packit 7f3e4a
use Test::More tests => 14;
Packit 7f3e4a
Packit 7f3e4a
use List::Util qw(first);
Packit 7f3e4a
Packit 7f3e4a
use Config::IniFiles;
Packit 7f3e4a
Packit 7f3e4a
use lib "./t/lib";
Packit 7f3e4a
Packit 7f3e4a
use Config::IniFiles::TestPaths;
Packit 7f3e4a
Packit 7f3e4a
Packit 7f3e4a
my $ini;
Packit 7f3e4a
my @members;
Packit 7f3e4a
my $string;
Packit 7f3e4a
Packit 7f3e4a
# CASE SENSITIVE CHECKS
Packit 7f3e4a
Packit 7f3e4a
# Test 1
Packit 7f3e4a
# newval and val - Check that correct case brings back the correct value
Packit 7f3e4a
$ini = Config::IniFiles->new;
Packit 7f3e4a
$ini->newval("Section", "PaRaMeTeR", "Mixed Case");
Packit 7f3e4a
$ini->newval("Section", "Parameter", "Title Case");
Packit 7f3e4a
my $mixed_case = $ini->val("Section", "PaRaMeTeR");
Packit 7f3e4a
my $title_case = $ini->val("Section", "Parameter");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is ($mixed_case, "Mixed Case", "correct case - Mixed Case");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is ($title_case, "Title Case", "correct case - Title Case");
Packit 7f3e4a
Packit 7f3e4a
# Test 2
Packit 7f3e4a
# Sections
Packit 7f3e4a
# Set up a controlled environment
Packit 7f3e4a
$ini = Config::IniFiles->new;
Packit 7f3e4a
$ini->newval("Section", "Parameter", "Value");
Packit 7f3e4a
$ini->newval("section", "parameter", "value");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is (scalar($ini->Sections()), 2, "2 sections");
Packit 7f3e4a
Packit 7f3e4a
# Test 3
Packit 7f3e4a
# Deleting values
Packit 7f3e4a
# Set up a controlled environment
Packit 7f3e4a
Packit 7f3e4a
$ini = Config::IniFiles->new;
Packit 7f3e4a
Packit 7f3e4a
$ini->newval("Section", "Parameter", "Title Case");
Packit 7f3e4a
$ini->newval("Section", "parameter", "lower case");
Packit 7f3e4a
$ini->newval("Section", "PARAMETER", "UPPER CASE");
Packit 7f3e4a
Packit 7f3e4a
my $delete_case_check_pass = 1;
Packit 7f3e4a
Packit 7f3e4a
@members = $ini->Parameters("Section");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is (scalar(@members), 3, "Delete check pass - 3 members");
Packit 7f3e4a
Packit 7f3e4a
$ini->delval("Section", "PARAMETER");
Packit 7f3e4a
Packit 7f3e4a
@members = $ini->Parameters("Section");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is (scalar(@members), 2 , "Delete check pass after delete - 2 members");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
ok (first { index($_, "Parameter") >= 0 } @members, "Parameter exists");
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
ok (first { index($_, "parameter") >= 0 } @members, "parameter exists");
Packit 7f3e4a
Packit 7f3e4a
{
Packit 7f3e4a
    # Test 4
Packit 7f3e4a
    # Parameters
Packit 7f3e4a
    $ini = Config::IniFiles->new;
Packit 7f3e4a
    $ini->newval("Section", "PaRaMeTeR", "Mixed Case");
Packit 7f3e4a
    $ini->newval("Section", "Parameter", "Title Case");
Packit 7f3e4a
    $ini->newval("SECTION", "Parameter", "N/A");
Packit 7f3e4a
    my @parameter_list = $ini->Parameters("SECTION");
Packit 7f3e4a
    my $parameters_case_check_pass = 1;
Packit 7f3e4a
    $parameters_case_check_pass = 0 unless scalar(@parameter_list) == 1;
Packit 7f3e4a
    $parameters_case_check_pass = 0 unless $parameter_list[0] eq "Parameter";
Packit 7f3e4a
    @parameter_list = $ini->Parameters("Section");
Packit 7f3e4a
    $parameters_case_check_pass = 0 unless scalar(@parameter_list) == 2;
Packit 7f3e4a
    my $parameters = join " ", @parameter_list;
Packit 7f3e4a
    $parameters_case_check_pass = 0 unless ($parameters =~ /PaRaMeTeR/);
Packit 7f3e4a
    $parameters_case_check_pass = 0 unless ($parameters =~ /Parameter/);
Packit 7f3e4a
    # TEST
Packit 7f3e4a
    ok ($parameters_case_check_pass, "Parameters case check pass");
Packit 7f3e4a
}
Packit 7f3e4a
Packit 7f3e4a
{
Packit 7f3e4a
    # Test 5
Packit 7f3e4a
    # Case sensitive handling of groups
Packit 7f3e4a
    # Set up a controlled environment
Packit 7f3e4a
    $ini = Config::IniFiles->new;
Packit 7f3e4a
    $ini->newval("interface foo", "parameter", "foo");
Packit 7f3e4a
    $ini->newval("interface bar", "parameter", "bar");
Packit 7f3e4a
    $ini->newval("INTERFACE blurgle", "parameter", "flurgle");
Packit 7f3e4a
    my $group_case_check_pass = 1;
Packit 7f3e4a
    # We should have two groups - "interface" and "Interface"
Packit 7f3e4a
    my $group_case_count = $ini->Groups();
Packit 7f3e4a
    $group_case_check_pass = 0 unless ($group_case_count == 2);
Packit 7f3e4a
    # We don't want to get the "interface" entries when we use the wrong case
Packit 7f3e4a
    @members = $ini->GroupMembers("Interface");
Packit 7f3e4a
    $group_case_check_pass = 0 unless (scalar(@members) == 0);
Packit 7f3e4a
    # We *do* want to get the "interface" entries when we use the right case
Packit 7f3e4a
    @members = $ini->GroupMembers("interface");
Packit 7f3e4a
    $group_case_check_pass = 0 unless (scalar(@members) == 2);
Packit 7f3e4a
    $group_case_check_pass = 0 unless (grep {/interface foo/} @members);
Packit 7f3e4a
    $group_case_check_pass = 0 unless (grep {/interface bar/} @members);
Packit 7f3e4a
    # TEST
Packit 7f3e4a
    ok ($group_case_check_pass, "Group cae check pass");
Packit 7f3e4a
}
Packit 7f3e4a
Packit 7f3e4a
Packit 7f3e4a
Packit 7f3e4a
# CASE INSENSITIVE CHECKS
Packit 7f3e4a
Packit 7f3e4a
{
Packit 7f3e4a
    # Test 6
Packit 7f3e4a
    # newval - Check that case-insensitive version returns one value
Packit 7f3e4a
    $ini = Config::IniFiles->new( -nocase => "1" );
Packit 7f3e4a
    $ini->newval("Section", "PaRaMeTeR", "Mixed Case");
Packit 7f3e4a
    $ini->newval("Section", "Parameter", "Title Case");
Packit 7f3e4a
    my @values = $ini->val("Section", "parameter");
Packit 7f3e4a
Packit 7f3e4a
    # TEST
Packit 7f3e4a
    is_deeply (\@values, ["Title Case"],
Packit 7f3e4a
        "case-insensitive version returns one value"
Packit 7f3e4a
    );
Packit 7f3e4a
}
Packit 7f3e4a
Packit 7f3e4a
# Test 7
Packit 7f3e4a
# Case insensitive handling of groups
Packit 7f3e4a
$ini = Config::IniFiles->new( -file =>t_file('test.ini'), -nocase => 1 );
Packit 7f3e4a
# TEST
Packit 7f3e4a
is_deeply(
Packit 7f3e4a
    [$ini->GroupMembers("GrOuP")],
Packit 7f3e4a
    ["group member one", "group member two", "group member three"]
Packit 7f3e4a
);
Packit 7f3e4a
Packit 7f3e4a
$ini = Config::IniFiles->new( -file => t_file("test.ini"), -default => 'test1', -nocase => 1 );
Packit 7f3e4a
$ini->SetFileName(t_file("test09.ini"));
Packit 7f3e4a
Packit 7f3e4a
# test 8
Packit 7f3e4a
# Case insensitivity in parameters
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is( scalar($ini->val('test2', 'FOUR')),
Packit 7f3e4a
    'value4',
Packit 7f3e4a
    "Case insensitivity in parameters",
Packit 7f3e4a
);
Packit 7f3e4a
Packit 7f3e4a
# test 9
Packit 7f3e4a
# Case insensitivity in sections
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is ( scalar($ini->val('TEST2', 'four')),
Packit 7f3e4a
    'value4',
Packit 7f3e4a
    "Case insensitivity in sections",
Packit 7f3e4a
);
Packit 7f3e4a
Packit 7f3e4a
Packit 7f3e4a
# TEST
Packit 7f3e4a
is (
Packit 7f3e4a
    scalar($ini->val('mixedcasesect', 'mixedcaseparam')),
Packit 7f3e4a
    'MixedCaseVal',
Packit 7f3e4a
    "Mixed case val.",
Packit 7f3e4a
);
Packit 7f3e4a