#- - -- --- ----- -------- ------------- ---------------------
# cat.test -*- tcl -*-
# (C) 2019 Andreas Kupries. BSD licensed.
#- - -- --- ----- -------- ------------- ---------------------

source [file join \
	[file dirname [file dirname [file join [pwd] [info script]]]] \
	devtools testutilities.tcl]

testsNeedTcl     8.5
testsNeedTcltest 2.0
testsNeed        TclOO 1

support {
    use virtchannel_core/core.tcl   tcl::chan::core
    use virtchannel_core/events.tcl tcl::chan::events
    useLocal string.tcl tcl::chan::string
}
testing {
    useLocal cat.tcl tcl::chan::cat
}

#- - -- --- ----- -------- ------------- ---------------------
## No wrong#args, allowed to zero and up

#- - -- --- ----- -------- ------------- ---------------------

test tcl-chan-cat-2.0 {tell, nothing} -setup {
    set c [tcl::chan::cat]
} -body {
    tell $c
} -cleanup {
    close $c
    unset c
} -result -1

test tcl-chan-cat-2.1 {ticket 1975182bdd - file events} -setup {
    # setup a cat'enated channel
    set fa [tcl::chan::string "ABCDE..XYZ"]
    set fb [tcl::chan::string "0123456789"]
    set ch [tcl::chan::cat $fa $fb]
} -body {
    set r {}
    chan event $ch readable {
        if { [eof $ch] } {
            set done .
        } else {
            lappend r [read $ch 4]
        }
    }    
    vwait done
    set r
} -cleanup {
    close $ch
    unset ch fa fb r
} -result {ABCD E..X YZ01 2345 6789 {}}

#- - -- --- ----- -------- ------------- ---------------------
# Explicit cleanup of loaded support classes.

rename tcl::chan::events {}
rename tcl::chan::core   {}
testsuiteCleanup
return

# Local Variables:
#  mode: tcl
#  indent-tabs-mode: nil
# End:
