Author: fperrad
Date: Mon Jan 9 00:04:10 2006
New Revision: 11008
Modified:
trunk/languages/lua/lib/luamath.pir
trunk/languages/lua/t/math.t
Log:
Lua:
- fix functions max, min & mod
- more tests
Modified: trunk/languages/lua/lib/luamath.pir
==============================================================================
--- trunk/languages/lua/lib/luamath.pir (original)
+++ trunk/languages/lua/lib/luamath.pir Mon Jan 9 00:04:10 2006
@@ -1,4 +1,4 @@
-# Copyright: 2005 The Perl Foundation. All Rights Reserved.
+# Copyright: 2005-2006 The Perl Foundation. All Rights Reserved.
# $Id$
=head1 NAME
@@ -322,6 +322,9 @@ See "Lua 5.0 Reference Manual", section
.local pmc curr
.local pmc ret
argc = argv
+ unless argc == 0 goto L0
+ tag_error("no value", "number")
+L0:
curr = argv[0]
dmax = checknumber(curr)
i = 1
@@ -335,30 +338,39 @@ L2:
i = i + 1
goto L1
L3:
+ new ret, .LuaNumber
+ ret = dmax
+ .return (ret)
.end
.sub _math_min :anon
.param pmc argv :slurpy
.local int argc
.local int i
- .local float dmax
+ .local float dmin
.local float d
.local pmc curr
.local pmc ret
argc = argv
+ unless argc == 0 goto L0
+ tag_error("no value", "number")
+L0:
curr = argv[0]
- dmax = checknumber(curr)
+ dmin = checknumber(curr)
i = 1
L1:
if i >= argc goto L3
curr = argv[i]
d = checknumber(curr)
- if dmax < d goto L2
- dmax = d
+ if dmin < d goto L2
+ dmin = d
L2:
i = i + 1
goto L1
L3:
+ new ret, .LuaNumber
+ ret = dmin
+ .return (ret)
.end
.sub _math_mod :anon
@@ -367,7 +379,7 @@ L3:
.local pmc ret
$N0 = checknumber(x)
$N1 = checknumber(y)
- $N2 = mod $N0, $N1
+ $N2 = cmod $N0, $N1
new ret, .LuaNumber
ret = $N2
.return (ret)
@@ -427,10 +439,16 @@ L3:
.end
.sub _math_frexp :anon
+ .param pmc x
+ $N0 = checknumber(x)
not_implemented()
.end
.sub _math_ldexp :anon
+ .param pmc x
+ .param pmc exp
+ $N0 = checknumber(x)
+ $I0 = checkint(exp)
not_implemented()
.end
@@ -439,6 +457,8 @@ L3:
.end
.sub _math_randomseed :anon
+ .param pmc seed
+ $I0 = checkint(seed)
not_implemented()
.end
Modified: trunk/languages/lua/t/math.t
==============================================================================
--- trunk/languages/lua/t/math.t (original)
+++ trunk/languages/lua/t/math.t Mon Jan 9 00:04:10 2006
@@ -1,5 +1,5 @@
#! perl -w
-# Copyright: 2005 The Perl Foundation. All Rights Reserved.
+# Copyright: 2005-2006 The Perl Foundation. All Rights Reserved.
# $Id$
=head1 NAME
@@ -22,12 +22,12 @@ use strict;
use FindBin;
use lib "$FindBin::Bin";
-use Parrot::Test tests => 4;
+use Parrot::Test tests => 23;
language_output_like( 'lua', << 'CODE', << 'OUTPUT', "variable pi");
print(math.pi)
CODE
-/3.14/
+/3\.14/
OUTPUT
language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function abs");
@@ -45,16 +45,144 @@ number
12.34
OUTPUT
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function acos");
+print(math.acos(0.5))
+CODE
+/1\.047/
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function asin");
+print(math.asin(0.5))
+CODE
+/0\.523/
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function atan");
+print(math.atan(0.5))
+CODE
+/\.463/
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function atan2");
+print(math.atan2(1, 2))
+CODE
+/\.463/
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function ceil");
+print(math.ceil(12.34))
+print(math.ceil(-12.34))
+CODE
+13
+-12
+OUTPUT
+
language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function cos");
print(math.cos(0))
CODE
1
OUTPUT
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function deg");
+print(math.deg(math.pi))
+CODE
+180
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function exp");
+print(math.exp(1.0))
+CODE
+/2\.718/
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function floor");
+print(math.floor(12.34))
+print(math.floor(-12.34))
+CODE
+12
+-13
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function log");
+print(math.log(47))
+CODE
+/3\.85/
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function log10");
+print(math.log10(47))
+CODE
+/1\.672/
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function max 0");
+print(math.max())
+CODE
+/number expected/
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function max");
+print(math.max(1))
+print(math.max(1, 2))
+print(math.max(1, 2, 3, -4))
+CODE
+1
+2
+3
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function min 0");
+print(math.min())
+CODE
+/number expected/
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function min");
+print(math.min(1))
+print(math.min(1, 2))
+print(math.min(1, 2, 3, -4))
+CODE
+1
+1
+-4
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function mod");
+print(math.mod(7, 3))
+print(math.mod(-7, 3))
+CODE
+1
+-1
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function pow");
+print(math.pow(-2, 3))
+CODE
+-8
+OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function rad");
+print(math.rad(180))
+CODE
+/3\.14/
+OUTPUT
+
language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function sin");
print(math.sin(math.pi/2))
CODE
1
OUTPUT
+
+language_output_like( 'lua', << 'CODE', << 'OUTPUT', "function sqrt");
+print(math.sqrt(2))
+CODE
+/1\.414/
+OUTPUT
+
+language_output_is( 'lua', << 'CODE', << 'OUTPUT', "function tan");
+print(math.tan(math.pi/4))
+CODE
+1
+OUTPUT