ensure graph names come through for undirected graphs too (tla/stemmaweb#28)
[scpubgit/stemmatology.git] / analysis / t / text_tradition_stemma.t
CommitLineData
64a36834 1#!/usr/bin/perl -w
2
3use strict;
4use Test::More 'no_plan';
5$| = 1;
6
7
8
9# =begin testing
10{
64a36834 11use TryCatch;
12
13use_ok( 'Text::Tradition::Stemma' );
14
64a36834 15# Try to create a bad graph
02b6340e 16my $baddotfh;
17open( $baddotfh, 't/data/besoin_bad.dot' ) or die "Could not open test dotfile";
18try {
19 my $stemma = Text::Tradition::Stemma->new( dot => $baddotfh );
20 ok( 0, "Created broken stemma from dotfile with syntax error" );
21} catch( Text::Tradition::Error $e ) {
22 like( $e->message, qr/^Error trying to parse/, "Syntax error in dot threw exception" );
64a36834 23}
24
25# Create a good graph
26my $dotfh;
27open( $dotfh, 't/data/florilegium.dot' ) or die "Could not open test dotfile";
28binmode( $dotfh, ':utf8' );
ace5fce5 29my $stemma = Text::Tradition::Stemma->new( dot => $dotfh );
64a36834 30is( ref( $stemma ), 'Text::Tradition::Stemma', "Created stemma from good dotfile" );
31is( scalar $stemma->witnesses, 13, "Found correct number of extant witnesses" );
32is( scalar $stemma->hypotheticals, 8, "Found correct number of extant hypotheticals" );
f96630e3 33ok( $stemma->has_identifier, "Stemma identifier was found in dot" );
34is( $stemma->identifier, 'Coislinianum lineage', "Correct stemma identifier was found in dot" );
64a36834 35my $found_unicode_sigil;
36foreach my $h ( $stemma->hypotheticals ) {
37 $found_unicode_sigil = 1 if $h eq "\x{3b1}";
38}
39ok( $found_unicode_sigil, "Found a correctly encoded Unicode sigil" );
ea45d2a6 40
cb741417 41# Create an undirected graph
42my $undirdotfh;
43open( $undirdotfh, 't/data/besoin_undirected.dot' ) or die "Could not open test dotfile";
44binmode( $undirdotfh, ':utf8' );
45my $udstemma = Text::Tradition::Stemma->new( dot => $undirdotfh );
46is( ref( $udstemma ), 'Text::Tradition::Stemma', "Created stemma from undirected dotfile" );
47is( scalar $udstemma->witnesses, 13, "Found correct number of extant witnesses" );
48is( scalar $udstemma->hypotheticals, 12, "Found correct number of hypotheticals" );
49ok( $udstemma->is_undirected, "Stemma was recorded as undirected" );
6665a327 50is( $udstemma->identifier, "RHM stemma", "Undirected graph retained its name" );
64a36834 51}
52
53
54
55
561;