tagged release 0.6.4
[parrot.git] / languages / lua / t / expr.t
blob8da0acf31fbdabca26e8923156b3ec176d722ed5
1 #! perl
2 # Copyright (C) 2005-2007, The Perl Foundation.
3 # $Id$
5 =head1 NAME
7 t/expr.t - Lua expression
9 =head1 SYNOPSIS
11     % perl -I../lib -Ilua/t lua/t/expr.t
13 =head1 DESCRIPTION
15 See "Lua 5.1 Reference Manual", section 2.5 "Expressions",
16 L<http://www.lua.org/manual/5.1/manual.html#2.5>.
18 See "Programming in Lua", section 3 "Expressions".
20 =cut
22 use strict;
23 use warnings;
24 use FindBin;
25 use lib "$FindBin::Bin";
27 use Parrot::Test tests => 12;
28 use Test::More;
30 language_output_is( 'lua', <<'CODE', <<'OUT', 'modulo' );
31 x = math.pi
32 print(x - x%0.01)
33 CODE
34 3.14
35 OUT
37 language_output_is( 'lua', <<'CODE', <<'OUT', 'relational op (by reference)' );
38 a = {}; a.x = 1; a.y = 0;
39 b = {}; b.x = 1; b.y = 0;
40 c = a
41 print(a==c)
42 print(a~=b)
43 CODE
44 true
45 true
46 OUT
48 language_output_is( 'lua', <<'CODE', <<'OUT', 'relational op' );
49 print("0"==0)
50 print(2<15)
51 print("2"<"15")
52 CODE
53 false
54 true
55 false
56 OUT
58 language_output_like( 'lua', <<'CODE', <<'OUT', 'relational op' );
59 print(2<"15")
60 CODE
61 /compare/
62 OUT
64 language_output_like( 'lua', <<'CODE', <<'OUT', 'relational op' );
65 print("2"<15)
66 CODE
67 /compare/
68 OUT
70 language_output_is( 'lua', <<'CODE', <<'OUT', 'logical op' );
71 print(4 and 5)
72 print(nil and 13)
73 print(false and 13)
74 print(4 or 5)
75 print(false or 5)
76 print(false or "text")
77 CODE
79 nil
80 false
83 text
84 OUT
86 language_output_is( 'lua', <<'CODE', <<'OUT', 'logical op' );
87 print(10 or 20)
88 print(10 or error())
89 print(nil or "a")
90 print(nil and 10)
91 print(false and error())
92 print(false and nil)
93 print(false or nil)
94 print(10 and 20)
95 CODE
99 nil
100 false
101 false
106 language_output_is( 'lua', <<'CODE', <<'OUT', 'logical not' );
107 print(not nil)
108 print(not false)
109 print(not 0)
110 print(not not nil)
111 print(not "text")
112 a = {}
113 print(not a)
114 CODE
115 true
116 true
117 false
118 false
119 false
120 false
123 language_output_is( 'lua', <<'CODE', <<'OUT', 'concatenation' );
124 print("Hello " .. "World")
125 print(0 .. 1)
126 a = "Hello"
127 print(a .. " World")
128 print(a)
129 CODE
130 Hello World
132 Hello World
133 Hello
136 language_output_is( 'lua', <<'CODE', <<'OUT', 'coercion' );
137 print("10" + 1)
138 print("10 + 1")
139 print("-5.3" * "2")
140 print(10 .. 20)
141 print(tostring(10) == "10")
142 print(10 .. "" == "10")
143 CODE
145 10 + 1
146 -10.6
147 1020
148 true
149 true
152 language_output_like( 'lua', <<'CODE', <<'OUT', 'no coercion' );
153 print("hello" + 1)
154 CODE
155 /perform arithmetic/
158 language_output_is( 'lua', <<'CODE', <<'OUT', 'clone ?' );
159 print(10 + 2)
160 print(10 + 5)
161 a = 20
162 print(a + 3)
163 print(a + 6)
164 b = 30
165 c = b + 4
166 d = b + 7
167 print(c)
168 print(d)
169 CODE
178 # Local Variables:
179 #   mode: cperl
180 #   cperl-indent-level: 4
181 #   fill-column: 100
182 # End:
183 # vim: expandtab shiftwidth=4: