summaryrefslogtreecommitdiff
path: root/tests/general/techo.icn
diff options
context:
space:
mode:
Diffstat (limited to 'tests/general/techo.icn')
-rw-r--r--tests/general/techo.icn63
1 files changed, 63 insertions, 0 deletions
diff --git a/tests/general/techo.icn b/tests/general/techo.icn
new file mode 100644
index 0000000..aa6fe71
--- /dev/null
+++ b/tests/general/techo.icn
@@ -0,0 +1,63 @@
+global time, date, save, wombats
+
+# All variables passed to echo() must be:
+
+# Simple scalar variables, because echo() does not yet understand
+# Icon keywords (such as &clock), arrays, records, or function
+# calls. However, such entities may be assigned to simple global
+# variables, as the main program below shows; and
+
+# Global, because echo() cannot accesss their values otherwise.
+
+# If a variable is undefined or null, echo() outputs nothing.
+
+link echo
+
+procedure main()
+ time := "12:34:56" # fake &clock for reproducible test
+ date := "2010/02/30" # fake &date for reproducible test
+ save := 47.23
+ wombats := 22
+
+ # Usage method 1:
+
+ "It is now $time on $date and you have savings of $$$save." ? echo()
+ "The number of wombats is $wombats." ? echo()
+ "It is now ${time} on ${date} and you have ${wombats} wombats." ? echo()
+ "There is no global variable named \"$foo\"." ? echo()
+ "This does not work: It is now ${&clock}." ? echo()
+ echo()
+ "The previous echo() example printed an empty line." ? echo()
+ echo()
+ "Here is another way to use echo()..." ? echo()
+ echo()
+
+ # Usage method 2:
+
+ "It is now $time on $date and you have savings of $$$save." |
+ "The number of wombats is $wombats." |
+ "It is now ${time} on ${date} and you have ${wombats} wombats." |
+ "There is no global variable named \"$foo\"." |
+ "This does not work: It is now ${&clock}." |
+ "" |
+ "The previous input line printed an empty output line." ? echo()
+
+ # The value of &subject defaults to "", so echo() will print out an
+ # empty line if it is called without a `?'.
+
+ echo()
+
+ # The next test takes advantage of the fact that string
+ # concatenation has a higher precedence than alternation. It
+ # prints three lines:
+
+ "Fee, " ||
+ "fi, " ||
+ "fo, " ||
+ "fum, " | # 1st line
+ "I " ||
+ "smell " ||
+ "the blood " | # 2nd line
+ "of an Englishman!" ? echo() #3rd line
+
+end