# -*- tcl -*- # Graph ops tests - Connected components. # Copyright (c) 2008-2010 Andreas Kupries # All rights reserved. # RCS: @(#) $Id: components.test,v 1.4 2010/09/09 21:48:27 andreas_kupries Exp $ # Syntax: struct::graph::op::connectedComponents G # ------------------------------------------------------------------------- # Wrong # args: Missing, Too many test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-1.0 {connectedComponents, wrong args, missing} -body { struct::graph::op::connectedComponents } -returnCodes error -result [tcltest::wrongNumArgs struct::graph::op::connectedComponents {g} 0] test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-1.1 {connectedComponents, wrong args, too many} -body { struct::graph::op::connectedComponents g x } -returnCodes error -result [tcltest::tooManyArgs struct::graph::op::connectedComponents {g}] # ------------------------------------------------------------------------- # Logical arguments checks and failures # ------------------------------------------------------------------------- # Ok arguments. test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.0 {connectedComponents, empty graph} -setup { SETUP } -body { struct::graph::op::connectedComponents mygraph } -cleanup { mygraph destroy } -result {} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.1 {connectedComponents, nodes, no arcs} -setup { SETUP mygraph node insert 0 1 2 3 4 5 } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {0 1 2 3 4 5} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.2 {connectedComponents, single CC} -setup { SETUP_A } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{'node0' 'node1' 'node2' 'node3' 'node4' 'node5' 'node6'}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.3 {connectedComponents, single CC} -setup { SETUP_B } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{A B C D E S}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.4 {connectedComponents, single CC} -setup { SETUP_C } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{A B C D E F}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.5 {connectedComponents, single CC} -setup { SETUP_D } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{a b c d f g h i j}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.6 {connectedComponents, single CC} -setup { SETUP_E } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{1b 1w 2b 2w 3b 3w 4b 4w 5b 5w 6b 6w 7b 7w 8b 8w}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.7 {connectedComponents, single CC} -setup { SETUP_F } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{1b 1w 2b 2w 3b 3w 4b 4w}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.8 {connectedComponents, single CC} -setup { SETUP_G } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{1b 1w 2b 2w 3b 3w 4b 4w 5b 5w}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.9 {connectedComponents, single CC} -setup { SETUP_H } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{A B C D E}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.10 {connectedComponents, single CC} -setup { SETUP_I } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{N1 N2 N3 N4 N5}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.11 {connectedComponents, multiple CC} -setup { SETUP_J } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{1 4 5} 2 3 {6 7}} test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-connectedComponents-3.12 {connectedComponents, multiple CC} -setup { SETUP_K } -body { setsetcanon [struct::graph::op::connectedComponents mygraph] } -cleanup { mygraph destroy } -result {{No1 No2 No3 No4} No5} # ---------------------------------------------------