summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/struct/graph/tests/command.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/struct/graph/tests/command.test')
-rw-r--r--tcllib/modules/struct/graph/tests/command.test161
1 files changed, 161 insertions, 0 deletions
diff --git a/tcllib/modules/struct/graph/tests/command.test b/tcllib/modules/struct/graph/tests/command.test
new file mode 100644
index 0000000..67121b9
--- /dev/null
+++ b/tcllib/modules/struct/graph/tests/command.test
@@ -0,0 +1,161 @@
+# -*- tcl -*-
+# Graph tests - graph command basics
+# Copyright (c) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+# All rights reserved.
+# RCS: @(#) $Id: command.test,v 1.7 2009/11/26 04:42:16 andreas_kupries Exp $
+
+# -------------------------------------------------------------------------
+# Wrong # args: Missing, Too many
+
+# Graph class command has no missing arguments, will auto-generate
+# instance name. As for too many arguments, this will be checked as
+# part of testing the de-serialization.
+
+test graph-${impl}-${setimpl}-create-1.1 {graph create, copy, wrong#args, missing} {
+ catch {mygraph destroy}
+ catch {struct::graph mygraph =} result
+ set result
+} {wrong # args: should be "struct::graph ?name ?=|:=|as|deserialize source??"}
+
+test graph-${impl}-${setimpl}-create-1.2 {graph create, copy, wrong#args, too many} {
+ catch {mygraph destroy}
+ catch {struct::graph mygraph = a b} result
+ set result
+} {wrong # args: should be "struct::graph ?name ?=|:=|as|deserialize source??"}
+
+test graph-${impl}-${setimpl}-create-1.3 {graph create, copy, unknown operator} {
+ catch {mygraph destroy}
+ catch {struct::graph mygraph foo a} result
+ set result
+} {wrong # args: should be "struct::graph ?name ?=|:=|as|deserialize source??"}
+
+# -------------------------------------------------------------------------
+# Logical arguments checks and failures
+
+test graph-${impl}-${setimpl}-create-2.0 {graph create, duplicate, graph} {
+ SETUP
+ catch {struct::graph mygraph} msg
+ mygraph destroy
+ set msg
+} "command \"::mygraph\" already exists, unable to create graph"
+
+test graph-${impl}-${setimpl}-create-2.1 {graph create, duplicate, non-graph} {
+ catch {struct::graph set} msg
+ set msg
+} "command \"::set\" already exists, unable to create graph"
+
+# -------------------------------------------------------------------------
+# Ok arguments.
+
+test graph-${impl}-${setimpl}-create-3.0 {graph create, object command is created} {
+ SETUP
+ set result [string equal [info commands ::mygraph] "::mygraph"]
+ mygraph destroy
+ set result
+} 1
+
+test graph-${impl}-${setimpl}-create-3.1 {graph create, auto-generation of name} {
+ set name [struct::graph]
+ set result [list \
+ [string match ::graph* $name] \
+ [string equal [info commands $name] "$name"]]
+ $name destroy
+ set result
+} {1 1}
+
+test graph-${impl}-${setimpl}-create-3.2 {graph create, destroy removes object command} {
+ SETUP
+ mygraph destroy
+ string equal [info commands ::mygraph] ""
+} 1
+
+test graph-${impl}-${setimpl}-create-3.3 {graph create, copy, value} {
+ catch {mygraph destroy}
+ set serial {%3 {} {{f 6 {}}} %0 {foo bar} {{a 6 {}} {b 9 {bar snarf}} {c 0 {}}} %1 {} {{d 9 {}}} %2 {} {{e 0 {}}} {data foo}}
+
+ struct::graph mygraph deserialize $serial
+ set result [validate_serial mygraph $serial]
+ mygraph destroy
+
+ set result
+} ok
+
+test graph-${impl}-${setimpl}-create-3.4 {graph create, copy, graph} {
+ catch {mygraph destroy}
+ set serial {%3 {} {{f 6 {}}} %0 {foo bar} {{a 6 {}} {b 9 {bar snarf}} {c 0 {}}} %1 {} {{d 9 {}}} %2 {} {{e 0 {}}} {data foo}}
+
+ struct::graph mygraph deserialize $serial
+ struct::graph bgraph = mygraph
+
+ set result [validate_serial bgraph $serial]
+ mygraph destroy
+ bgraph destroy
+
+ set result
+} ok
+
+test graph-${impl}-${setimpl}-create-3.5 {graph create, copy, graph with weights} {
+ catch {mygraph destroy}
+ set serial {%3 {} {{f 6 {}}} %0 {foo bar} {{a 6 {}} {b 9 {bar snarf}} {c 0 {} 222}} %1 {} {{d 9 {}}} %2 {} {{e 0 {} 444}} {data foo}}
+
+ struct::graph mygraph deserialize $serial
+ struct::graph bgraph = mygraph
+
+ set result [validate_serial bgraph $serial]
+ mygraph destroy
+ bgraph destroy
+
+ set result
+} ok
+
+test graph-${impl}-${setimpl}-create-3.6 {graph create, copy, empty graph} {
+ catch {mygraph destroy}
+ set serial {{}}
+
+ struct::graph mygraph deserialize $serial
+ struct::graph bgraph = mygraph
+
+ set result [validate_serial bgraph $serial]
+ mygraph destroy
+ bgraph destroy
+
+ set result
+} ok
+
+# -------------------------------------------------------------------------
+# Wrong # args: Missing, Too many
+
+test graph-${impl}-${setimpl}-instance-1.0 {graph command, wrong#args, missing} {
+ SETUP
+ catch {mygraph} msg
+ mygraph destroy
+ set msg
+} "wrong # args: should be \"$MY option ?arg arg ...?\""
+
+# Too many arguments dependent on method, not testable here.
+
+# -------------------------------------------------------------------------
+# Logical arguments checks and failures
+
+test graph-${impl}-${setimpl}-instance-2.0 {graph command, bad method} {
+ SETUP
+ catch {mygraph foo} msg
+ mygraph destroy
+ set msg
+} {bad option "foo": must be -->, =, append, arc, arcs, deserialize, destroy, get, getall, keyexists, keys, lappend, node, nodes, serialize, set, swap, unset, or walk}
+
+test graph-${impl}-${setimpl}-instance-2.1 {graph arc command, bad method} {
+ SETUP
+ catch {mygraph arc foo} msg
+ mygraph destroy
+ set msg
+} {bad option "foo": must be append, attr, delete, exists, flip, get, getall, getunweighted, getweight, hasweight, insert, keyexists, keys, lappend, move, move-source, move-target, nodes, rename, set, setunweighted, setweight, source, target, unset, unsetweight, or weights}
+
+test graph-${impl}-${setimpl}-instance-2.2 {graph node command, bad method} {
+ SETUP
+ catch {mygraph node foo} msg
+ mygraph destroy
+ set msg
+} {bad option "foo": must be append, attr, degree, delete, exists, get, getall, insert, keyexists, keys, lappend, opposite, rename, set, or unset}
+
+# -------------------------------------------------------------------------