1# -*- tcl -*-
2# Graph tests - node degree
3# Copyright (c) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net>
4# All rights reserved.
5# RCS: @(#) $Id: degree.test,v 1.2 2007/04/12 03:01:56 andreas_kupries Exp $
6
7# Syntax: graph node degree ?-in|-out? NODE
8
9# -------------------------------------------------------------------------
10# Wrong # args: Missing, Too many
11
12test graph-${impl}-${setimpl}-node-degree-1.0 {node degree, wrong#args, missing} {
13    SETUP
14    catch {mygraph node degree} msg
15    mygraph destroy
16    set msg
17} "wrong # args: should be \"$MY node degree ?-in|-out? node\""
18
19test graph-${impl}-${setimpl}-node-degree-1.1 {node degree, wrong#args, too many} {
20    SETUP
21    catch {mygraph node degree foo bar baz} msg
22    mygraph destroy
23    set msg
24} "wrong # args: should be \"$MY node degree ?-in|-out? node\""
25
26# -------------------------------------------------------------------------
27# Logical arguments checks and failures
28
29test graph-${impl}-${setimpl}-node-degree-2.0 {node degree, missing node} {
30    SETUP
31    catch {mygraph node degree node0} msg
32    mygraph destroy
33    set msg
34} [MissingNode $MY node0]
35
36test graph-${impl}-${setimpl}-node-degree-2.1 {node degree, bad switch} {
37    SETUP
38    catch {mygraph node degree -foo node0} msg
39    mygraph destroy
40    set msg
41} "bad option \"-foo\": must be -in or -out"
42
43# -------------------------------------------------------------------------
44# Ok arguments.
45
46test graph-${impl}-${setimpl}-node-degree-3.0 {node degree} {
47    SETUP
48    mygraph node insert node0 node1 node2 node3 node4 node5
49
50    mygraph arc insert node1 node2 arc0
51    mygraph arc insert node3 node3 arc1
52    mygraph arc insert node4 node5 arc2
53    mygraph arc insert node4 node5 arc3
54    mygraph arc insert node4 node5 arc4
55    mygraph arc insert node5 node2 arc5
56
57    set result {}
58    lappend result node0 -
59    lappend result [mygraph node degree      node0]
60    lappend result [mygraph node degree -in  node0]
61    lappend result [mygraph node degree -out node0]
62    lappend result node1 -
63    lappend result [mygraph node degree      node1]
64    lappend result [mygraph node degree -in  node1]
65    lappend result [mygraph node degree -out node1]
66    lappend result node2 -
67    lappend result [mygraph node degree      node2]
68    lappend result [mygraph node degree -in  node2]
69    lappend result [mygraph node degree -out node2]
70    lappend result node3 -
71    lappend result [mygraph node degree      node3]
72    lappend result [mygraph node degree -in  node3]
73    lappend result [mygraph node degree -out node3]
74    lappend result node4 -
75    lappend result [mygraph node degree      node4]
76    lappend result [mygraph node degree -in  node4]
77    lappend result [mygraph node degree -out node4]
78    lappend result node5 -
79    lappend result [mygraph node degree      node5]
80    lappend result [mygraph node degree -in  node5]
81    lappend result [mygraph node degree -out node5]
82
83    mygraph destroy
84    set result
85} {node0 - 0 0 0 node1 - 1 0 1 node2 - 2 2 0 node3 - 2 1 1 node4 - 3 0 3 node5 - 4 3 1}
86
87# -------------------------------------------------------------------------
88