keep analysis scripts out of CPAN; make CHANGES file; increment versions for release
[scpubgit/stemmatology.git] / morphology / t / lexeme_serialize.t
1 use lib 'lib';
2 use strict;
3 use warnings;
4 use Safe::Isa;
5 use Test::More;
6 use Text::Tradition;
7
8 eval "use Flemm";
9 plan skip_all => "Flemm 3.1 required" if $@;
10
11 binmode( STDOUT, ':utf8' );
12 binmode( STDERR, ':utf8' );
13
14 my $tf = Text::Tradition->new(
15         'input' => 'Self',
16         'file' => 't/data/besoin.xml',
17         'language' => 'French' );
18         
19 $tf->lemmatize();
20 my $graphmlstr = $tf->collation->as_graphml;
21 like( $graphmlstr, qr/graphml xmlns/, 
22         "Serialized tradition after lemmatization" );
23 like( $graphmlstr, qr/lexemes/, "Serialization contains lexeme info" );
24
25 my $tf2 = Text::Tradition->new(
26         input => 'Self',
27         string => $graphmlstr,
28         language => 'French' );
29
30 ok( $tf2->$_isa('Text::Tradition'), "Re-parsed tradition with lemmatization" );
31 is( $tf->name, $tf2->name, "Traditions have same name" );
32 foreach my $r ( $tf->collation->readings ) {
33         my $r2 = $tf2->collation->reading( $r->id );
34         ok( $r2->$_isa('Text::Tradition::Collation::Reading'),
35                 "Reading $r exists in new tradition" );
36         if( $r2 ) {
37                 is( scalar $r->lexemes, scalar $r2->lexemes,
38                         "Same number of lexemes in new tradition for $r" );
39         }
40 }
41
42 # Test a snippet of tradition with possibly-problematic saved lexemes
43 my $tf3 = Text::Tradition->new(
44         'input' => 'Self',
45         'file' => 't/data/lexformat.xml' );
46 ok( $tf3->$_isa('Text::Tradition'), 
47         "Successfully parsed tradition with incomplete lexemes" );
48
49 done_testing();