# -*- cperl -*-
use strict;
use warnings;
use Capture::Tiny 'capture';
use IO::Handle;
use Test::More tests => 32;
use vars qw($DEBUG);
BEGIN {
use_ok('Text::BibTeX');
require "t/common.pl";
}
$DEBUG = 0;
# ----------------------------------------------------------------------
# entry creation and parsing from a Text::BibTeX::File object
my ($bibfile, $entry);
my $multiple_file = 'btparse/tests/data/simple.bib';
ok($bibfile = new Text::BibTeX::File $multiple_file);
err_like sub { ok($entry = new Text::BibTeX::Entry $bibfile); },
qr!$multiple_file, line 5, warning: undefined macro "junk"!;
test_entry ($entry, 'book', 'abook',
[qw(title editor publisher year)],
['A Book', 'John Q. Random', 'Foo Bar \& Sons', '1922']);
ok($entry->read ($bibfile));
test_entry ($entry, 'string', undef,
['macro', 'foo'],
['macro text ', 'blah blah ding dong ']);
ok($entry->read ($bibfile));
ok($entry->parse_ok &&
$entry->type eq 'comment' &&
$entry->metatype == BTE_COMMENT &&
$entry->value eq 'this is a comment entry, anything at all can go in it (as long as parentheses are balanced), even {braces}');
ok($entry->read ($bibfile));
ok($entry->parse_ok &&
$entry->type eq 'preamble' &&
$entry->metatype == BTE_PREAMBLE &&
$entry->value eq 'This is a preamble---the concatenation of several strings');
ok(! $entry->read ($bibfile));