diff options
Diffstat (limited to 'tcllib/modules/doctools2idx/tests/import')
-rw-r--r-- | tcllib/modules/doctools2idx/tests/import | 174 |
1 files changed, 174 insertions, 0 deletions
diff --git a/tcllib/modules/doctools2idx/tests/import b/tcllib/modules/doctools2idx/tests/import new file mode 100644 index 0000000..679adcf --- /dev/null +++ b/tcllib/modules/doctools2idx/tests/import @@ -0,0 +1,174 @@ +# -*- tcl -*- +# idx_import.testsuite: Tests for the managed of index import plugins. +# +# Copyright (c) 2009 Andreas Kupries <andreas_kupries@users.sourceforge.net> +# All rights reserved. +# +# RCS: @(#) $Id: import,v 1.1 2009/04/01 04:28:37 andreas_kupries Exp $ + +# ------------------------------------------------------------------------- + +# Tests are run for all formats we have an import plugin for. + +# ------------------------------------------------------------------------- + +set mytestdir tests/data +set mytestconfig {fox dog lazy jump} +set mytestincludes [TestFilesGlob $mytestdir] + +# ------------------------------------------------------------------------- +# ------------------------------------------------------------------------- +# docidx markup + +# We are checking that the various forms of docidx markup, as can be +# generated by doctools::idx(::format::docidx) are valid input to the +# docidx parser. + +foreach {k section} { + 0 {} + 1 -ultracompact + 2 -compact + 3 -indented + 4 -aligned + 5 -indalign +} { + TestFilesProcess $mytestdir ok docidx$section serial-print -> n label input data expected { + test doctools-idx-import-plugin-docidx-20.$k.$n "doctools::idx::import text /docidx, $label$section, ok" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + doctools::idx::structure print [I import text $data docidx] + } -cleanup { + I destroy + } -result $expected + } + + TestFilesProcess $mytestdir ok docidx$section serial-print -> n label input data expected { + test doctools-idx-import-plugin-docidx-21.$k.$n "doctools::idx::import file /docidx, $label$section, ok" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + doctools::idx::structure print [I import file $input docidx] + } -cleanup { + I destroy + } -result $expected + } +} + +# We test the error messages and codes thrown by the parser for a +# variety of failure possibilities. + +TestFilesProcess $mytestdir fail docidx emsg -> n label input data expected { + test doctools-idx-import-plugin-docidx-22.$n "doctools::idx::import text /docidx, $label, error message" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + I import text $data docidx + } -cleanup { + I destroy + } -returnCodes error -result $expected +} + +TestFilesProcess $mytestdir fail docidx ecode -> n label input data expected { + test doctools-idx-import-plugin-docidx-23.$n "doctools::idx::import text /docidx, $label, error code" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + # Catch and rethrow using the error code as new message. + catch { I import text $data docidx } + set ::errorCode + } -cleanup { + I destroy + } -result $expected +} + +TestFilesProcess $mytestdir fail docidx emsg -> n label input data expected { + test doctools-idx-import-plugin-docidx-24.$n "doctools::idx::import file /docidx, $label, error message" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + I import file $input docidx + } -cleanup { + I destroy + } -returnCodes error -result $expected +} + +TestFilesProcess $mytestdir fail docidx ecode -> n label input data expected { + test doctools-idx-import-plugin-docidx-25.$n "doctools::idx::import file /docidx, $label, error code" -setup { + doctools::idx::import I + foreach {n v} $mytestconfig { I config set $n $v } + foreach p $mytestincludes { I include add $p } + } -body { + # Catch and rethrow using the error code as new message. + catch { I import file $input docidx } + set ::errorCode + } -cleanup { + I destroy + } -result $expected +} + +# ------------------------------------------------------------------------- +# ------------------------------------------------------------------------- +# text markup - This is not an importable format. + +# ------------------------------------------------------------------------- +# ------------------------------------------------------------------------- +# json - Java Script Object Notation + +# We are checking that the various forms of json markup, as can be +# generated by doctools::idx(::export(::json)) are valid input to the +# json parser. +# +# section {} holds the non-canonical input we have to accept and make +# canonical to higher layers. + +foreach {k section} { + 0 {} + 1 -ultracompact + 2 -indented + 3 -indalign +} { + TestFilesProcess $mytestdir ok json$section serial-print -> n label input data expected { + test doctools-idx-import-plugin-json-26.$k.$n "doctools::idx::import text /json, $label$section, ok" -setup { + doctools::idx::import I + } -body { + doctools::idx::structure print [I import text $data json] + } -cleanup { + I destroy + } -result $expected + } + + TestFilesProcess $mytestdir ok json$section serial-print -> n label input data expected { + test doctools-idx-import-plugin-json-27.$k.$n "doctools::idx::import file /json, $label$section, ok" -setup { + doctools::idx::import I + } -body { + doctools::idx::structure print [I import file $input json] + } -cleanup { + I destroy + } -result $expected + } +} + +# ------------------------------------------------------------------------- + +# We test the error messages and codes thrown by the parser for a +# variety of failure possibilities. + +TestFilesProcess $mytestdir fail json json-emsg -> n label input data expected { + test doctools-idx-import-plugin-json-28.$n "doctools::idx::import text /json, $label, error message" -setup { + doctools::idx::import I + } -body { + I import text $data json + } -cleanup { + I destroy + } -returnCodes error -result $expected +} + +# ------------------------------------------------------------------------- +unset mytestdir n label input data expected +return |