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