#!/usr/bin/perl -w BEGIN { unshift @INC,'../lib'; } use Test::More tests=>4; use GraphViz::Data::Structure; while (my $current = get_current()) { %hash = eval $current; my $result = eval $hash{'code'}; die $@ if $@; is (normalize($result), normalize($hash{'out'}), $hash{'name'}); } sub get_current { my $code = ""; while () { last if /%%/; $code .= $_; } $code; } sub normalize { } __DATA__ (name => 'regexp-textual', code => 'my $a = qr/foo/; GraphViz::Data::Structure->new($a,graph=>{label=>"regexp-textual"})->graph->as_canon', out => qq(digraph test { graph [ratio=fill, label="regexp-textual"]; node [label="\\N"]; { graph [rank=same]; gvds_atom0 [label="qr/foo/", rank=0, shape=plaintext]; } } ) ) %% (name => 'regexp-ref', code => 'my $a = qr/.*?foo[^2]\\d\\w/; GraphViz::Data::Structure->new(\\$a,graph=>{label=>"regexp-ref"})->graph->as_canon', out => qq(digraph test { graph [ratio=fill, label="regexp-ref"]; node [label="\\N"]; { graph [rank=same]; gvds_scalar0 [label="", color=white, fontcolor=black, rank=0, shape=record, style=filled]; } { graph [rank=same]; gvds_atom0 [label="qr/.*?foo\\\\[\\^2\\\\]\\\\d\\\\w/", rank=1, shape=plaintext]; } gvds_scalar0 -> gvds_atom0; } ) ) %% (name => 'regexp-flagged', code => 'my $a = qr/foo/ix; GraphViz::Data::Structure->new($a,graph=>{label=>"regexp-flagged"})->graph->as_canon', out => qq(digraph test { graph [ratio=fill, label="regexp-flagged"]; node [label="\\N"]; { graph [rank=same]; gvds_atom0 [label="qr/foo/ix", rank=0, shape=plaintext]; } } ) ) %% (name => 'regexp-interpolated', code => 'my $b="bar";my $a = qr/foo$b/; GraphViz::Data::Structure->new($a,graph=>{label=>"regexp-interpolated"})->graph->as_canon', out => qq(digraph test { graph [ratio=fill, label="regexp-interpolated"]; node [label="\\N"]; { graph [rank=same]; gvds_atom0 [label="qr/foobar/", rank=0, shape=plaintext]; } } ) )