The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl

use strict;
use warnings;

use Test::More tests => 5;

use Config::IniFiles;

use lib "./t/lib";

use Config::IniFiles::TestPaths;

my ($ini, $value);

t_unlink("test07.ini");

# Test 1
# Multiple equals in a parameter - should split on the first
$ini = Config::IniFiles->new( -file => t_file('test.ini') );
# TEST
is ( scalar($ini->val('test7', 'criterion')), 'price <= maximum',
    "Multiple equals in a parameter - should split on the first",
);

# Test 2
# Parameters whose name is a substring of existing parameters should be loaded
$value = $ini->val('substring', 'boot');
# TEST
is( $value, 'smarty',
    "Parameters whose name is a substring of existing parameters should be loaded");

# test 3
# See if default option works
$ini = Config::IniFiles->new( -file => t_file("test.ini"), -default => 'test1', -nocase => 1 );
$ini->SetFileName(t_file("test07.ini"));
$ini->SetWriteMode("0666");

# TEST
ok (defined($ini),
    "default option works - \$ini works.");

# TEST
is ( scalar($ini->val('test2', 'three')),  'value3',
    "default option works - ->val"
);

# Test 4
# Check that Config::IniFiles respects RO permission on original INI file
$ini->WriteConfig(t_file("test07.ini"));
chmod 0444, t_file("test07.ini");

SKIP:
{
    if (-w t_file("test07.ini"))
    {
        skip ('RO Permissions not settable.', 1);
    }
    else
    {
        $ini->setval('test2', 'three', 'should not be here');
        $value = $ini->WriteConfig(t_file("test07.ini"));
        warn "Value is $value!" if (defined $value);
        # TEST
        ok(!defined($value), "Value is undefined.");
    } # end if
}

# Clean up when we're done
t_unlink("test07.ini");