2 # Copyright (C) 2007, The Perl Foundation.
7 t/test_lex.t - Lua lexicography test
11 % perl -I../lib -Ilua/t lua/t/test_lex.t
15 Tests Lua lexicograaphy
16 (implemented in F<languages/lua/test_lex.pir>).
18 See "Lua 5.1 Reference Manual", section 2.1 "Lexical Conventions",
19 L<http://www.lua.org/manual/5.1/manual.html#2.1>.
26 use lib "$FindBin::Bin";
28 use Parrot::Test tests => 23;
31 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'hello' );
40 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'name' );
42 aSomewhatLongName _INPUT
49 Name: aSomewhatLongName
53 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'keyword' );
99 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'not keyword' );
107 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'string' );
120 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'unfinished string' );
121 print "unfinished string
123 /^[^:]+:1: unfinished string near '"?unfinished string'/
126 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'string with escape sequence too large' );
127 print "escape\333sequence"
129 /^[^:]+:1: escape sequence too large near '"?escape/
132 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'long string' );
145 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'invalid long string delimiter' );
146 print [===+ string ]===]
148 /^[^:]+:1: invalid long string delimiter near '\[==='/
151 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'unfinished string' );
152 print [[unfinished long string
155 /^[^:]+:1: unfinished long string/
158 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'nested long string' );
159 print [[ long string [[ nested ]] ]]
162 /^[^:]+:1: nesting of \[\[\.\.\.\]\] is deprecated near '\[\[ long string \[\['/
165 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'number' );
185 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'malformed number' );
188 /^[^:]+:1: malformed number near '0x1Bh'/
191 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'malformed number' );
194 /^[^:]+:1: malformed number near '1.2.34'/
197 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'malformed number' );
200 /^[^:]+:1: malformed number near '.2A'/
203 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'comment' );
212 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'long comment' );
224 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'not long comment' );
237 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'unfinished long comment' );
238 --[[unfinished long comment
241 /^[^:]+:1: unfinished long comment/
244 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'nested long comment' );
245 --[[ long comment [[ nested ]] ]]
248 /^[^:]+:1: nesting of \[\[\.\.\.\]\] is deprecated near '\[\[ long comment \[\['/
251 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'syntax error' );
254 /^[^:]+:1: syntax error/
257 language_output_is( 'Lua_lex', <<'CODE', <<'OUT', 'shebang' );
264 language_output_like( 'Lua_lex', <<'CODE', <<'OUT', 'shebang misplaced' );
269 /^[^:]+:1: syntax error/
275 # cperl-indent-level: 4
278 # vim: expandtab shiftwidth=4: