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; |
4633f9e4 |
58 | |
59 | isnt( $c->reading('n23')->rank, $c->reading('n9')->rank, "Rank skew exists" ); |
60 | $c->add_relationship( 'n23', 'n9', { 'type' => 'collated', 'scope' => 'local' } ); |
61 | is( scalar $c->relationships, 4, "Found all expected relationships" ); |
62 | $c->remove_collations; |
63 | is( scalar $c->relationships, 3, "Collated relationships now gone" ); |
64 | is( $c->reading('n23')->rank, $c->reading('n9')->rank, "Aligned ranks were preserved" ); |
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; |
0e47f4f6 |
80 | |
d4b75f44 |
81 | my @common = $c->calculate_common_readings(); |
82 | is( scalar @common, 8, "Found correct number of common readings" ); |
83 | my @marked = sort $c->common_readings(); |
84 | is( scalar @common, 8, "All common readings got marked as such" ); |
85 | my @expected = qw/ n1 n12 n16 n19 n20 n5 n6 n7 /; |
86 | is_deeply( \@marked, \@expected, "Found correct list of common readings" ); |
87 | } |
88 | |
89 | |
90 | |
91 | # =begin testing |
92 | { |
93 | use Text::Tradition; |
94 | |
95 | my $cxfile = 't/data/Collatex-16.xml'; |
96 | my $t = Text::Tradition->new( |
97 | 'name' => 'inline', |
98 | 'input' => 'CollateX', |
99 | 'file' => $cxfile, |
100 | ); |
101 | my $c = $t->collation; |
102 | |
4e5a7b2c |
103 | is( $c->common_predecessor( 'n9', 'n23' )->id, |
0e47f4f6 |
104 | 'n20', "Found correct common predecessor" ); |
4e5a7b2c |
105 | is( $c->common_successor( 'n9', 'n23' )->id, |
0e47f4f6 |
106 | '#END#', "Found correct common successor" ); |
107 | |
4e5a7b2c |
108 | is( $c->common_predecessor( 'n19', 'n17' )->id, |
0e47f4f6 |
109 | 'n16', "Found correct common predecessor for readings on same path" ); |
4e5a7b2c |
110 | is( $c->common_successor( 'n21', 'n26' )->id, |
0e47f4f6 |
111 | '#END#', "Found correct common successor for readings on same path" ); |
112 | } |
113 | |
114 | |
115 | |
116 | |
117 | 1; |