Posted to tcl by dgood` at Mon Nov 25 23:10:53 GMT 2013view raw

  1. # for reference
  2. proc vwaitTimeout {var time val} {
  3. upvar $var v
  4. set tmpval $v
  5. set afterId [after $time [list set $var $val]]
  6. vwait $var
  7. after cancel $afterId
  8. return [expr {$v eq $val}]
  9. }
  10.  
  11. test serial-2 {Send data when client is connected} -setup $SETUP -body {
  12. proc fakeRead {chan} {return "Test Data"}
  13. proc fakeEof {chan} {return 0}
  14. replace read fakeRead
  15. replace eof fakeEof
  16.  
  17. startCellmodClient localhost $PORT
  18. if {[vwaitTimeout cellmod::test::Fake(Server.ClientChan) 2000 timeout]} {return "Client didn't connect"}
  19.  
  20. SerialReader fakeChan
  21. if {[vwaitTimeout cellmod::test::Fake(Client.Buf) 2000 timeout]} {return "Buffer Timeout"}
  22. restore read
  23. read $Fake(Server.ClientChan)
  24. } -cleanup $CLEANUP -result "Test Data"
  25.  
  26. test serial-4 {Serial reopens when closed} -setup $SETUP -body {
  27. proc fakeRead {chan} {error "Simulated Read Error"}
  28. proc fakeEof {chan} {return 1}
  29. proc fakeRestartSerial {args} {incr cellmod::test::Fake(Result)}
  30. replace read fakeRead
  31. replace eof fakeEof
  32. replace RestartSerial fakeRestartSerial
  33.  
  34. set Fake(Result) 0
  35. SerialReader fakeChan
  36. SerialReader fakeChan
  37. SerialReader fakeChan
  38. set Fake(Result)
  39. } -cleanup $CLEANUP -result 3
  40.