# -*- tcl -*- # doctoc_parse.testsuite: tests for the doctoc parser. # # Copyright (c) 2009 Andreas Kupries # All rights reserved. # # RCS: @(#) $Id: parse,v 1.1 2009/04/18 21:14:21 andreas_kupries Exp $ # ------------------------------------------------------------------------- source [tcllibPath doctools2base/tests/common] set mytestdir tests/data # ------------------------------------------------------------------------- # We are checking that the various forms of doctoc markup, as can be # generated by doctools::toc::export::doctoc are valid input to the # doctoc parser. # # section {} holds the non-canonical input we have to accept and make # canonical to higher layers. foreach {k section} { 0 {} 1 -ultracompact 2 -compact 3 -indented 4 -aligned 5 -indalign } { TestFilesProcess $mytestdir ok doctoc$section serial-print -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-20.$k.$n "doctools::toc::parse text, $label$section, ok" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { doctools::toc::structure print \ [doctools::toc::parse text $data] } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -result $expected } TestFilesProcess $mytestdir ok doctoc$section serial-print -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-21.$k.$n "doctools::toc::parse file, $label$section, ok" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { doctools::toc::structure print \ [doctools::toc::parse file $input] } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -result $expected } } # ------------------------------------------------------------------------- # We test the error messages and codes thrown by the parser for a # variety of failure possibilities. TestFilesProcess $mytestdir fail doctoc emsg -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-22.$n "doctools::toc::parse, $label, error message" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { doctools::toc::parse text $data } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -returnCodes error -result $expected } TestFilesProcess $mytestdir fail doctoc ecode -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-23.$n "doctools::toc::parse, $label, error code" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { # Catch and rethrow using the error code as new message. catch { doctools::toc::parse text $data } set ::errorCode } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -result $expected } TestFilesProcess $mytestdir fail doctoc emsg -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-24.$n "doctools::toc::parse file, $label, error message" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { catch { [doctools::toc::parse file $input] } msg string map [list "\"$input\" " {}] $msg } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -result $expected } TestFilesProcess $mytestdir fail doctoc ecode -> n label input data expected { test doctools-toc-parse-${stkimpl}-${setimpl}-${impl}-25.$n "doctools::toc::parse file, $label, error code" -setup { # Define a few basic variables and include search paths for # use by the test doctools::toc::parse var load {fox dog lazy jump} doctools::toc::parse include set [TestFilesGlob $mytestdir] } -body { # Catch and rethrow using the error code as new message. catch { doctools::toc::parse file $input } string map [list $input {{}}] $::errorCode } -cleanup { doctools::toc::parse include clear doctools::toc::parse var unset * } -result $expected } # ------------------------------------------------------------------------- unset mytestdir n label input data expected return