+++ /dev/null
-shape none
- graph G {a [label="" shape=none]}
- dot -Tgv
- dot -Txdot
- dot -Tpng
- dot -Tsvg
- dot -Tps
- dot -Tcmapx
-shape plaintext
- graph G {a [label="" shape=plaintext]}
- dot -Txdot
-shape point
- graph G {a [label="" shape=point]}
- dot -Txdot
-shape box
- graph G {a [label="" shape=box]}
- dot -Txdot
-shape rect
- graph G {a [label="" shape=rect]}
- dot -Txdot
-shape rectangle
- graph G {a [label="" shape=rectangle]}
- dot -Txdot
-shape ellipse
- graph G {a [label="" shape=ellipse]}
- dot -Txdot
-shape circle
- graph G {a [label="" shape=circle]}
- dot -Txdot
-shape triangle
- graph G {a [label="" shape=triangle]}
- dot -Txdot
-shape invtriangle
- graph G {a [label="" shape=invtriangle]}
- dot -Txdot
-shape diamond
- graph G {a [label="" shape=diamond]}
- dot -Txdot
-shape trapezium
- graph G {a [label="" shape=trapezium]}
- dot -Txdot
-shape invtrapezium
- graph G {a [label="" shape=invtrapezium]}
- dot -Txdot
-shape parallelogram
- graph G {a [label="" shape=parallelogram]}
- dot -Txdot
-shape house
- graph G {a [label="" shape=house]}
- dot -Txdot
-shape invhouse
- graph G {a [label="" shape=invhouse]}
- dot -Txdot
-shape pentagon
- graph G {a [label="" shape=pentagon]}
- dot -Txdot
-shape hexagon
- graph G {a [label="" shape=hexagon]}
- dot -Txdot
-shape septagon
- graph G {a [label="" shape=septagon]}
- dot -Txdot
-shape octagon
- graph G {a [label="" shape=octagon]}
- dot -Txdot
-shape doubleoctagon
- graph G {a [label="" shape=doubleoctagon]}
- dot -Txdot
-shape doublecircle
- graph G {a [label="" shape=doublecircle]}
- dot -Txdot
-shape tripleoctagon
- graph G {a [label="" shape=tripleoctagon]}
- dot -Txdot
-shape Mdiamond
- graph G {a [label="" shape=Mdiamond]}
- dot -Txdot
-shape Msquare
- graph G {a [label="" shape=Msquare]}
- dot -Txdot
-shape Mcircle
- graph G {a [label="" shape=Mcircle]}
- dot -Txdot
-label ""
- graph G {a [label="" shape=none]}
- dot -Txdot
-label b
- graph G {a [label=b shape=none]}
- dot -Txdot
-label a (default)
- graph G {a [shape=none]}
- dot -Txdot
-label a (\N)
- graph G {a [label="\N" shape=none]}
- dot -Txdot
-label n_of_G (\G)
- graph G {a [label="n_of_\G" shape=none]}
- dot -Txdot
-label \E\H\T (\E\H\T)
- graph G {a [label="\E\H\T" shape=none]}
- dot -Txdot
-label a->b (\E)
- digraph G {node [label="" shape=none]; a->b [label="\E"]}
- dot -Txdot
-label a (\T)
- digraph G {node [label="" shape=none]; a->b [label="\T"]}
- dot -Txdot
-label b (\H)
- digraph G {node [label="" shape=none]; a->b [label="\H"]}
- dot -Txdot
-label e_of_G (e_of_\G)
- digraph G {node [label="" shape=none]; a->b [label="e_of_\G"]}
- dot -Txdot
-label \N (\N)
- digraph G {node [label="" shape=none]; a->b [label="\N"]}
- dot -Txdot
-label center aligned
- graph G {a [label="center\naligned\ntext" shape=none]}
- dot -Txdot
-label left aligned
- graph G {a [label="left\laligned\ltext" shape=none]}
- dot -Txdot
-label right aligned
- graph G {a [label="right\raligned\rtext" shape=none]}
- dot -Txdot
-arrow none
- digraph G {node [label="" shape=none]; a->b [arrowhead=none]}
- dot -Txdot
-arrow default
- digraph G {node [label="" shape=none]; a->b [arrowhead=""]}
- dot -Txdot
-arrow normal
- digraph G {node [label="" shape=none]; a->b [arrowhead=normal]}
- dot -Txdot
-arrow box
- digraph G {node [label="" shape=none]; a->b [arrowhead=box]}
- dot -Txdot
-arrow crow
- digraph G {node [label="" shape=none]; a->b [arrowhead=crow]}
- dot -Txdot
-arrow diamond
- digraph G {node [label="" shape=none]; a->b [arrowhead=diamond]}
- dot -Txdot
-arrow dot
- digraph G {node [label="" shape=none]; a->b [arrowhead=dot]}
- dot -Txdot
-arrow inv
- digraph G {node [label="" shape=none]; a->b [arrowhead=inv]}
- dot -Txdot
-arrow tee
- digraph G {node [label="" shape=none]; a->b [arrowhead=tee]}
- dot -Txdot
-arrow vee
- digraph G {node [label="" shape=none]; a->b [arrowhead=vee]}
- dot -Txdot
-arrow lnormal
- digraph G {node [label="" shape=none]; a->b [arrowhead=lnormal]}
- dot -Txdot
-arrow lbox
- digraph G {node [label="" shape=none]; a->b [arrowhead=lbox]}
- dot -Txdot
-arrow lcrow
- digraph G {node [label="" shape=none]; a->b [arrowhead=lcrow]}
- dot -Txdot
-arrow ldiamond
- digraph G {node [label="" shape=none]; a->b [arrowhead=ldiamond]}
- dot -Txdot
-arrow ldot
- digraph G {node [label="" shape=none]; a->b [arrowhead=ldot]}
- dot -Txdot
-arrow linv
- digraph G {node [label="" shape=none]; a->b [arrowhead=linv]}
- dot -Txdot
-arrow ltee
- digraph G {node [label="" shape=none]; a->b [arrowhead=ltee]}
- dot -Txdot
-arrow lvee
- digraph G {node [label="" shape=none]; a->b [arrowhead=lvee]}
- dot -Txdot
-arrow rnormal
- digraph G {node [label="" shape=none]; a->b [arrowhead=rnormal]}
- dot -Txdot
-arrow rbox
- digraph G {node [label="" shape=none]; a->b [arrowhead=rbox]}
- dot -Txdot
-arrow rcrow
- digraph G {node [label="" shape=none]; a->b [arrowhead=rcrow]}
- dot -Txdot
-arrow rdiamond
- digraph G {node [label="" shape=none]; a->b [arrowhead=rdiamond]}
- dot -Txdot
-arrow rdot
- digraph G {node [label="" shape=none]; a->b [arrowhead=rdot]}
- dot -Txdot
-arrow rinv
- digraph G {node [label="" shape=none]; a->b [arrowhead=rinv]}
- dot -Txdot
-arrow rtee
- digraph G {node [label="" shape=none]; a->b [arrowhead=rtee]}
- dot -Txdot
-arrow rvee
- digraph G {node [label="" shape=none]; a->b [arrowhead=rvee]}
- dot -Txdot
-arrow onormal
- digraph G {node [label="" shape=none]; a->b [arrowhead=onormal]}
- dot -Txdot
-arrow obox
- digraph G {node [label="" shape=none]; a->b [arrowhead=obox]}
- dot -Txdot
-arrow ocrow
- digraph G {node [label="" shape=none]; a->b [arrowhead=ocrow]}
- dot -Txdot
-arrow odiamond
- digraph G {node [label="" shape=none]; a->b [arrowhead=odiamond]}
- dot -Txdot
-arrow odot
- digraph G {node [label="" shape=none]; a->b [arrowhead=odot]}
- dot -Txdot
-arrow oinv
- digraph G {node [label="" shape=none]; a->b [arrowhead=oinv]}
- dot -Txdot
-arrow otee
- digraph G {node [label="" shape=none]; a->b [arrowhead=otee]}
- dot -Txdot
-arrow ovee
- digraph G {node [label="" shape=none]; a->b [arrowhead=ovee]}
- dot -Txdot
-arrow onormalnormal
- digraph G {node [label="" shape=none]; a->b [arrowhead=onormalnormal]}
- dot -Txdot
-arrow oboxbox
- digraph G {node [label="" shape=none]; a->b [arrowhead=oboxbox]}
- dot -Txdot
-arrow ocrowcrow
- digraph G {node [label="" shape=none]; a->b [arrowhead=ocrowcrow]}
- dot -Txdot
-arrow odiamonddiamond
- digraph G {node [label="" shape=none]; a->b [arrowhead=odiamonddiamond]}
- dot -Txdot
-arrow odotdot
- digraph G {node [label="" shape=none]; a->b [arrowhead=odotdot]}
- dot -Txdot
-arrow oinvinv
- digraph G {node [label="" shape=none]; a->b [arrowhead=oinvinv]}
- dot -Txdot
-arrow oteetee
- digraph G {node [label="" shape=none]; a->b [arrowhead=oteetee]}
- dot -Txdot
-arrow oveevee
- digraph G {node [label="" shape=none]; a->b [arrowhead=oveevee]}
- dot -Txdot
-color black
- graph G {a [label="" shape=box style=filled color=black]}
- dot -Txdot
- dot -Tpng
-color red
- graph G {a [label="" shape=box style=filled color=red]}
- dot -Txdot
- dot -Tpng
-color hotpink
- graph G {a [label="" shape=box style=filled color=hotpink]}
- dot -Txdot
- dot -Tpng
-color transparent
- graph G {a [label="" shape=box style=filled color=transparent]}
- dot -Txdot
- dot -Tpng
-anchor empty
- graph G {a [URL="" label="" shape=none]}
- dot -Tcmapx
- dot -Tps
- dot -Tsvg
-anchor \G.html
- graph G {graph [URL="\G.html"]}
- dot -Tcmapx
- dot -Tps
- dot -Tsvg
-anchor \N.html
- graph G {a [URL="\N.html" label="" shape=none]}
- dot -Tcmapx
- dot -Tps
- dot -Tsvg
-anchor \E.html
- digraph G {node [label="" shape=none]; a->b [URL="\E.html"]}
- dot -Tcmapx
- dot -Tps
- dot -Tsvg
+++ /dev/null
-Command line:
-
- argument parsing, argv0 handling, help, version, verbose
-
- plugin mechanisms
-
- empty graph - all layouts, all formats
-
-Render tests:
-
- node shapes (selected subset, single shape per test, no label)
- peripheries, sides, skew, distort, ellipses
-
- label (single node, invisible box shape):
- various fonts, encodings, russian, chinese, german, ...
- text justification, single/multi lines
-
- colors, formats, transparency, pen, fill, font,
-
- html labels, table features, anchor features, font features
-
- polylines, splines: pen styles, parallel edges
-
- arrow shapes
-
-Layout tests:
-
- node sizing around labels, html labels
-
- user-shapes: sizing and format detection
-
- node and edge positions
-
- edge labels: main, head, tail
-
- rankdir
-
- clusters
-
- mincross
-
- splines
-
-Format-specific tests:
-
- anchors
- maps, ps, svg
-
- paging, layering, multigraphs,
- ps
-
- zoom, size, dpi, margin
- png, svg, ps, maps
-
- colors: known colors, pen and fill combinations, transparency, color indexing
- png, ps, svg
-
- user-shapes: image loading, input/output format transforms, multiple instances
-
-
-Performance tests:
-
- some benchmark test so that we can catch gross performance changes
- layout
- renderer
- plugin loading
-
-Platform tests:
-
- some tests that exercise platform features:
- 32 v 64 bit
- byte ordering
- toolchain variations: compiler, linker, lex, yacc, ...
- floating-point variations
+++ /dev/null
-#!/usr/bin/tclsh
-
-set DOT ../cmd/dot/dot
-set DIFF diff
-set DIFFIMG ../contrib/diffimg/diffimg
-set TAR tar
-
-set graphdir test_graphs
-set resultdir test_results
-set referencedir test_reference
-
-file delete -force $graphdir $resultdir
-file mkdir $graphdir $resultdir
-
-set FAIL 0
-set dodiff 0
-if {$argc && [string equal [lindex $argv 0] reference]} {
- file delete -force $referencedir
- file mkdir $referencedir
- set resultdir $referencedir
-} {
- if {[file exists $referencedir.tgz]} {
- exec $TAR xfz $referencedir.tgz
- set dodiff 1
- }
-}
-
-set state -1
-set testnum 0
-set subtestnum 0
-
-set pass 0
-set fail 0
-
-set fn TESTS
-set f [open $fn r]
-while {![eof $f]} {
- set rec [gets $f]
- if {[string length $rec] == 0} {
- continue
- }
- if {[string first "#" $rec] == 0} {
- continue
- }
- if {[string first "\t" $rec] != 0} {
- set name $rec
- set state 0
- incr testnum
- set subtestnum 0
- continue
- }
- if {$state == -1} {
- puts stderr "The first non-comment record in the TESTS file"
- puts stderr "must be the name of a test without leading whitespace"
- exit
- }
- set rec [string trim $rec]
- if {$state == 0} {
- set graph $rec
- set state 1
- } {
- set command $rec
- set layout dot
- set format xdot
- regexp {\-K([a-z0-9]+)} $rec . layout
- regexp {\-T([a-z0-9]+)} $rec . format
- incr subtestnum
- set id [format %03d.%03d $testnum $subtestnum]
- set src $graphdir/$id.gv
- set ref $referencedir/$id.$format
- set res $resultdir/$id.$format
- set testf [open $graphdir/$id.gv w]
- puts $testf "// $id: $name"
- puts $testf "// $command"
- puts $testf $graph
- close $testf
-
- # execute dot
- switch $format {
- ps - svg {
- #FIXME - remove version string in output
- set rc [catch {exec $DOT -K$layout -T$format $src -o $res}]
- }
- default {
- set rc [catch {exec $DOT -K$layout -T$format $src -o $res}]
- }
- }
- if {! $dodiff} {
- continue
- }
- if {$rc} {
- incr FAIL
- puts "$id: \"$name\" CRASHED"
- continue
- }
-
- # execute diff
- switch $format {
- png {
- # can't use diff because PNG format includes a tIME record which changes
- # diffimg produces an image which highlights the differences
- set rc [catch {exec $DIFFIMG $ref $res > $res.diff.png}]
- }
- default {
- set rc [catch {exec $DIFF -u $ref $res > $res.diff}]
- }
- }
- if {$rc} {
- incr fail
- puts "$id: \"$name\" FAILED"
- } {
- incr pass
- foreach fn [glob $src $res $res.*] {
- file delete $fn
- }
- }
- }
-}
-close $f
-
-if {$dodiff} {
- set total [expr {$pass+$fail}]
- puts ""
- puts "Summary: PASS $pass : FAIL $fail : TOTAL $total"
-} {
- exec $TAR cfz $referencedir.tgz $referencedir
-}