#!/usr/bin/perl -w use Test::Most; use lib qw(./lib); use Data::Dumper; # Check we can load module BEGIN { use_ok('Text::vCard::Addressbook'); } local $SIG{__WARN__} = sub { die $_[0] }; ####### # Test new() ####### my $adbk = Text::vCard::Addressbook->new( { 'source_file' => 't/apple_version3.vcf' } ); my $vcf = $adbk->export(); like( $vcf, qr/TYPE=work/, 'export() - added type def' ); my @lines = split( "\x0D\x0A", $vcf ); # \x0D\x0A == \r\n is( $lines[0], 'BEGIN:VCARD', 'export() - First line correct' ); is( $lines[$#lines], 'END:VCARD', 'export() - Last line correct' ); $adbk->set_encoding('utf-8'); my @data = ( 'BEGIN:VCARD', 'item1.X-ABADR:uk', 'item2.X-ABADR:uk', 'N:T-surname;T-first;;;', 'TEL;TYPE=home,pref:020 666 6666', 'TEL;TYPE=cell:0777 777 7777', 'item2.ADR;TYPE=work:;;Test Road;Test City;;Test Postcode;Test Country', 'item1.ADR;TYPE=home,pref:;;Pref Test Road;Pref Test City;;Pref Test Postcod', ' e;Pref Test Country', 'VERSION:3.0', 'FN:T-firstname T-surname', 'END:VCARD', ); @lines = split( "\x0D\x0A", $adbk->export() ); # \x0D\x0A == \r\n is_deeply( [ sort @lines ], [ sort @data ], 'set_encoding() - returned data matched that expected' ); #is_deeply(\@lines,\@data,'export() - returned data matched that expected'); #my $notes = Text::vCard::Addressbook->new({ 'source_file' => 't/notes.vcf'}); #print Dumper($notes); #my $res = $notes->export(); #print Dumper($res); { my $ab = Text::vCard::Addressbook->new(); is $ab->export, '', 'export empty addressbook'; my $vcard = $ab->add_vcard; isa_ok $vcard, 'Text::vCard'; like $ab->export, qr{^BEGIN:VCARD\s+END:VCARD\x0D\x0A$}, 'single empty vcard'; $vcard->fullname('Foo Bar'); $vcard->EMAIL('foo@bar.com'); my $node = $vcard->add_node( { 'node_type' => 'TEL', # fields => ['TYPE'], # data => { TYPE => 'Work' }, } ); isa_ok $node, 'Text::vCard::Node'; #$vcard->TEL('01-23456789'); eval { $vcard->random_field('Something else'); }; like $@, qr{Can't locate object method "random_field" via package "Text::vCard"}, 'exception'; #diag $ab->export; } done_testing;