|
Packit |
d27c7e |
# Hey Emacs, this is -*- perl -*- !
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
# Before `make install' is performed this script should be runnable with
|
|
Packit |
d27c7e |
# `make test'. After `make install' it should work as `perl test.pl'
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
# $Id: schema.t,v 1.1 1999/08/10 21:42:39 kmacleod Exp $
|
|
Packit |
d27c7e |
#
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
######################### We start with some black magic to print on failure.
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
# Change 1..1 below to 1..last_test_to_print .
|
|
Packit |
d27c7e |
# (It may become useful if the test is moved to ./t subdirectory.)
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
BEGIN { $| = 1; print "1..2\n"; }
|
|
Packit |
d27c7e |
END {print "not ok 1\n" unless $loaded;}
|
|
Packit |
d27c7e |
use XML::Parser::PerlSAX;
|
|
Packit |
d27c7e |
use XML::PatAct::MatchName;
|
|
Packit |
d27c7e |
use XML::PatAct::ToObjects;
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$loaded = 1;
|
|
Packit |
d27c7e |
print "ok 1\n";
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
my $patterns = [
|
|
Packit |
d27c7e |
'schema' => [ qw{ -holder } ],
|
|
Packit |
d27c7e |
'table' => [ qw{ -make Schema::Table } ],
|
|
Packit |
d27c7e |
'name' => [ qw{ -field Name -as-string } ],
|
|
Packit |
d27c7e |
'summary' => [ qw{ -field Summary -as-string } ],
|
|
Packit |
d27c7e |
'description' => [ qw{ -field Description -as-string } ],
|
|
Packit |
d27c7e |
'column' => [ qw{ -make Schema::Column -push-field Columns } ],
|
|
Packit |
d27c7e |
'unique' => [ qw{ -field Unique -value 1 } ],
|
|
Packit |
d27c7e |
'non-null' => [ qw{ -field NonNull -value 1 } ],
|
|
Packit |
d27c7e |
'default' => [ qw{ -field Default -as-string } ],
|
|
Packit |
d27c7e |
];
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
my $matcher = XML::PatAct::MatchName->new( Patterns => $patterns );
|
|
Packit |
d27c7e |
my $handler = XML::PatAct::ToObjects->new( Patterns => $patterns,
|
|
Packit |
d27c7e |
Matcher => $matcher);
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
my $parser = XML::Parser::PerlSAX->new( Handler => $handler );
|
|
Packit |
d27c7e |
$schema = $parser->parse(Source => { String => <<'EOF' } );
|
|
Packit |
d27c7e |
<schema>
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
<name>MyTable</name>
|
|
Packit |
d27c7e |
<summary>A short summary</summary>
|
|
Packit |
d27c7e |
<description>A long description that may
|
|
Packit |
d27c7e |
contain a subset of HTML</description>
|
|
Packit |
d27c7e |
<column>
|
|
Packit |
d27c7e |
<name>MyColumn1</name>
|
|
Packit |
d27c7e |
<summary>A short summary</summary>
|
|
Packit |
d27c7e |
<description>A long description</description>
|
|
Packit |
d27c7e |
<unique/>
|
|
Packit |
d27c7e |
<non-null/>
|
|
Packit |
d27c7e |
<default>42</default>
|
|
Packit |
d27c7e |
</column>
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
</schema>
|
|
Packit |
d27c7e |
EOF
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
$not_ok = 0;
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema)) || (ref($schema->[0]) ne 'Schema::Table');
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Name})) || ($schema->[0]{Name} ne 'MyTable');
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Summary}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Summary} ne 'A short summary');
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Description}));
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}))
|
|
Packit |
d27c7e |
|| (ref($schema->[0]{Columns}[0]) ne 'Schema::Column');
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}[0]{Name}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Columns}[0]{Name} ne 'MyColumn1');
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}[0]{Summary}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Columns}[0]{Summary} ne 'A short summary');
|
|
Packit |
d27c7e |
$not_ok |= !defined($schema->[0]{Columns}[0]{Description});
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}[0]{Unique}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Columns}[0]{Unique} != 1);
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}[0]{NonNull}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Columns}[0]{NonNull} != 1);
|
|
Packit |
d27c7e |
$not_ok |= (!defined($schema->[0]{Columns}[0]{Default}))
|
|
Packit |
d27c7e |
|| ($schema->[0]{Columns}[0]{Default} != 42);
|
|
Packit |
d27c7e |
|
|
Packit |
d27c7e |
print $not_ok ? "not ok 2\n" : "ok 2\n";
|