first commit
This commit is contained in:
160
perl/lib/Graph-Easy-0.76/t/parse_edge.t
Normal file
160
perl/lib/Graph-Easy-0.76/t/parse_edge.t
Normal file
@@ -0,0 +1,160 @@
|
||||
#!/usr/bin/perl -w
|
||||
|
||||
use Test::More;
|
||||
use strict;
|
||||
|
||||
BEGIN
|
||||
{
|
||||
plan tests => 83;
|
||||
chdir 't' if -d 't';
|
||||
use lib '../lib';
|
||||
use_ok ("Graph::Easy::Parser") or die($@);
|
||||
};
|
||||
|
||||
can_ok ("Graph::Easy::Parser", qw/
|
||||
new
|
||||
from_text
|
||||
from_file
|
||||
reset
|
||||
error
|
||||
_match_edge
|
||||
_match_node
|
||||
_match_attributes
|
||||
_match_optional_attributes
|
||||
/);
|
||||
|
||||
#############################################################################
|
||||
# create parser object
|
||||
|
||||
my $parser = Graph::Easy::Parser->new();
|
||||
|
||||
is (ref($parser), 'Graph::Easy::Parser');
|
||||
is ($parser->error(), '', 'no error yet');
|
||||
|
||||
my $line = 0;
|
||||
my $qr_edge = $parser->_match_edge();
|
||||
my $qr_node = $parser->_match_node();
|
||||
my $qr_oatr = $parser->_match_optional_attributes();
|
||||
|
||||
#my $r = '-- Label --> [ AA ]';
|
||||
#$r = '--> [ AB ]';
|
||||
#$r = '<--> [ AB ]';
|
||||
#$r = '<- Label -> [ AB ]';
|
||||
#$r = '--> { color: red; } [ AB ]';
|
||||
|
||||
foreach my $l (<DATA>)
|
||||
{
|
||||
chomp ($l);
|
||||
next if $l =~ /^\s*\z/; # skip empty ones
|
||||
next if $l =~ /^#/; # skip comments
|
||||
|
||||
my ($in,$type,$style,$label) = split /\|/, $l;
|
||||
|
||||
if ($type < 0)
|
||||
{
|
||||
if (!unlike ($in, qr/^$qr_edge\z/, "$in"))
|
||||
{
|
||||
$in =~ /^$qr_edge/;
|
||||
diag ("# '$1' '$2' '$3' '$4' '$5' '$6'\n");
|
||||
}
|
||||
next;
|
||||
}
|
||||
|
||||
# XXX TODO check edge style and type:
|
||||
# 0 - undirected
|
||||
# 2 - right
|
||||
# 3 - left and right
|
||||
|
||||
like ($in, qr/^$qr_edge\z/, "$in");
|
||||
|
||||
# $in =~ /^$qr_edge\z/;
|
||||
# diag("# '$1' '$2' '$3' '$4' '$5' '$6' '$7' '$8' '$9'\n");
|
||||
}
|
||||
|
||||
__DATA__
|
||||
# edges without arrows
|
||||
--|0|--
|
||||
==|0|==
|
||||
..|0|..
|
||||
- |-1| -
|
||||
- - |0| -
|
||||
---|0|--
|
||||
===|0|==
|
||||
...|0|..
|
||||
- - |0| -
|
||||
----|0|--
|
||||
====|0|==
|
||||
....|0|..
|
||||
<->|3|--
|
||||
<=>|3|==
|
||||
<.>|3|..
|
||||
<- >|3| -
|
||||
<-->|3|--
|
||||
<==>|3|==
|
||||
<..>|3|..
|
||||
<- - >|3| -
|
||||
<--->|3|--
|
||||
<===>|3|==
|
||||
<...>|3|..
|
||||
<- - >|3| -
|
||||
->|2|--
|
||||
=>|2|==
|
||||
.>|2|..
|
||||
- >|2| -
|
||||
-->|2|--
|
||||
==>|2|==
|
||||
..>|2|..
|
||||
~~>|2|~~
|
||||
= >|2|=
|
||||
- - >|2| -
|
||||
--->|2|--
|
||||
===>|2|==
|
||||
...>|2|..
|
||||
- - >|2| -
|
||||
# with labels
|
||||
<- ->|3| -
|
||||
- Landstrasse --|-1|--
|
||||
== Autobahn ==>|2|==
|
||||
.. Im Bau ..>|2|..
|
||||
- Tunnel - >|2| -
|
||||
= label =>|2|==|label
|
||||
<-- Landstrasse -->|3|--
|
||||
<== Autobahn ==>|3|==
|
||||
<.. Im Bau ..>|3|..
|
||||
<- Tunnel - >|3| -
|
||||
<- Tunnel -->|-1|
|
||||
<-- Tunnel -->|3|
|
||||
<-- Landstrasse -->|3|--
|
||||
<~~ Landstrasse ~~>|3|~~
|
||||
<== Landstrasse ==>|3|==
|
||||
<.- Landstrasse .->|3|.-
|
||||
<..- Landstrasse ..->|3|..-
|
||||
-- Landstrasse -->|2|--
|
||||
~~ Landstrasse ~~>|2|~~
|
||||
== Landstrasse ==>|2|==
|
||||
.- Landstrasse .->|2|.-
|
||||
..- Landstrasse ..->|2|..-
|
||||
##################
|
||||
# Failures
|
||||
# no left-only edges allowed
|
||||
<-|-1|--
|
||||
<=|-1|==
|
||||
<.|-1|..
|
||||
<- |-1| -
|
||||
<--|-1|--
|
||||
<==|-1|==
|
||||
<..|-1|..
|
||||
<- -|-1| -
|
||||
<-- Landstrasse -|-1|
|
||||
<== Autobahn =|-1|
|
||||
<.. Im Bau .|-1|
|
||||
<- - Tunnel -|-1|
|
||||
<--|-1|
|
||||
# mismatching pattern
|
||||
<-- Landstrasse ==>|-1|
|
||||
# double "<<" or ">>" are not good
|
||||
<<--|-1|
|
||||
<<--|-1|
|
||||
<<-->>|-1|
|
||||
<<. -.->>|-1|
|
||||
< - Tunnel - >|-1|
|
||||
Reference in New Issue
Block a user