##########################################################################
# TEPAM - Tcl's Enhanced Procedure and Argument Manager
##########################################################################
#
# doc_gen.test: 
# This file is part of the TEPAM Doc Gen's regression test. It validates 
# the generate and patch commands
#
# Copyright (C) 2013 Andreas Drollinger
# 
# Id: doc_gen.test
##########################################################################
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
##########################################################################

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

testsNeedTcl     8.5
testsNeedTcltest 1.0

catch {namespace delete ::tepam::doc_gen}
catch {namespace delete ::tepam}
testing {
   useLocal tepam.tcl tepam
   useLocal tepam_doc_gen.tcl tepam::doc_gen
}

set Dir test_doc_dir

makeDirectory $Dir

######## Declare the test procedures ########

   tepam::procedure {display message} {
      -return            -
      -short_description "Displays a simple message box"
      -description       "This procedure allows displaying a configurable message box. It supports the following message types:
                          * Info
                          * Warning
                          * Error
                          Font, foreground and background colors are free selectable.
                          Optionally, all messages can be logged in a log file."
      -args {
         {-mtype -default Warning -choices {Info Warning Error} -description "M. type"}
         {-font -type font -default {Arial 10 italic} -description "Message font"}
         {-level -type integer -optional -range {1 10} -description "Message level"}
         {-fg -type color -default black -description "Message color"}
         {-bg -type color -optional -description "Background color"}
         {-no_border -type none -description "Use a splash window style (no border)"}
         {-log_file -type file -optional -description "Optional message log file"}
         {text -type string -multiple -description "Multiple text lines to display"}
      }
      -example {
         display message "The document hasn't yet been saved!"
         display message -fg red -bg black "Please save first the document"
      }
   } {
      puts "display message:"
      foreach var {mtype font level fg bg no_border log_file text} {
         if {[info exists $var]} {
            puts  "  $var=[set $var]"
         }
      }
   }

   tepam::procedure {display status} {
      -return            -
      -short_description "Displays the program status"
      -args {
         {-font -type font -default {Arial 10 italic} -description "Message font"}
         {-log_file -type file -optional -description "Optional message log file"}
         {text -type string -multiple -description "Multiple text lines to display"}
      }
      -example {
         display status "The program is in a critical state!"
      }
   } {
      puts "display status:"
      foreach var {font log_file text} {
         if {[info exists $var]} {
            puts  "  $var=[set $var]"
         }
      }
   }
   

######## Generate: Generate all formats ########

   # Generate all documentation, do not check the validity of the generated doc at this location
      foreach Format {TXT POD HTML DT} {

         if {$Format=="DT"} {
            set DocStructureRegexp(display_message) {.*\[section "Arguments"\].*\[section "Example"\].*}
            set DocStructureRegexp(display) {.*\[section "Example"\].*}
         } else {
            set DocStructureRegexp(display_message) {.*Name.*Synopsis.*Description.*Arguments.*Example.*}
            set DocStructureRegexp(display) {.*Name.*Synopsis.*Description.*Example.*}
            if {$Format=="TXT" || $Format=="POD"} {
               set DocStructureRegexp(display_message) [string toupper $DocStructureRegexp(display_message)]
               set DocStructureRegexp(display) [string toupper $DocStructureRegexp(display)]
            }
         }
      
         test tepam::doc_gen.nhf.all.$Format "tepam::doc_gen::generate, procedure with sub-procedures, no h/f, $Format" \
                  -body {set Doc(nhf,display,$Format) [tepam::doc_gen::generate -format $Format display]} \
                  -result $DocStructureRegexp(display) \
                  -output "" -match regexp

         test tepam::doc_gen.nhf.single.$Format "tepam::doc_gen::generate, procedure without sub-procedures, no h/f, $Format" \
                  -body {set Doc(nhf,display_message,$Format) [tepam::doc_gen::generate -format $Format {display message}]} \
                  -result $DocStructureRegexp(display_message) \
                  -output "" -match regexp

         test tepam::doc_gen.hf.all.$Format "tepam::doc_gen::generate, procedure with sub-procedures, with h/f, $Format" \
                  -body {set Doc(hf,display,$Format) [tepam::doc_gen::generate -format $Format -header_footer display]} \
                  -result $DocStructureRegexp(display) \
                  -output "" -match regexp

         test tepam::doc_gen.hf.single.$Format "tepam::doc_gen::generate, procedure without sub-procedures, with h/f, $Format" \
                  -body {set Doc(hf,display_message,$Format) [tepam::doc_gen::generate -format $Format -header_footer {display message}]} \
                  -result $DocStructureRegexp(display_message) \
                  -output "" -match regexp

         test tepam::doc_gen.file.all.$Format "tepam::doc_gen::generate, procedure with sub-procedures, safed in file, $Format" \
                  -body {tepam::doc_gen::generate -dest_file $Dir/display__hf.$Format -format $Format -header_footer display} \
                  -result "$Dir/display__hf.$Format" -output ""

         test tepam::doc_gen.file.single.$Format "tepam::doc_gen::generate, procedure without sub-procedures, safed in file, $Format" \
                  -body {tepam::doc_gen::generate -dest_file $Dir/display_message__hf.$Format -format $Format -header_footer {display message}} \
                  -result "$Dir/display_message__hf.$Format" -output ""
   }

######## Check the documentation content ########


######## That's all ########

::tcltest::cleanupTests
return

##########################################################################
# Id: doc_gen.test
# Modifications:
#
# Revision 1.1  2013/10/14 droll
# * Initial checkin
##########################################################################
