1# -*- tcl -*-
2# Graph tests - graph/arc/node set (attribute set)
3# Copyright (c) 2006 Andreas Kupries <andreas_kupries@users.sourceforge.net>
4# All rights reserved.
5# RCS: @(#) $Id: set.test,v 1.3 2008/03/07 06:51:39 andreas_kupries Exp $
6
7# Syntax: graph      set      KEY ?VALUE?
8# Syntax: graph arc  set ARC  KEY ?VALUE?
9# Syntax: graph node set NODE KEY ?VALUE?
10
11# -------------------------------------------------------------------------
12
13foreach {e ex stem mp mk} {
14    arc   Arc   {mygraph arc}  {arc }  x
15    node  Node  {mygraph node} {node } x
16    graph Graph {mygraph}      {}      {}
17} {
18    AttrSetup
19
20    # -------------------------------------------------------------------------
21    # Wrong # args: Missing, Too many
22
23    test graph-${impl}-${setimpl}-${e}-set-1.0 "$e set, wrong # args, missing" {
24	SETUP
25	catch {CMD set} msg
26	mygraph destroy
27	set msg
28    } [tmWrongA "${mp}set" "${mp}key ?value?" 0 "${mp}key args"] ; # {}
29
30    test graph-${impl}-${setimpl}-${e}-set-1.1 "$e set, wrong # args, missing" !graph {
31	SETUP
32	catch {CMD set a} msg
33	mygraph destroy
34	set msg
35    } [tmWrongA "${mp}set" "${mp}key ?value?" 1 "${mp}key args"] ; # {}
36
37    test graph-${impl}-${setimpl}-${e}-set-1.2 "$e set, wrong # args, too many" {
38	SETUP
39	catch {CMD set a b c d} msg
40	mygraph destroy
41	set msg
42    } [tmE \
43	   "wrong # args: should be \"$MY ${mp}set ${mp}key ?value?\"" \
44	   [tmTooManyA "${mp}set" "${mp}key ?value?"]] ; # {}
45
46    # -------------------------------------------------------------------------
47    # Logical arguments checks and failures
48
49    test graph-${impl}-${setimpl}-${e}-set-2.0 "$e set, missing $e" !graph {
50	SETUP
51	catch {CMD set x data} msg
52	mygraph destroy
53	set msg
54    } [Missing$ex $MY x] ; # {}
55
56    test graph-${impl}-${setimpl}-${e}-set-2.1 "$e set, no attributes (retrieval)" {
57	SETUP
58	$ex
59	catch {SetR$ex foo} msg
60	mygraph destroy
61	set msg
62    } [MissingKey $mk $e foo] ; # {}
63
64    test graph-${impl}-${setimpl}-${e}-set-2.2 "$e set, missing key (retrieval)" {
65	SETUP
66	$ex
67	SetW$ex data ""
68	catch {SetR$ex foo} msg
69	mygraph destroy
70	set msg
71    } [MissingKey $mk $e foo] ; # {}
72
73    # -------------------------------------------------------------------------
74    # Ok arguments.
75
76    test graph-${impl}-${setimpl}-${e}-set-3.0 "$e set, set value, result" {
77	SETUP
78	$ex
79	set     result {}
80	lappend result [SetW$ex baz foobar]
81	lappend result [Get$ex  baz]
82	mygraph destroy
83	set result
84    } {foobar foobar} ; # {}
85
86    test graph-${impl}-${setimpl}-${e}-set-3.1 "$e set, retrieve value" {
87	SETUP
88	$ex
89	SetW$ex baz foobar
90
91	set result [SetR$ex baz]
92	mygraph destroy
93	set result
94    } foobar ; # {}    
95}
96
97# -------------------------------------------------------------------------
98