Commit | Line | Data |
0e47f4f6 |
1 | #!/usr/bin/perl -w |
2 | |
3 | use strict; |
4 | use Test::More 'no_plan'; |
5 | $| = 1; |
6 | |
7 | |
8 | |
9 | # =begin testing |
10 | { |
11 | use Text::Tradition; |
12 | |
56eefa04 |
13 | my $READINGS = 311; |
14 | my $PATHS = 361; |
15 | |
16 | my $datafile = 't/data/florilegium_tei_ps.xml'; |
17 | my $tradition = Text::Tradition->new( 'input' => 'TEI', |
18 | 'name' => 'test0', |
19 | 'file' => $datafile, |
20 | 'linear' => 1 ); |
21 | |
22 | ok( $tradition, "Got a tradition object" ); |
23 | is( scalar $tradition->witnesses, 13, "Found all witnesses" ); |
24 | ok( $tradition->collation, "Tradition has a collation" ); |
25 | |
26 | my $c = $tradition->collation; |
27 | is( scalar $c->readings, $READINGS, "Collation has all readings" ); |
28 | is( scalar $c->paths, $PATHS, "Collation has all paths" ); |
29 | is( scalar $c->relationships, 0, "Collation has all relationships" ); |
30 | |
31 | # Add a few relationships |
32 | $c->add_relationship( 'w123', 'w125', { 'type' => 'collated' } ); |
33 | $c->add_relationship( 'w193', 'w196', { 'type' => 'collated' } ); |
34 | $c->add_relationship( 'w257', 'w262', { 'type' => 'transposition' } ); |
35 | |
36 | # Now write it to GraphML and parse it again. |
37 | |
38 | my $graphml = $c->as_graphml; |
39 | my $st = Text::Tradition->new( 'input' => 'Self', 'string' => $graphml ); |
40 | is( scalar $st->collation->readings, $READINGS, "Reparsed collation has all readings" ); |
41 | is( scalar $st->collation->paths, $PATHS, "Reparsed collation has all paths" ); |
42 | is( scalar $st->collation->relationships, 3, "Reparsed collation has new relationships" ); |
43 | } |
44 | |
45 | |
46 | |
47 | # =begin testing |
48 | { |
49 | use Text::Tradition; |
50 | |
0e47f4f6 |
51 | my $cxfile = 't/data/Collatex-16.xml'; |
52 | my $t = Text::Tradition->new( |
53 | 'name' => 'inline', |
54 | 'input' => 'CollateX', |
55 | 'file' => $cxfile, |
56 | ); |
57 | my $c = $t->collation; |
58 | |
d4b75f44 |
59 | my @common = $c->calculate_common_readings(); |
60 | is( scalar @common, 8, "Found correct number of common readings" ); |
61 | my @marked = sort $c->common_readings(); |
62 | is( scalar @common, 8, "All common readings got marked as such" ); |
63 | my @expected = qw/ n1 n12 n16 n19 n20 n5 n6 n7 /; |
64 | is_deeply( \@marked, \@expected, "Found correct list of common readings" ); |
65 | } |
66 | |
67 | |
68 | |
69 | # =begin testing |
70 | { |
71 | use Text::Tradition; |
72 | |
73 | my $cxfile = 't/data/Collatex-16.xml'; |
74 | my $t = Text::Tradition->new( |
75 | 'name' => 'inline', |
76 | 'input' => 'CollateX', |
77 | 'file' => $cxfile, |
78 | ); |
79 | my $c = $t->collation; |
80 | |
4e5a7b2c |
81 | is( $c->common_predecessor( 'n9', 'n23' )->id, |
0e47f4f6 |
82 | 'n20', "Found correct common predecessor" ); |
4e5a7b2c |
83 | is( $c->common_successor( 'n9', 'n23' )->id, |
0e47f4f6 |
84 | '#END#', "Found correct common successor" ); |
85 | |
4e5a7b2c |
86 | is( $c->common_predecessor( 'n19', 'n17' )->id, |
0e47f4f6 |
87 | 'n16', "Found correct common predecessor for readings on same path" ); |
4e5a7b2c |
88 | is( $c->common_successor( 'n21', 'n26' )->id, |
0e47f4f6 |
89 | '#END#', "Found correct common successor for readings on same path" ); |
90 | } |
91 | |
92 | |
93 | |
94 | |
95 | 1; |