1 set test "sid configuration"
2 sid_config_component_test_with_tracing "base4.conf" \
3 "load [sid_find_file libglue.la] glue_component_library" \
8 if [sid_start "base4.conf"] then { pass $test } else { fail $test ; return }
10 set test "check attribute list"
11 sid_assert_includes_all "sid::component::attribute_names $victim" {"num-outputs" "state-snapshot" "input"}
13 set test "check bus names"
14 set bus [sid_cmd "sid::component::bus_names $victim"]
15 if {$bus == ""} then { pass $test } else { fail $test }
17 set test "check setting attribute list"
18 set category "setting"
19 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"num-outputs"}
21 set test "check pin attribute list"
23 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"input"}
25 set test "check register attribute list"
26 set category "register"
27 set regs [sid_cmd "sid::component::attribute_names_in_category $victim $category"]
28 if {$regs == ""} then { pass $test } else { fail $test }
30 set test "check register watchable list"
31 set category "watchable"
32 sid_assert_includes_all "sid::component::attribute_names_in_category $victim $category" {"input" "num-outputs"}
34 set test "check accessor names"
35 set accessors [sid_cmd "sid::component::accessor_names $victim"]
36 if {$accessors == ""} then { pass $test } else { fail $test }
38 set test "check relationships names"
39 set rel [sid_cmd "sid::component::relationship_names $victim" ]
40 if { $rel == "" } then { pass $test } else { fail $test }
43 set test "check pin names"
44 sid_assert_includes_all "sid::component::pin_names $victim" {"input"}
45 set test "get input pin"
46 set ipin [sid_cmd "sid::component::find_pin $victim input"]
47 if {$ipin != ""} then { pass $test } else { fail $test }
49 set test "erroneously connect input pin"
50 set pin [sid_cmd "sid::pin::new"]
51 set status [sid_cmd "sid::component::connect_pin $victim input $pin"]
52 if {$status != "ok"} then { pass $test } else { fail $test }
54 set test "erroneously check connected input pin"
55 set pins [sid_cmd "sid::component::connected_pins $victim input"]
56 if {$pins == ""} then { pass $test } else { fail $test }
58 set test "erroneously disconnect input pin"
59 set status [sid_cmd "sid::component::disconnect_pin $victim input $pin"]
60 if {$status != "ok"} then { pass $test } else { fail $test }
62 set test "check default num-outputs"
63 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
64 if {$noutput == 0} then { pass $test } else { fail $test }
66 set test "set outputs=0"
67 sid_assert_success "sid::component::set_attribute_value $victim num-outputs 0"
69 set test "check num-outputs=0"
70 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
71 if {$noutput == 0} then { pass $test } else { fail $test }
73 set test "attempt setting bad output"
74 set junkpin [sid_cmd "sid::pin::new"]
75 set result [sid_cmd "sid::component::connect_pin $victim output-4 $junkpin"]
76 if {$result == "not_found"} then { pass $test } else { fail $test }
79 set test "set outputs=$size"
80 sid_assert_success "sid::component::set_attribute_value $victim num-outputs $size"
82 set test "check num-outputs=10"
83 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
84 if {$noutput == 10} then { pass $test } else { fail $test }
87 set test "check pin names for num-outputs=10"
88 sid_assert_includes_all "sid::component::pin_names $victim" {"input" "output-0" "output-1" "output-2" "output-3" "output-4" "output-5" "output-6" "output-7" "output-8" "output-9"}
90 set test "set $size output pins"
91 for {set i 0} {$i < $size} {incr i} {
92 set pin [sid_cmd "sid::pin::new"]
93 sid_cmd "set hook_driven_h4($pin) { global driven_h4_value driven_history ; lappend driven_history $i \$driven_h4_value }"
94 set status [sid_cmd "sid::component::connect_pin $victim output-$i $pin"]
95 if {$status != "ok" } then { fail $test ; return }
99 set test "drive with value"
100 sid_cmd "set driven_history {}"
101 sid_cmd "sid::pin::driven_h4 $ipin 0xAA"
102 set status [sid_cmd "set driven_history"]
103 if {$status == {0 170 1 170 2 170 3 170 4 170 5 170 6 170 7 170 8 170 9 170}} then { pass $test } else { fail $test }
105 set test "check connected pins"
106 for {set i 0} {$i < 10} {incr i} {
107 set pin [sid_cmd "sid::component::connected_pins $victim output-$i"]
108 if {$pin == "" } then { fail $test ; return }
112 set test "shrink output list"
113 set result [sid_cmd "sid::component::set_attribute_value $victim num-outputs 4"]
114 if {$result == "ok"} then { pass $test } else { fail $test }
116 set test "drive after shrinking"
117 sid_cmd "set driven_history {}"
118 sid_cmd "sid::pin::driven_h4 $ipin 8"
119 set status [sid_cmd "set driven_history"]
120 if {$status == {0 8 1 8 2 8 3 8}} then { pass $test } else { fail $test }
122 set test "disconnect pins"
123 set opin [sid_cmd [list sid::component::connected_pins $victim output-1]]
124 set status [sid_cmd [list sid::component::disconnect_pin $victim output-1 $opin]]
125 if {$status != "ok" } then { fail $test } else { pass $test }
127 set test "check connected pins after disconnect pins"
128 for {set i 0} {$i < 4} {incr i} {
129 if { $i == 1 } then {
130 set pin [sid_cmd "sid::component::connected_pins $victim output-1"]
131 if {$pin != "" } then { fail $test ; return }
133 set pin [sid_cmd "sid::component::connected_pins $victim output-$i"]
134 if {$pin == "" } then { fail $test ; return }
141 set test "set num-outputs attribute to be $i"
142 set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs $i"]
143 if { $status != "ok" } then { fail $test ; return }
144 set test "check num-outputs attribute is $i"
145 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
146 if {$noutput != $i} then { fail $test ; return }
151 set test "set num-outputs too high"
152 set r1 [sid_cmd "sid::component::set_attribute_value $victim num-outputs 256"]
153 set r2 [sid_cmd "sid::component::set_attribute_value $victim num-outputs 10000000"]
154 if {$r1 == "bad_value" && $r2 == "bad_value"} then { pass $test } else { fail $test }
157 set test "set num-outputs before state snapshot"
158 set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs 17"]
159 if { $status == "ok" } then { pass "$test - A" } else { fail "$test - A" }
160 set numoutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
161 if { $numoutput == 17 } then { pass "$test - B" } else { fail "$test - B" }
163 set test "get state snapshot"
164 set state [sid_cmd "sid::component::attribute_value $victim state-snapshot"]
165 if {$state != ""} then { pass $test } else { fail $test }
167 set test "set num-outputs to 5 after save state"
169 set status [sid_cmd "sid::component::set_attribute_value $victim num-outputs $size"]
170 if { $status == "ok" } then { pass $test } else { fail $test }
172 set test "check num-outputs=5 after save state"
173 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
174 if {$noutput == 5} then { pass $test } else { fail $test }
176 set test "restore state snapshot"
177 set result [sid_cmd "sid::component::set_attribute_value $victim state-snapshot [list $state]"]
178 if {$result == "ok"} then { pass $test } else { fail $test }
180 set test "check num-outputs=17 after restore state"
181 set noutput [sid_cmd "sid::component::attribute_value $victim num-outputs"]
182 if {$noutput == 17} then { pass $test } else { fail $test }
186 if [sid_stop] then { pass $test } else { fail $test ; return }
189 # zap temp file if tests were successful
191 if {$exit_status == "0"} then { file delete "base4.conf" }