# -*- tcl -*- # Graph ops tests - Minimum spanning tree/forest per Kruskal # Copyright (c) 2008-2010 Andreas Kupries # All rights reserved. # RCS: @(#) $Id: kruskal.test,v 1.4 2010/09/09 21:48:27 andreas_kupries Exp $ # Syntax: struct::graph::op::kruskal G # ------------------------------------------------------------------------- # Wrong # args: Missing, Too many test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-1.0 {kruskal, wrong args, missing} -body { struct::graph::op::kruskal } -returnCodes error -result [tcltest::wrongNumArgs struct::graph::op::kruskal {g} 0] test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-1.1 {kruskal, wrong args, too many} -body { struct::graph::op::kruskal g x } -returnCodes error -result [tcltest::tooManyArgs struct::graph::op::kruskal {g}] # ------------------------------------------------------------------------- # Logical arguments checks and failures test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-2.0 {kruskal, arcs without weights} -setup { SETUP mygraph node insert 0 1 mygraph arc insert 0 1 a } -body { struct::graph::op::kruskal mygraph } -returnCodes error -result {Operation invalid for graph with unweighted arcs.} # ------------------------------------------------------------------------- # Ok arguments. test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-3.0 {kruskal, empty graph} -setup { SETUP } -body { struct::graph::op::kruskal mygraph } -cleanup { mygraph destroy } -result {} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-3.1 {kruskal, nodes, no arcs} -setup { SETUP mygraph node insert 0 1 2 3 4 5 } -body { struct::graph::op::kruskal mygraph } -cleanup { mygraph destroy } -result {} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-kruskal-3.2 {kruskal, nodes, arcs} -setup { SETUP_A } -body { lsort -dict [struct::graph::op::kruskal mygraph] } -cleanup { mygraph destroy } -result {'arc0_1' 'arc0_3' 'arc3_2' 'arc3_4' 'arc3_6' 'arc6_5'} # ---------------------------------------------------