aboutsummaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-rw-r--r--tests/lexer/driver.cxx24
-rw-r--r--tests/quote/buildfile18
-rw-r--r--tests/quote/test.out11
-rwxr-xr-xtests/quote/test.sh3
4 files changed, 55 insertions, 1 deletions
diff --git a/tests/lexer/driver.cxx b/tests/lexer/driver.cxx
index fb5efc3..e3543da 100644
--- a/tests/lexer/driver.cxx
+++ b/tests/lexer/driver.cxx
@@ -63,7 +63,7 @@ main ()
assert (lex (" foo\\") == tokens ({"<lexer error>"}));
- // Quoting.
+ // Quoting ''.
//
assert (lex ("''") == tokens ({"", ""}));
assert (lex ("'foo'") == tokens ({"foo", ""}));
@@ -79,6 +79,28 @@ main ()
assert (lex ("'foo bar") == tokens ({"<lexer error>"}));
+ // Quoting "".
+ //
+ assert (lex ("\"\"") == tokens ({"", ""}));
+ assert (lex ("\"foo\"") == tokens ({"foo", ""}));
+ assert (lex ("\"foo bar\"") == tokens ({"foo bar", ""}));
+ assert (lex ("\"foo \"bar") == tokens ({"foo bar", ""}));
+ assert (lex ("foo\" bar\"") == tokens ({"foo bar", ""}));
+ assert (lex ("\"foo \"\"bar\"") == tokens ({"foo bar", ""}));
+ assert (lex ("foo\" \"bar") == tokens ({"foo bar", ""}));
+ assert (lex ("\"foo\nbar\"") == tokens ({"foo\nbar", ""}));
+ assert (lex ("\"#:{}()=+\n\"") == tokens ({"#:{}()=+\n", ""}));
+ assert (lex ("\"'\"") == tokens ({"'", ""}));
+ assert (lex ("\"\\\"") == tokens ({"\\", ""}));
+
+ assert (lex ("\"$\"") == tokens ({"", "$", "", ""}));
+ assert (lex ("\"foo$bar\"") == tokens ({"foo", "$", "bar", ""}));
+ assert (lex ("foo\"$\"bar") == tokens ({"foo", "$", "bar", ""}));
+ assert (lex ("f\"oo$ba\"r") == tokens ({"foo", "$", "bar", ""}));
+
+ assert (lex ("\"foo bar") == tokens ({"<lexer error>"}));
+ assert (lex ("\"foo $bar") == tokens ({"foo ", "$", "<lexer error>"}));
+
// Combinations.
//
assert (lex ("foo: bar") == tokens ({"foo", ":", "bar", ""}));
diff --git a/tests/quote/buildfile b/tests/quote/buildfile
new file mode 100644
index 0000000..931bc36
--- /dev/null
+++ b/tests/quote/buildfile
@@ -0,0 +1,18 @@
+print "foo bar"
+print "foo
+bar"
+
+foo = "fo o"
+bar = " bar "
+
+print "$foo"
+print "$bar"
+print "$foo $bar"
+print "$foo$bar"
+
+print "[ $foo ]"
+print "[ $bar ]"
+print "[ $foo $bar ]"
+print "[ $foo/$bar ]"
+
+./:
diff --git a/tests/quote/test.out b/tests/quote/test.out
new file mode 100644
index 0000000..802f28f
--- /dev/null
+++ b/tests/quote/test.out
@@ -0,0 +1,11 @@
+foo bar
+foo
+bar
+fo o
+ bar
+fo o bar
+fo o bar
+[ fo o ]
+[ bar ]
+[ fo o bar ]
+[ fo o/ bar ]
diff --git a/tests/quote/test.sh b/tests/quote/test.sh
new file mode 100755
index 0000000..145ea6b
--- /dev/null
+++ b/tests/quote/test.sh
@@ -0,0 +1,3 @@
+#!/bin/sh
+
+valgrind -q b -q | diff test.out -