The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use Test;
use Config::IniFiles;

BEGIN { plan tests => 9 }

my ($en, $ini, $success);

# Get files from the 't' directory, portably
chdir('t') if ( -d 't' );

# test 1
# print "Empty list when no groups ........ ";
$en = new Config::IniFiles( -file => 'en.ini' );
ok( scalar($en->Groups) == 0 );

# test 2
# print "Creating new object, no file ..... ";
ok($ini = new Config::IniFiles);

# test 3
# print "Setting new file name .............";
ok($ini->SetFileName('test06.ini'));

# test 4
# print "Saving under new file name ........";
if ($ini->RewriteConfig()) {
	if ( -f 'test06.ini' ) {
		$success = 1;
	} else {
		$success = 0;
	}
} else {
	$success = 0;
}
ok($success);

# test 5
# print "SetSectionComment .................";
$ini->newval("Section1", "Parameter1", "Value1");
my @section_comment = ("Line 1 of section comment.", "Line 2 of section comment", "Line 3 of section comment");
ok($ini->SetSectionComment("Section1", @section_comment));

# test 6
# print "GetSectionComment .................";
my @comment;
if (@comment = $ini->GetSectionComment("Section1")) {
	if ((join "\n", @comment) eq ("# Line 1 of section comment.\n# Line 2 of section comment\n# Line 3 of section comment")) {
		$success = 1;
	} else {
		$success = 0;
	}
} else {
	$success = 0;
}
ok($success);

# test 7
# print "DeleteSectionComment ..............";
$ini->DeleteSectionComment("Section1");
ok(not defined $ini->GetSectionComment("Section1"));

# test 8
# DeleteSection
$ini->DeleteSection( 'Section1' );
ok( not $ini->Parameters( 'Section1' ) );

# test 9
# Delete entire config
$ini->Delete();
ok( not $ini->Sections() );

# Clean up when we're done
unlink "test06.ini";