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

use Test::More 'no_plan'; #tests => 1;

BEGIN {
	use_ok( 'Win32::Outlook::IAF' );
}

local $/;
my $buf;

{
	my $iaf=new Win32::Outlook::IAF;
	isa_ok($iaf,'Win32::Outlook::IAF');

	my $src='./t/test.iaf';
	open(INPUT,"<$src") || die "Can't open $src for reading: $!\n";
	binmode(INPUT);

	ok($iaf->read_iaf(<INPUT>),'read_iaf() from file');
	close(INPUT);

	is($iaf->AccountName(),'Test Account','AccountName match');
	is($iaf->SMTPServer(),'smtp.example.com','SMTPServer match');
	is($iaf->SMTPDisplayName(),'Test User','SMTPDisplayName match');
	is($iaf->SMTPEmailAddress(),'user@example.com','SMTPEmailAddress match');
	is($iaf->POP3Server(),'pop3.example.com','POP3Server match');
	is($iaf->POP3UserName(),'username','POP3UserName match');
	is($iaf->POP3Password(),'secret','POP3Password match');

	#change password
	$iaf->POP3Password('mypass');

	# clear account name
	is($iaf->AccountName(''),'','clear AccountName');

	ok($iaf->write_iaf($buf),'write_iaf()');
}

my $iaf2=new Win32::Outlook::IAF;

ok($iaf2->read_iaf($buf),'read_iaf() from buffer');

is($iaf2->POP3Password(),'mypass','changed POP3Password match');
is($iaf2->AccountName(),'','AccountName is cleared');

is($iaf2->ConnectionType(IAF_CT_DIALUP),2,'constants are exported');
is($iaf2->ConnectionType(),2,'constants are exported');

is($iaf2->SMTPSecureConnection('yes'),1,'_iaf_bool callback');
is($iaf2->SMTPSecureConnection(),1,'_iaf_bool callback');

is($iaf2->SMTPSecureConnection(1<0),0,'_iaf_bool callback');
is($iaf2->SMTPSecureConnection(),0,'_iaf_bool callback');

ok(exists $iaf2->{_POP3UserName},'POP3UserName exists');
is($iaf2->POP3UserName(undef),'username','POP3UserName exists');
is($iaf2->POP3UserName(),undef,'POP3UserName deleted');
ok(!exists $iaf2->{_POP3UserName},'POP3UserName deleted');

eval '$iaf2=new Win32::Outlook::IAF(Something => 3);';
ok($@=~/Unknown argument: Something/,'unknown argument to new()');

eval '$iaf2=new Win32::Outlook::IAF; $iaf2->NonExistent(123)';
ok($@=~/Can\'t access \'NonExistent\' field/,'nonexistent field');

eval '$iaf2=new Win32::Outlook::IAF(IMAPPort => \'abc\');';
ok($@=~/Invalid field value: abc/,'invalid field value');