# -*- tcl -*- # ------------------------------------------------------------------------- # critcl::ccommand # -- Core tests. # Used via ccommand.test and ccommand-trace.test # -- Parameters # (1) suffix ('' | '-trace') # This parameter affects test naming and directory holding the # expected results. # ------------------------------------------------------------------------- # Parameter validation global suffix if {![info exists suffix]} { error "Missing parameter 'suffix'. Please define as either empty string, or '-trace'" } elseif {($suffix ne "") && ($suffix ne "-trace")} { error "Bad value '$suffix' for parameter 'suffix'. Please define as either empty string, or '-trace'" } # ------------------------------------------------------------------------- # Setup support { useLocal lib/stubs_container/container.tcl stubs::container useLocal lib/stubs_reader/reader.tcl stubs::reader useLocal lib/stubs_genframe/genframe.tcl stubs::gen } testing { useLocal lib/critcl/critcl.tcl critcl } overrides on-traced-on # ------------------------------------------------------------------------- ## ccommand syntax test critcl-ccommand${suffix}-1.0.7 {ccommand, wrong\#args} -constraints tcl9 -body { critcl::ccommand } -returnCodes error -result {wrong # args: should be "critcl::ccommand name anames ?arg ...?"} test critcl-ccommand${suffix}-1.0.6 {ccommand, wrong\#args} -constraints tcl8.6plus -body { critcl::ccommand } -returnCodes error -result {wrong # args: should be "critcl::ccommand name anames ?arg ...?"} test critcl-ccommand${suffix}-1.0.5 {ccommand, wrong\#args} -constraints tcl8.5 -body { critcl::ccommand } -returnCodes error -result {wrong # args: should be "critcl::ccommand name anames ..."} test critcl-ccommand${suffix}-1.0.4 {ccommand, wrong\#args} -constraints tcl8.4 -body { critcl::ccommand } -returnCodes error -result {wrong # args: should be "critcl::ccommand name anames args"} # ------------------------------------------------------------------------- ## Go through the various knobs we can use to configure the definition and output test critcl-ccommand${suffix}-2.0 {ccommand, defaults} -body { get critcl::ccommand command {} { return TCL_OK; } } -result [viewFile [localPath test/assets/ccommand${suffix}/2.0]] test critcl-ccommand${suffix}-2.1 {ccommand, custom arguments} -body { get critcl::ccommand command {CD IP OC OV} { return TCL_OK; } } -result [viewFile [localPath test/assets/ccommand${suffix}/2.1]] test critcl-ccommand${suffix}-2.2 {ccommand, -cname (custom C name)} -body { get critcl::ccommand snafu {} { return TCL_OK; } -cname 1 } -result [viewFile [localPath test/assets/ccommand${suffix}/2.2]] test critcl-ccommand${suffix}-2.3 {ccommand, namespaced name, and Tcl vs C} -body { get critcl::ccommand the::command+max {} { return TCL_OK; } } -result [viewFile [localPath test/assets/ccommand${suffix}/2.3]] test critcl-ccommand${suffix}-2.4 {ccommand, -delproc} -body { get critcl::ccommand command {} { return TCL_OK; } -delproc DELE } -result [viewFile [localPath test/assets/ccommand${suffix}/2.0]] test critcl-ccommand${suffix}-2.5 {ccommand, -clientdata} -body { get critcl::ccommand command {} { return TCL_OK; } -clientdata ABC } -result [viewFile [localPath test/assets/ccommand${suffix}/2.0]] # ------------------------------------------------------------------------- ## Full builds. test critcl-ccommand${suffix}-3.0 {ccommand, defaults} -setup setup -body { critcl::ccommand command {} { return TCL_OK; } critcl::cbuild [the-file] inspect v*.c } -cleanup cleanup -match glob \ -result [viewFile [localPath test/assets/ccommand${suffix}/3.0]] test critcl-ccommand${suffix}-3.4 {ccommand, -delproc} -setup setup -body { critcl::ccommand command {} { return TCL_OK; } -delproc DELE critcl::cbuild [the-file] inspect v*.c } -cleanup cleanup -match glob \ -result [viewFile [localPath test/assets/ccommand${suffix}/3.4]] test critcl-ccommand${suffix}-3.5 {ccommand, -clientdata} -setup setup -body { critcl::ccommand command {} { return TCL_OK; } -clientdata ABC critcl::cbuild [the-file] inspect v*.c } -cleanup cleanup -match glob \ -result [viewFile [localPath test/assets/ccommand${suffix}/3.5]] # ------------------------------------------------------------------------- testsuiteCleanup # Local variables: # mode: tcl # indent-tabs-mode: nil # End: