Posted to tcl by dgood` at Mon Nov 25 23:10:53 GMT 2013view pretty
# for reference proc vwaitTimeout {var time val} { upvar $var v set tmpval $v set afterId [after $time [list set $var $val]] vwait $var after cancel $afterId return [expr {$v eq $val}] } test serial-2 {Send data when client is connected} -setup $SETUP -body { proc fakeRead {chan} {return "Test Data"} proc fakeEof {chan} {return 0} replace read fakeRead replace eof fakeEof startCellmodClient localhost $PORT if {[vwaitTimeout cellmod::test::Fake(Server.ClientChan) 2000 timeout]} {return "Client didn't connect"} SerialReader fakeChan if {[vwaitTimeout cellmod::test::Fake(Client.Buf) 2000 timeout]} {return "Buffer Timeout"} restore read read $Fake(Server.ClientChan) } -cleanup $CLEANUP -result "Test Data" test serial-4 {Serial reopens when closed} -setup $SETUP -body { proc fakeRead {chan} {error "Simulated Read Error"} proc fakeEof {chan} {return 1} proc fakeRestartSerial {args} {incr cellmod::test::Fake(Result)} replace read fakeRead replace eof fakeEof replace RestartSerial fakeRestartSerial set Fake(Result) 0 SerialReader fakeChan SerialReader fakeChan SerialReader fakeChan set Fake(Result) } -cleanup $CLEANUP -result 3