summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/doctools2idx/tests/import
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/doctools2idx/tests/import')
-rw-r--r--tcllib/modules/doctools2idx/tests/import174
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