summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/struct/graph/tests/ops/eulertour.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/struct/graph/tests/ops/eulertour.test')
-rw-r--r--tcllib/modules/struct/graph/tests/ops/eulertour.test189
1 files changed, 189 insertions, 0 deletions
diff --git a/tcllib/modules/struct/graph/tests/ops/eulertour.test b/tcllib/modules/struct/graph/tests/ops/eulertour.test
new file mode 100644
index 0000000..cfada68
--- /dev/null
+++ b/tcllib/modules/struct/graph/tests/ops/eulertour.test
@@ -0,0 +1,189 @@
+# -*- tcl -*-
+# Graph ops tests - Euler tours.
+# Copyright (c) 2008-2009 Andreas Kupries <andreas_kupries@users.sourceforge.net>
+# All rights reserved.
+# RCS: @(#) $Id: eulertour.test,v 1.4 2009/09/21 23:48:03 andreas_kupries Exp $
+
+# Syntax: struct::graph::op::isEulerian? G A
+
+# -------------------------------------------------------------------------
+# Wrong # args: Missing, Too many
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-1.0 {isEulerian?, wrong args, missing} {
+ catch {struct::graph::op::isEulerian?} msg
+ set msg
+} [tcltest::wrongNumArgs struct::graph::op::isEulerian? {g ?eulervar? ?tourstart?} 0]
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-1.1 {isEulerian?, wrong args, too many} {
+ catch {struct::graph::op::isEulerian? g x y z} msg
+ set msg
+} [tcltest::tooManyArgs struct::graph::op::isEulerian? {g ?eulervar? ?tourstart?}]
+
+# -------------------------------------------------------------------------
+# Logical arguments checks and failures
+
+# -------------------------------------------------------------------------
+# Ok arguments.
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.0 {isEulerian?, empty graph} {
+ SETUP
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.1 {isEulerian?, nodes, no arcs} {
+ SETUP
+ mygraph node insert 0 1 2 3 4 5
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.2 {isEulerian?} {
+ SETUP_A
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.3 {isEulerian?} {
+ SETUP_B
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.4 {isEulerian?} {
+ SETUP_B2
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 1
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.5 {isEulerian?} {
+ SETUP_C
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.6 {isEulerian?} {
+ SETUP_D
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.7 {isEulerian?} {
+ SETUP_E
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.8 {isEulerian?} {
+ SETUP_F
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.9 {isEulerian?} {
+ SETUP_G
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.10 {isEulerian?} {
+ SETUP_H
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.11 {isEulerian?} {
+ SETUP_I
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.12 {isEulerian?} {
+ SETUP_J
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.13 {isEulerian?} {
+ SETUP_K
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.14 {isEulerian?} {
+ SETUP_K2
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 1
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.15 {isEulerian?} {
+ SETUP_L
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 0
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.16 {isEulerian?} {
+ SETUP_M
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 1
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.17 {isEulerian?} {
+ SETUP_N
+ set result [struct::graph::op::isEulerian? mygraph]
+ mygraph destroy
+ set result
+} 1
+
+# ---------------------------------------------------
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-4.4 {isEulerian?, and tour} {
+ SETUP_B2
+ set result [struct::graph::op::isEulerian? mygraph tour]
+ lappend result [EulerTour mygraph $tour]
+ mygraph destroy
+ set result
+} {1 ok}
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-4.14 {isEulerian?, and tour} {
+ SETUP_K2
+ set result [struct::graph::op::isEulerian? mygraph tour]
+ lappend result [EulerTour mygraph $tour]
+ mygraph destroy
+ set result
+} {1 ok}
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-3.16 {isEulerian?, and tour} {
+ SETUP_M
+ set result [struct::graph::op::isEulerian? mygraph tour]
+ lappend result [EulerTour mygraph $tour]
+ mygraph destroy
+ set result
+} {1 ok}
+
+test graphop-t${treeimpl}-g${impl}-s${setimpl}-st${stkimpl}-q${queimpl}-isEulerian?-4.17 {isEulerian?, and tour} {
+ SETUP_N
+ set result [struct::graph::op::isEulerian? mygraph tour]
+ lappend result [EulerTour mygraph $tour]
+ mygraph destroy
+ set result
+} {1 ok}
+
+# ---------------------------------------------------