summaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorMiguel Sofer <miguel.sofer@gmail.com>2008-09-10 13:23:47 (GMT)
committerMiguel Sofer <miguel.sofer@gmail.com>2008-09-10 13:23:47 (GMT)
commitb2d9ed24c8428b9c2230515bf13aa76dcfdb607f (patch)
tree9ae25b29e219c9f6bc5be5c46c47d1f560762124 /tests
parenteb97dfe76d6d46cf1b3c040b8a907305e5300afe (diff)
downloadtcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.zip
tcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.tar.gz
tcl-b2d9ed24c8428b9c2230515bf13aa76dcfdb607f.tar.bz2
* tests/nre.test: add missing constraints; enable test of foreach
recursion. * generic/tclBasic.c: * generic/tclCompile.h: * generic/tclExecute.c (INST_EVAL_STK): fix for [Bug 2102930], wrong numLevels when evaling a canonical list.
Diffstat (limited to 'tests')
-rw-r--r--tests/nre.test49
1 files changed, 46 insertions, 3 deletions
diff --git a/tests/nre.test b/tests/nre.test
index c415150..ef2802f 100644
--- a/tests/nre.test
+++ b/tests/nre.test
@@ -9,7 +9,7 @@
# See the file "license.terms" for information on usage and redistribution
# of this file, and for a DISCLAIMER OF ALL WARRANTIES.
#
-# RCS: @(#) $Id: nre.test,v 1.5 2008/09/01 12:28:10 msofer Exp $
+# RCS: @(#) $Id: nre.test,v 1.6 2008/09/10 13:24:26 msofer Exp $
if {[lsearch [namespace children] ::tcltest] == -1} {
package require tcltest
@@ -69,6 +69,8 @@ test nre-1.1 {self-recursive procs} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-1.2 {self-recursive lambdas} -setup {
@@ -78,6 +80,8 @@ test nre-1.2 {self-recursive lambdas} -setup {
apply $a 0
} -cleanup {
unset a abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-1.3 {mutually recursive procs and lambdas} -setup {
@@ -91,6 +95,8 @@ test nre-1.3 {mutually recursive procs and lambdas} -setup {
} -cleanup {
rename a {}
unset b abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 2} 0}
#
@@ -107,6 +113,8 @@ test nre-2.1 {alias is not recursive} -setup {
rename a {}
rename b {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 1 1} 0}
#
@@ -125,6 +133,8 @@ test nre-3.1 {imports are not recursive} -setup {
} -cleanup {
rename a {}
namespace delete ::foo
+} -constraints {
+ testnrelevels
} -result {{0 2 1 1} 0}
test nre-4.1 {ensembles are not recursive} -setup {
@@ -139,6 +149,8 @@ test nre-4.1 {ensembles are not recursive} -setup {
rename a {}
rename b {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 1 1} 0}
test nre-5.1 {[namespace eval] is not recursive} -setup {
@@ -150,6 +162,8 @@ test nre-5.1 {[namespace eval] is not recursive} -setup {
::foo::a 0
} -cleanup {
namespace delete ::foo
+} -constraints {
+ testnrelevels
} -result {{0 2 2 2} 0}
test nre-5.2 {[namespace eval] is not recursive} -setup {
@@ -161,6 +175,8 @@ test nre-5.2 {[namespace eval] is not recursive} -setup {
foo::a 0
} -cleanup {
namespace delete ::foo
+} -constraints {
+ testnrelevels
} -result {{0 2 2 2} 0}
test nre-6.1 {[uplevel] is not recursive} -setup {
@@ -171,6 +187,8 @@ test nre-6.1 {[uplevel] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 0} 0}
test nre-6.2 {[uplevel] is not recursive} -setup {
@@ -181,6 +199,8 @@ test nre-6.2 {[uplevel] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 0} 0}
test nre-7.1 {[catch] is not recursive} -setup {
@@ -191,6 +211,8 @@ test nre-7.1 {[catch] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 3 3 0} 0}
test nre-7.2 {[if] is not recursive} -setup {
@@ -201,6 +223,8 @@ test nre-7.2 {[if] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 0} 0}
test nre-7.3 {[while] is not recursive} -setup {
@@ -211,6 +235,8 @@ test nre-7.3 {[while] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 0} 0}
test nre-7.4 {[for] is not recursive} -setup {
@@ -221,6 +247,8 @@ test nre-7.4 {[for] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 0} 0}
test nre-7.5 {[foreach] is not recursive} -constraints {knownBug} -setup {
@@ -234,7 +262,9 @@ test nre-7.5 {[foreach] is not recursive} -constraints {knownBug} -setup {
} -cleanup {
rename a {}
unset abs
-} -result {{0 2 2 0} 0}
+} -constraints {
+ testnrelevels
+} -result {{0 3 3 0} 0}
test nre-7.6 {[eval] is not recursive} -setup {
proc a i [makebody {eval [list a $i]}]
@@ -244,6 +274,8 @@ test nre-7.6 {[eval] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 1} 0}
test nre-7.7 {[eval] is not recursive} -setup {
@@ -254,6 +286,8 @@ test nre-7.7 {[eval] is not recursive} -setup {
} -cleanup {
rename a {}
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 2 1} 0}
test nre-8.1 {nre and {*}} -body {
@@ -285,6 +319,8 @@ test nre-oo.1 {really deep calls in oo - direct} -setup {
} -cleanup {
foo destroy
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-oo.2 {really deep calls in oo - call via [self]} -setup {
@@ -296,6 +332,8 @@ test nre-oo.2 {really deep calls in oo - call via [self]} -setup {
} -cleanup {
foo destroy
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-oo.3 {really deep calls in oo - private calls} -setup {
@@ -307,6 +345,8 @@ test nre-oo.3 {really deep calls in oo - private calls} -setup {
} -cleanup {
foo destroy
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-oo.4 {really deep calls in oo - overriding} -setup {
@@ -323,6 +363,8 @@ test nre-oo.4 {really deep calls in oo - overriding} -setup {
} -cleanup {
foo destroy
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 1 1 1} 0}
test nre-oo.5 {really deep calls in oo - forwards} -setup {
@@ -338,6 +380,8 @@ test nre-oo.5 {really deep calls in oo - forwards} -setup {
} -cleanup {
foo destroy
unset abs
+} -constraints {
+ testnrelevels
} -result {{0 2 1 1} 0}
@@ -362,7 +406,6 @@ test nre-X.1 {eval in wrong interp} {
set res
} {::foo ::foo {} {}}
-
# cleanup
::tcltest::cleanupTests
>(m_sourceFileName); if (!f.open(QFile::ReadOnly)) contents = QString("Could not open file: '%1'").arg(m_sourceFileName); else contents = f.readAll(); } contents.replace('&', "&amp;"); contents.replace('<', "&lt;"); contents.replace('>', "&gt;"); QStringList keywords; keywords << "for " << "if " << "switch " << " int " << "#include " << "const" << "void " << "uint " << "case " << "double " << "#define " << "static" << "new" << "this"; foreach (QString keyword, keywords) contents.replace(keyword, QLatin1String("<font color=olive>") + keyword + QLatin1String("</font>")); contents.replace("(int ", "(<font color=olive><b>int </b></font>"); QStringList ppKeywords; ppKeywords << "#ifdef" << "#ifndef" << "#if" << "#endif" << "#else"; foreach (QString keyword, ppKeywords) contents.replace(keyword, QLatin1String("<font color=navy>") + keyword + QLatin1String("</font>")); contents.replace(QRegExp("(\\d\\d?)"), QLatin1String("<font color=navy>\\1</font>")); QRegExp commentRe("(//.+)\\n"); commentRe.setMinimal(true); contents.replace(commentRe, QLatin1String("<font color=red>\\1</font>\n")); QRegExp stringLiteralRe("(\".+\")"); stringLiteralRe.setMinimal(true); contents.replace(stringLiteralRe, QLatin1String("<font color=green>\\1</font>")); QString html = contents; html.prepend("<html><pre>"); html.append("</pre></html>"); QTextBrowser *sourceViewer = new QTextBrowser(0); sourceViewer->setWindowTitle("Source: " + m_sourceFileName.mid(5)); sourceViewer->setParent(this, Qt::Dialog); sourceViewer->setAttribute(Qt::WA_DeleteOnClose); sourceViewer->setLineWrapMode(QTextEdit::NoWrap); sourceViewer->setHtml(html); sourceViewer->resize(600, 600); sourceViewer->show(); }