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

use strict;
use warnings;

use Test::More;
use lib '../blib/lib';
use lib 'blib/lib';
use Text::ASCIIMathML;
use lib 't';
use Entities;

use vars qw($opt_l);

use Getopt::Long;
Getopt::Long::config('no_ignore_case');
exit unless GetOptions qw(l);

@ARGV = <*.math t/*.math> unless @ARGV;

my @lines = <>;
my $lines = join '', grep(! /^\s*\#/, @lines);
my @tests = split /^\?[ \t]*/m, $lines;
shift @tests;
my @latex_tests = grep /\$/, @tests;

plan tests => @tests+@latex_tests;

my @attr = (mathcolor=>"red", displaystyle=>"true", fontfamily=>"serif");
# Do the tests
my $parser = new Text::ASCIIMathML;
$parser->SetAttribute(ForMoz=>1);
TEST:
foreach my $test (@tests) {
    my ($input, $outputs) = split /\n/, $test, 2;
    my ($mathml, $latex) = $outputs =~ /(.*?)(\$.*)?$/s;
    $mathml =~ s/\n *//g;
    $mathml = MathML::Entities::name2numbered($mathml);
    $mathml =~ s/(&\#x)0([\da-f]{4};)/$1$2/ig;
    is ($parser->TextToMathML($input, [title=>$input], \@attr),
	$mathml, qq(mathml "$input"));
    if ($latex) {
	$latex =~ s/\n+$//;
	my $t = $parser->TextToMathMLTree($input, undef, \@attr);
	is ($t->latex($parser), $latex, qq(latex "$input"));
    }
    elsif ($opt_l) {
	my $t = $parser->TextToMathMLTree($input, undef, \@attr);
	print STDERR qq($input\n);
	print STDERR $t->latex(),"\n" if $t;
    }
}