[25] | 1 | # Commands covered: history |
---|
| 2 | # |
---|
| 3 | # This file contains a collection of tests for one or more of the Tcl |
---|
| 4 | # built-in commands. Sourcing this file into Tcl runs the tests and |
---|
| 5 | # generates output for errors. No output means no errors were found. |
---|
| 6 | # |
---|
| 7 | # Copyright (c) 1991-1993 The Regents of the University of California. |
---|
| 8 | # Copyright (c) 1994 Sun Microsystems, Inc. |
---|
| 9 | # Copyright (c) 1998-1999 by Scriptics Corporation. |
---|
| 10 | # |
---|
| 11 | # See the file "license.terms" for information on usage and redistribution |
---|
| 12 | # of this file, and for a DISCLAIMER OF ALL WARRANTIES. |
---|
| 13 | # |
---|
| 14 | # RCS: @(#) $Id: history.test,v 1.6 2004/05/19 12:43:03 dkf Exp $ |
---|
| 15 | |
---|
| 16 | if {[lsearch [namespace children] ::tcltest] == -1} { |
---|
| 17 | package require tcltest |
---|
| 18 | namespace import -force ::tcltest::* |
---|
| 19 | } |
---|
| 20 | |
---|
| 21 | # The history command might be autoloaded... |
---|
| 22 | if {[catch {history}]} { |
---|
| 23 | testConstraint history 0 |
---|
| 24 | } else { |
---|
| 25 | testConstraint history 1 |
---|
| 26 | } |
---|
| 27 | |
---|
| 28 | if {[testConstraint history]} { |
---|
| 29 | set num [history nextid] |
---|
| 30 | history keep 3 |
---|
| 31 | history add {set a 12345} |
---|
| 32 | history add {set b [format {A test %s} string]} |
---|
| 33 | history add {Another test} |
---|
| 34 | } else { |
---|
| 35 | # Dummy value, must be numeric |
---|
| 36 | set num 0 |
---|
| 37 | } |
---|
| 38 | |
---|
| 39 | # "history event" |
---|
| 40 | |
---|
| 41 | test history-1.1 {event option} history {history event -1} \ |
---|
| 42 | {set b [format {A test %s} string]} |
---|
| 43 | test history-1.2 {event option} history {history event $num} \ |
---|
| 44 | {set a 12345} |
---|
| 45 | test history-1.3 {event option} history {history event [expr $num+2]} \ |
---|
| 46 | {Another test} |
---|
| 47 | test history-1.4 {event option} history {history event set} \ |
---|
| 48 | {set b [format {A test %s} string]} |
---|
| 49 | test history-1.5 {event option} history {history e "* a*"} \ |
---|
| 50 | {set a 12345} |
---|
| 51 | test history-1.6 {event option} history {catch {history event *gorp} msg} 1 |
---|
| 52 | test history-1.7 {event option} history { |
---|
| 53 | catch {history event *gorp} msg |
---|
| 54 | set msg |
---|
| 55 | } {no event matches "*gorp"} |
---|
| 56 | test history-1.8 {event option} history {history event} \ |
---|
| 57 | {set b [format {A test %s} string]} |
---|
| 58 | test history-1.9 {event option} history {catch {history event 123 456} msg} 1 |
---|
| 59 | test history-1.10 {event option} history { |
---|
| 60 | catch {history event 123 456} msg |
---|
| 61 | set msg |
---|
| 62 | } {wrong # args: should be "history event ?event?"} |
---|
| 63 | |
---|
| 64 | # "history redo" |
---|
| 65 | |
---|
| 66 | if {[testConstraint history]} { |
---|
| 67 | set a 0 |
---|
| 68 | history redo -2 |
---|
| 69 | } |
---|
| 70 | test history-2.1 {redo option} history {set a} 12345 |
---|
| 71 | if {[testConstraint history]} { |
---|
| 72 | set b 0 |
---|
| 73 | history redo |
---|
| 74 | } |
---|
| 75 | test history-2.2 {redo option} history {set b} {A test string} |
---|
| 76 | test history-2.3 {redo option} history {catch {history redo -3 -4}} 1 |
---|
| 77 | test history-2.4 {redo option} history { |
---|
| 78 | catch {history redo -3 -4} msg |
---|
| 79 | set msg |
---|
| 80 | } {wrong # args: should be "history redo ?event?"} |
---|
| 81 | |
---|
| 82 | # "history add" |
---|
| 83 | |
---|
| 84 | if {[testConstraint history]} { |
---|
| 85 | history add "set a 444" exec |
---|
| 86 | } |
---|
| 87 | test history-3.1 {add option} history {set a} 444 |
---|
| 88 | test history-3.2 {add option} history {catch {history add "set a 444" execGorp}} 1 |
---|
| 89 | test history-3.3 {add option} history { |
---|
| 90 | catch {history add "set a 444" execGorp} msg |
---|
| 91 | set msg |
---|
| 92 | } {bad argument "execGorp": should be "exec"} |
---|
| 93 | test history-3.4 {add option} history {catch {history add "set a 444" a} msg} 1 |
---|
| 94 | test history-3.5 {add option} history { |
---|
| 95 | catch {history add "set a 444" a} msg |
---|
| 96 | set msg |
---|
| 97 | } {bad argument "a": should be "exec"} |
---|
| 98 | if {[testConstraint history]} { |
---|
| 99 | history add "set a 555" e |
---|
| 100 | } |
---|
| 101 | test history-3.6 {add option} history {set a} 555 |
---|
| 102 | if {[testConstraint history]} { |
---|
| 103 | history add "set a 666" |
---|
| 104 | } |
---|
| 105 | test history-3.7 {add option} history {set a} 555 |
---|
| 106 | test history-3.8 {add option} history {catch {history add "set a 666" e f} msg} 1 |
---|
| 107 | test history-3.9 {add option} history { |
---|
| 108 | catch {history add "set a 666" e f} msg |
---|
| 109 | set msg |
---|
| 110 | } {wrong # args: should be "history add event ?exec?"} |
---|
| 111 | |
---|
| 112 | # "history change" |
---|
| 113 | |
---|
| 114 | if {[testConstraint history]} { |
---|
| 115 | history change "A test value" |
---|
| 116 | } |
---|
| 117 | test history-4.1 {change option} history {history event [expr {[history n]-1}]} \ |
---|
| 118 | "A test value" |
---|
| 119 | if {[testConstraint history]} { |
---|
| 120 | history ch "Another test" -1 |
---|
| 121 | } |
---|
| 122 | test history-4.2 {change option} history {history e} "Another test" |
---|
| 123 | test history-4.3 {change option} history {history event [expr {[history n]-1}]} \ |
---|
| 124 | "A test value" |
---|
| 125 | test history-4.4 {change option} history {catch {history change Foo 4 10}} 1 |
---|
| 126 | test history-4.5 {change option} history { |
---|
| 127 | catch {history change Foo 4 10} msg |
---|
| 128 | set msg |
---|
| 129 | } {wrong # args: should be "history change newValue ?event?"} |
---|
| 130 | test history-4.6 {change option} history { |
---|
| 131 | catch {history change Foo [expr {[history n]-4}]} |
---|
| 132 | } 1 |
---|
| 133 | if {[testConstraint history]} { |
---|
| 134 | set num [expr {[history n]-4}] |
---|
| 135 | } |
---|
| 136 | test history-4.7 {change option} history { |
---|
| 137 | catch {history change Foo $num} msg |
---|
| 138 | set msg |
---|
| 139 | } "event \"$num\" is too far in the past" |
---|
| 140 | |
---|
| 141 | # "history info" |
---|
| 142 | |
---|
| 143 | if {[testConstraint history]} { |
---|
| 144 | set num [history n] |
---|
| 145 | history add set\ a\ {b\nc\ d\ e} |
---|
| 146 | history add {set b 1234} |
---|
| 147 | history add set\ c\ {a\nb\nc} |
---|
| 148 | } |
---|
| 149 | test history-5.1 {info option} history {history info} [format {%6d set a {b |
---|
| 150 | c d e} |
---|
| 151 | %6d set b 1234 |
---|
| 152 | %6d set c {a |
---|
| 153 | b |
---|
| 154 | c}} $num [expr $num+1] [expr $num+2]] |
---|
| 155 | test history-5.2 {info option} history {history i 2} [format {%6d set b 1234 |
---|
| 156 | %6d set c {a |
---|
| 157 | b |
---|
| 158 | c}} [expr $num+1] [expr $num+2]] |
---|
| 159 | test history-5.3 {info option} history {catch {history i 2 3}} 1 |
---|
| 160 | test history-5.4 {info option} history { |
---|
| 161 | catch {history i 2 3} msg |
---|
| 162 | set msg |
---|
| 163 | } {wrong # args: should be "history info ?count?"} |
---|
| 164 | test history-5.5 {info option} history {history} [format {%6d set a {b |
---|
| 165 | c d e} |
---|
| 166 | %6d set b 1234 |
---|
| 167 | %6d set c {a |
---|
| 168 | b |
---|
| 169 | c}} $num [expr $num+1] [expr $num+2]] |
---|
| 170 | |
---|
| 171 | # "history keep" |
---|
| 172 | |
---|
| 173 | if {[testConstraint history]} { |
---|
| 174 | history add "foo1" |
---|
| 175 | history add "foo2" |
---|
| 176 | history add "foo3" |
---|
| 177 | history keep 2 |
---|
| 178 | } |
---|
| 179 | test history-6.1 {keep option} history {history event [expr [history n]-1]} foo3 |
---|
| 180 | test history-6.2 {keep option} history {history event -1} foo2 |
---|
| 181 | test history-6.3 {keep option} history {catch {history event -3}} 1 |
---|
| 182 | test history-6.4 {keep option} history { |
---|
| 183 | catch {history event -3} msg |
---|
| 184 | set msg |
---|
| 185 | } {event "-3" is too far in the past} |
---|
| 186 | if {[testConstraint history]} { |
---|
| 187 | history k 5 |
---|
| 188 | } |
---|
| 189 | test history-6.5 {keep option} history {history event -1} foo2 |
---|
| 190 | test history-6.6 {keep option} history {history event -2} {} |
---|
| 191 | test history-6.7 {keep option} history {history event -3} {} |
---|
| 192 | test history-6.8 {keep option} history {history event -4} {} |
---|
| 193 | test history-6.9 {keep option} history {catch {history event -5}} 1 |
---|
| 194 | test history-6.10 {keep option} history {catch {history keep 4 6}} 1 |
---|
| 195 | test history-6.11 {keep option} history { |
---|
| 196 | catch {history keep 4 6} msg |
---|
| 197 | set msg |
---|
| 198 | } {wrong # args: should be "history keep ?count?"} |
---|
| 199 | test history-6.12 {keep option} history {catch {history keep}} 0 |
---|
| 200 | test history-6.13 {keep option} history { |
---|
| 201 | history keep |
---|
| 202 | } {5} |
---|
| 203 | test history-6.14 {keep option} history {catch {history keep -3}} 1 |
---|
| 204 | test history-6.15 {keep option} history { |
---|
| 205 | catch {history keep -3} msg |
---|
| 206 | set msg |
---|
| 207 | } {illegal keep count "-3"} |
---|
| 208 | test history-6.16 {keep option} history { |
---|
| 209 | catch {history keep butter} msg |
---|
| 210 | set msg |
---|
| 211 | } {illegal keep count "butter"} |
---|
| 212 | |
---|
| 213 | # "history nextid" |
---|
| 214 | |
---|
| 215 | if {[testConstraint history]} { |
---|
| 216 | set num [history n] |
---|
| 217 | history add "Testing" |
---|
| 218 | history add "Testing2" |
---|
| 219 | } |
---|
| 220 | test history-7.1 {nextid option} history {history event} "Testing" |
---|
| 221 | test history-7.2 {nextid option} history {history next} [expr $num+2] |
---|
| 222 | test history-7.3 {nextid option} history {catch {history nextid garbage}} 1 |
---|
| 223 | test history-7.4 {nextid option} history { |
---|
| 224 | catch {history nextid garbage} msg |
---|
| 225 | set msg |
---|
| 226 | } {wrong # args: should be "history nextid"} |
---|
| 227 | |
---|
| 228 | # "history clear" |
---|
| 229 | |
---|
| 230 | if {[testConstraint history]} { |
---|
| 231 | set num [history n] |
---|
| 232 | history add "Testing" |
---|
| 233 | history add "Testing2" |
---|
| 234 | } |
---|
| 235 | test history-8.1 {clear option} history {catch {history clear junk}} 1 |
---|
| 236 | test history-8.2 {clear option} history {history clear} {} |
---|
| 237 | if {[testConstraint history]} { |
---|
| 238 | history add "Testing" |
---|
| 239 | } |
---|
| 240 | test history-8.3 {clear option} history {history} { 1 Testing} |
---|
| 241 | |
---|
| 242 | # miscellaneous |
---|
| 243 | |
---|
| 244 | test history-9.1 {miscellaneous} history {catch {history gorp} msg} 1 |
---|
| 245 | test history-9.2 {miscellaneous} history { |
---|
| 246 | catch {history gorp} msg |
---|
| 247 | set msg |
---|
| 248 | } {bad option "gorp": must be add, change, clear, event, info, keep, nextid, or redo} |
---|
| 249 | |
---|
| 250 | # cleanup |
---|
| 251 | ::tcltest::cleanupTests |
---|
| 252 | return |
---|