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

 

 

Reply via email to