summaryrefslogtreecommitdiffstats
path: root/tcllib/modules/grammar_fa/tests/da_accept.test
diff options
context:
space:
mode:
Diffstat (limited to 'tcllib/modules/grammar_fa/tests/da_accept.test')
-rw-r--r--tcllib/modules/grammar_fa/tests/da_accept.test84
1 files changed, 84 insertions, 0 deletions
diff --git a/tcllib/modules/grammar_fa/tests/da_accept.test b/tcllib/modules/grammar_fa/tests/da_accept.test
new file mode 100644
index 0000000..3ea7cc1
--- /dev/null
+++ b/tcllib/modules/grammar_fa/tests/da_accept.test
@@ -0,0 +1,84 @@
+# -*- tcl -*-
+# finite_automaton.test: tests for the grammar::fa::dacceptor engine
+#
+# Copyright (c) 2004-2007 by Andreas Kupries <andreas_kupries@users.sourceforge.net>
+#
+# RCS: @(#) $Id: da_accept.test,v 1.5 2007/04/12 03:43:14 andreas_kupries Exp $
+
+# -------------------------------------------------------------------------
+# Regular expression for C comments (Extended notation, using the 'not' operator).
+#
+# '/' . '*' . (! (ALL* . '*' . '/' . ALL*)) . '*' . '/'
+# ALL = '/' | '*' | 'any'
+#
+# Generated minimal DFA
+#
+# any/ *
+# | |
+# 0 -/-> 1 -*-> 2 -*-> 3 -/-> 4
+# \<-any-/
+
+#puts -nonewline " RE compile, " ; flush stdout
+
+grammar::fa ccomments fromRegex {. {S /}
+ {S *}
+ {! {. {* {| {S *} {S /} {S any}}}
+ {S *}
+ {S /}
+ {* {| {S *} {S /} {S any}}}}}
+ {S *}
+ {S /}
+ } {/ * any}
+
+#puts -nonewline {FA, } ; flush stdout
+
+ccomments determinize ; #puts -nonewline {deterministic, } ; flush stdout
+ccomments minimize ; #puts minimal ; flush stdout
+
+
+# -------------------------------------------------------------------------
+
+test da-accept-${setimpl}-1.0 {accept? error} {
+ grammar::fa::dacceptor da ccomments
+ catch {da accept?} msg
+ da destroy
+ set msg
+} {wrong # args: should be "::grammar::fa::dacceptor::Snit_methodaccept? type selfns win self symbolstring"}
+
+
+test da-accept-${setimpl}-1.1 {accept? error} {
+ grammar::fa::dacceptor da ccomments
+ catch {da accept? x y} msg
+ da destroy
+ set msg
+} {wrong # args: should be "::grammar::fa::dacceptor::Snit_methodaccept? type selfns win self symbolstring"}
+
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+foreach {n acceptany accept string} {
+ 0 0 0 {x y}
+ 1 1 1 {/ * * /}
+ 2 1 0 {/ * x * /}
+ 3 0 0 {/ * * / * /}
+ 4 0 0 {/ * x * / x * /}
+ 5 0 0 {/ * * * / * * /}
+} {
+ test da-accept-${setimpl}-2.$n {accept?, -any any} {
+ grammar::fa::dacceptor da ccomments -any any
+ set res [da accept? $string]
+ da destroy
+ set res
+ } $acceptany ; # {}
+
+ test da-accept-${setimpl}-3.$n {accept?} {
+ grammar::fa::dacceptor da ccomments
+ set res [da accept? $string]
+ da destroy
+ set res
+ } $accept ; # {}
+}
+
+# -------------------------------------------------------------------------
+ccomments destroy
+::tcltest::cleanupTests