[NOTHING CHANGED] Move to maven and massive clean and fixup #93

Closed
farmboy0 wants to merge 43 commits from farmboy0/master into master
55 changed files with 9615 additions and 121 deletions
Showing only changes of commit 5465eff841 - Show all commits

View File

@@ -25,10 +25,13 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.fail;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.PrintStream;
import java.nio.file.Files;
import java.nio.file.OpenOption;
import org.junit.jupiter.api.BeforeEach;
import org.luaj.vm2.Globals;
@@ -94,6 +97,8 @@ abstract class PlatformTestCase extends ResourcesTestCase {
actualOutput = actualOutput.replaceAll("\r\n", "\n");
expectedOutput = expectedOutput.replaceAll("\r\n", "\n");
if (!expectedOutput.equals(actualOutput))
Files.write(new File(testName + ".out").toPath(), actualOutput.getBytes(), new OpenOption[0]);
assertEquals(expectedOutput, actualOutput);
} finally {
globals.STDOUT = oldps;
@@ -132,7 +137,7 @@ abstract class PlatformTestCase extends ResourcesTestCase {
}
private String getExpectedOutput(final String name) throws IOException, InterruptedException {
InputStream output = inputStreamOfResult(name);
InputStream output = inputStreamOfResult(platform.name().toLowerCase() + "/" + name);
if (output != null)
try {
return readString(output);

View File

@@ -61,14 +61,39 @@ main-c suspended
c-c running
c-resume-b false cannot resume non-suspended coroutine
c-resume-c false cannot resume non-suspended coroutine
b-resume-c false attempt to yield across metamethod/C-call boundary
main-resume-b false attempt to yield across metamethod/C-call boundary
main-resume-c false cannot resume dead coroutine
main-b dead
b-resume-c true c-rslt
main-resume-b true b-rslt
c-resumed main-arg-for-c true
c-b suspended
c-c running
b-resumed b-arg-for-b true
b-b running
b-c normal
b-resume-b false cannot resume non-suspended coroutine
b-resume-c false cannot resume non-suspended coroutine
c-resume-b true b-rslt
c-resume-c false cannot resume non-suspended coroutine
main-resume-c true c-rslt
main-b suspended
main-c suspended
b-resumed main-arg-for-b true
b-b running
b-c suspended
b-resume-b false cannot resume non-suspended coroutine
c-resumed b-arg-for-c true
c-b normal
c-c running
c-resume-b false cannot resume non-suspended coroutine
c-resume-c false cannot resume non-suspended coroutine
b-resume-c true c-rslt
main-resume-b true b-rslt
main-resume-c true
main-b suspended
main-c dead
main-resume-b false cannot resume dead coroutine
main-resume-c false cannot resume dead coroutine
main-b dead
main-c dead
main-resume-b false cannot resume dead coroutine
b-resumed main-arg-for-b true
b-b running
b-c dead
b-resume-b false cannot resume non-suspended coroutine
b-resume-c false cannot resume dead coroutine
main-resume-b true b-rslt
main-resume-c false cannot resume dead coroutine

View File

@@ -0,0 +1,82 @@
true
true
true
true
true
write file.0
Thiswrite file.0
is a pen.write file.0
flush true
f userdata
file.1
write file.2
type(f) file.1
close true
type(f) closed file
type("f") nil
"abc" string
----- 1
"def" string
----- 2
"12345" number
----- 3
"678910" number
----- 4
" more\7aaaaaa\8bbbthe rest" string
----- 5
h file.1 file.4 nil
write file.3
close true
f.type file.5
f file.6
write file.6
type(f) file.5
close true
"line one"
"line two"
""
"after blank line"
"unterminated line"
"line one"
"line two"
""
"after blank line"
"unterminated line"
"line one"
"line two"
""
"after blank line"
"unterminated line"
"line one"
"line two"
""
"after blank line"
"unterminated line"
file.7
file.7
a:write file.8
b:write file.9
a:setvbuf true
a:setvbuf true
a:setvbuf true
a:write file.8
b:write file.9
a:flush true
b:flush true
a:close true
a:write false closed
a:flush false closed
a:read false closed
a:lines false closed
a:seek false closed
a:setvbuf false closed
a:close false closed
io.type(a) true
io.close() true
io.close(io.output()) true
io.close() true
io.write false closed
io.flush false closed
io.close false closed
io.read false closed
io.lines false closed

View File

@@ -0,0 +1,729 @@
---------- miscellaneous tests ----------
math.sin( 0.0 ) true <zero>
math.cos( math.pi ) true -1
math.sqrt( 9.0 ) true 3
math.modf( 5.25 ) true 5 0.25
math.frexp(0.00625) true 0.8 -7
-5 ^ 2 true -25
-5 / 2 true -2.5
-5 % 2 true 1
---------- constants ----------
math.huge true <pos-inf>
math.pi true 3.1415
---------- unary operator - ----------
--2.5 true
--2 true
-0 true <zero>
-2 true -2
-2.5 true -2.5
-'-2.5' true 2.5
-'-2' true 2
-'0' true <zero>
-'2' true -2
-'2.5' true -2.5
---------- unary operator not ----------
not -2.5 true false
not -2 true false
not 0 true false
not 2 true false
not 2.5 true false
not '-2.5' true false
not '-2' true false
not '0' true false
not '2' true false
not '2.5' true false
---------- binary operator + ----------
2+0 true 2
-2.5+0 true -2.5
2+1 true 3
5+2 true 7
-5+2 true -3
16+2 true 18
-16+-2 true -18
0.5+0 true 0.5
0.5+1 true 1.5
0.5+2 true 2.5
0.5+-1 true -0.5
0.5+2 true 2.5
2.25+0 true 2.25
2.25+2 true 4.25
-2+0 true -2
3+3 true 6
'2'+'0' true 2
'2.5'+'3' true 5.5
'-2'+'1.5' true -0.5
'-2.5'+'-1.5' true -4
'3.0'+'3.0' true 6
2.75+2.75 true 5.5
'2.75'+'2.75' true 5.5
3+'3' true 6
'3'+3 true 6
2.75+'2.75' true 5.5
'2.75'+2.75 true 5.5
-3+'-4' true -7
'-3'+4 true 1
-3+'4' true 1
'-3'+-4 true -7
-4.75+'2.75' true -2
'-2.75'+1.75 true -1
4.75+'-2.75' true 2
'2.75'+-1.75 true 1
---------- binary operator - ----------
2-0 true 2
-2.5-0 true -2.5
2-1 true 1
5-2 true 3
-5-2 true -7
16-2 true 14
-16--2 true -14
0.5-0 true 0.5
0.5-1 true -0.5
0.5-2 true -1.5
0.5--1 true 1.5
0.5-2 true -1.5
2.25-0 true 2.25
2.25-2 true 0.25
-2-0 true -2
3-3 true <zero>
'2'-'0' true 2
'2.5'-'3' true -0.5
'-2'-'1.5' true -3.5
'-2.5'-'-1.5' true -1
'3.0'-'3.0' true <zero>
2.75-2.75 true <zero>
'2.75'-'2.75' true <zero>
3-'3' true <zero>
'3'-3 true <zero>
2.75-'2.75' true <zero>
'2.75'-2.75 true <zero>
-3-'-4' true 1
'-3'-4 true -7
-3-'4' true -7
'-3'--4 true 1
-4.75-'2.75' true -7.5
'-2.75'-1.75 true -4.5
4.75-'-2.75' true 7.5
'2.75'--1.75 true 4.5
---------- binary operator * ----------
2*0 true <zero>
-2.5*0 true <zero>
2*1 true 2
5*2 true 10
-5*2 true -10
16*2 true 32
-16*-2 true 32
0.5*0 true <zero>
0.5*1 true 0.5
0.5*2 true 1
0.5*-1 true -0.5
0.5*2 true 1
2.25*0 true <zero>
2.25*2 true 4.5
-2*0 true <zero>
3*3 true 9
'2'*'0' true <zero>
'2.5'*'3' true 7.5
'-2'*'1.5' true -3
'-2.5'*'-1.5' true 3.75
'3.0'*'3.0' true 9
2.75*2.75 true 7.5625
'2.75'*'2.75' true 7.5625
3*'3' true 9
'3'*3 true 9
2.75*'2.75' true 7.5625
'2.75'*2.75 true 7.5625
-3*'-4' true 12
'-3'*4 true -12
-3*'4' true -12
'-3'*-4 true 12
-4.75*'2.75' true -13.06
'-2.75'*1.75 true -4.812
4.75*'-2.75' true -13.06
'2.75'*-1.75 true -4.812
---------- binary operator ^ ----------
2^0 true 1
-2.5^0 true 1
2^1 true 2
5^2 true 25
-5^2 true 25
16^2 true 256
-16^-2 true 0.0039
0.5^0 true 1
0.5^1 true 0.5
0.5^2 true 0.25
0.5^-1 true 2
0.5^2 true 0.25
2.25^0 true 1
2.25^2 true 5.0625
-2^0 true 1
3^3 true 27
'2'^'0' true 1
'2.5'^'3' true 15.625
'-2'^'1.5' true -nan
'-2.5'^'-1.5' true -nan
'3.0'^'3.0' true 27
2.75^2.75 true 16.149
'2.75'^'2.75' true 16.149
3^'3' true 27
'3'^3 true 27
2.75^'2.75' true 16.149
'2.75'^2.75 true 16.149
-3^'-4' true 0.0123
'-3'^4 true 81
-3^'4' true 81
'-3'^-4 true 0.0123
-4.75^'2.75' true -nan
'-2.75'^1.75 true -nan
4.75^'-2.75' true 0.0137
'2.75'^-1.75 true 0.1702
---------- binary operator / ----------
2/0 true <pos-inf>
-2.5/0 true <neg-inf>
2/1 true 2
5/2 true 2.5
-5/2 true -2.5
16/2 true 8
-16/-2 true 8
0.5/0 true <pos-inf>
0.5/1 true 0.5
0.5/2 true 0.25
0.5/-1 true -0.5
0.5/2 true 0.25
2.25/0 true <pos-inf>
2.25/2 true 1.125
-2/0 true <neg-inf>
3/3 true 1
'2'/'0' true <pos-inf>
'2.5'/'3' true 0.8333
'-2'/'1.5' true -1.333
'-2.5'/'-1.5' true 1.6666
'3.0'/'3.0' true 1
2.75/2.75 true 1
'2.75'/'2.75' true 1
3/'3' true 1
'3'/3 true 1
2.75/'2.75' true 1
'2.75'/2.75 true 1
-3/'-4' true 0.75
'-3'/4 true -0.75
-3/'4' true -0.75
'-3'/-4 true 0.75
-4.75/'2.75' true -1.727
'-2.75'/1.75 true -1.571
4.75/'-2.75' true -1.727
'2.75'/-1.75 true -1.571
---------- binary operator % ----------
2%0 true -nan
-2.5%0 true -nan
2%1 true <zero>
5%2 true 1
-5%2 true 1
16%2 true <zero>
-16%-2 true <zero>
0.5%0 true -nan
0.5%1 true 0.5
0.5%2 true 0.5
0.5%-1 true -0.5
0.5%2 true 0.5
2.25%0 true -nan
2.25%2 true 0.25
-2%0 true -nan
3%3 true <zero>
'2'%'0' true -nan
'2.5'%'3' true 2.5
'-2'%'1.5' true 1
'-2.5'%'-1.5' true -1
'3.0'%'3.0' true <zero>
2.75%2.75 true <zero>
'2.75'%'2.75' true <zero>
3%'3' true <zero>
'3'%3 true <zero>
2.75%'2.75' true <zero>
'2.75'%2.75 true <zero>
-3%'-4' true -3
'-3'%4 true 1
-3%'4' true 1
'-3'%-4 true -3
-4.75%'2.75' true 0.75
'-2.75'%1.75 true 0.75
4.75%'-2.75' true -0.75
'2.75'%-1.75 true -0.75
---------- binary operator == ----------
2==0 true false
-2.5==0 true false
2==1 true false
5==2 true false
-5==2 true false
16==2 true false
-16==-2 true false
0.5==0 true false
0.5==1 true false
0.5==2 true false
0.5==-1 true false
0.5==2 true false
2.25==0 true false
2.25==2 true false
-2==0 true false
3==3 true true
'2'=='0' true false
'2.5'=='3' true false
'-2'=='1.5' true false
'-2.5'=='-1.5' true false
'3.0'=='3.0' true true
2.75==2.75 true true
'2.75'=='2.75' true true
---------- binary operator ~= ----------
2~=0 true true
-2.5~=0 true true
2~=1 true true
5~=2 true true
-5~=2 true true
16~=2 true true
-16~=-2 true true
0.5~=0 true true
0.5~=1 true true
0.5~=2 true true
0.5~=-1 true true
0.5~=2 true true
2.25~=0 true true
2.25~=2 true true
-2~=0 true true
3~=3 true false
'2'~='0' true true
'2.5'~='3' true true
'-2'~='1.5' true true
'-2.5'~='-1.5' true true
'3.0'~='3.0' true false
2.75~=2.75 true false
'2.75'~='2.75' true false
---------- binary operator > ----------
2>0 true true
-2.5>0 true false
2>1 true true
5>2 true true
-5>2 true false
16>2 true true
-16>-2 true false
0.5>0 true true
0.5>1 true false
0.5>2 true false
0.5>-1 true true
0.5>2 true false
2.25>0 true true
2.25>2 true true
-2>0 true false
3>3 true false
'2'>'0' true true
'2.5'>'3' true false
'-2'>'1.5' true false
'-2.5'>'-1.5' true true
'3.0'>'3.0' true false
2.75>2.75 true false
'2.75'>'2.75' true false
---------- binary operator < ----------
2<0 true false
-2.5<0 true true
2<1 true false
5<2 true false
-5<2 true true
16<2 true false
-16<-2 true true
0.5<0 true false
0.5<1 true true
0.5<2 true true
0.5<-1 true false
0.5<2 true true
2.25<0 true false
2.25<2 true false
-2<0 true true
3<3 true false
'2'<'0' true false
'2.5'<'3' true true
'-2'<'1.5' true true
'-2.5'<'-1.5' true false
'3.0'<'3.0' true false
2.75<2.75 true false
'2.75'<'2.75' true false
---------- binary operator >= ----------
2>=0 true true
-2.5>=0 true false
2>=1 true true
5>=2 true true
-5>=2 true false
16>=2 true true
-16>=-2 true false
0.5>=0 true true
0.5>=1 true false
0.5>=2 true false
0.5>=-1 true true
0.5>=2 true false
2.25>=0 true true
2.25>=2 true true
-2>=0 true false
3>=3 true true
'2'>='0' true true
'2.5'>='3' true false
'-2'>='1.5' true false
'-2.5'>='-1.5' true true
'3.0'>='3.0' true true
2.75>=2.75 true true
'2.75'>='2.75' true true
---------- binary operator <= ----------
2<=0 true false
-2.5<=0 true true
2<=1 true false
5<=2 true false
-5<=2 true true
16<=2 true false
-16<=-2 true true
0.5<=0 true false
0.5<=1 true true
0.5<=2 true true
0.5<=-1 true false
0.5<=2 true true
2.25<=0 true false
2.25<=2 true false
-2<=0 true true
3<=3 true true
'2'<='0' true false
'2.5'<='3' true true
'-2'<='1.5' true true
'-2.5'<='-1.5' true false
'3.0'<='3.0' true true
2.75<=2.75 true true
'2.75'<='2.75' true true
---------- math.abs ----------
math.abs(-2.5) true 2.5
math.abs(-2) true 2
math.abs(0) true <zero>
math.abs(2) true 2
math.abs(2.5) true 2.5
math.abs('-2.5') true 2.5
math.abs('-2') true 2
math.abs('0') true <zero>
math.abs('2') true 2
math.abs('2.5') true 2.5
---------- math.ceil ----------
math.ceil(-2.5) true -2
math.ceil(-2) true -2
math.ceil(0) true <zero>
math.ceil(2) true 2
math.ceil(2.5) true 3
math.ceil('-2.5') true -2
math.ceil('-2') true -2
math.ceil('0') true <zero>
math.ceil('2') true 2
math.ceil('2.5') true 3
---------- math.cos ----------
math.cos(-2.5) true -0.801
math.cos(-2) true -0.416
math.cos(0) true 1
math.cos(2) true -0.416
math.cos(2.5) true -0.801
math.cos('-2.5') true -0.801
math.cos('-2') true -0.416
math.cos('0') true 1
math.cos('2') true -0.416
math.cos('2.5') true -0.801
---------- math.deg ----------
math.deg(-2.5) true -143.2
math.deg(-2) true -114.5
math.deg(0) true <zero>
math.deg(2) true 114.59
math.deg(2.5) true 143.23
math.deg('-2.5') true -143.2
math.deg('-2') true -114.5
math.deg('0') true <zero>
math.deg('2') true 114.59
math.deg('2.5') true 143.23
---------- math.exp ----------
math.exp(-2.5) true 0.0820
math.exp(-2) true 0.1353
math.exp(0) true 1
math.exp(2) true 7.3890
math.exp(2.5) true 12.182
math.exp('-2.5') true 0.0820
math.exp('-2') true 0.1353
math.exp('0') true 1
math.exp('2') true 7.3890
math.exp('2.5') true 12.182
---------- math.floor ----------
math.floor(-2.5) true -3
math.floor(-2) true -2
math.floor(0) true <zero>
math.floor(2) true 2
math.floor(2.5) true 2
math.floor('-2.5') true -3
math.floor('-2') true -2
math.floor('0') true <zero>
math.floor('2') true 2
math.floor('2.5') true 2
---------- math.frexp ----------
math.frexp(-2.5) true -0.625 2
math.frexp(-2) true -0.5 2
math.frexp(0) true <zero> <zero>
math.frexp(2) true 0.5 2
math.frexp(2.5) true 0.625 2
math.frexp('-2.5') true -0.625 2
math.frexp('-2') true -0.5 2
math.frexp('0') true <zero> <zero>
math.frexp('2') true 0.5 2
math.frexp('2.5') true 0.625 2
---------- math.modf ----------
math.modf(-2.5) true -2 -0.5
math.modf(-2) true -2 <zero>
math.modf(0) true <zero> <zero>
math.modf(2) true 2 <zero>
math.modf(2.5) true 2 0.5
math.modf('-2.5') true -2 -0.5
math.modf('-2') true -2 <zero>
math.modf('0') true <zero> <zero>
math.modf('2') true 2 <zero>
math.modf('2.5') true 2 0.5
---------- math.rad ----------
math.rad(-2.5) true -0.043
math.rad(-2) true -0.034
math.rad(0) true <zero>
math.rad(2) true 0.0349
math.rad(2.5) true 0.0436
math.rad('-2.5') true -0.043
math.rad('-2') true -0.034
math.rad('0') true <zero>
math.rad('2') true 0.0349
math.rad('2.5') true 0.0436
---------- math.sin ----------
math.sin(-2.5) true -0.598
math.sin(-2) true -0.909
math.sin(0) true <zero>
math.sin(2) true 0.9092
math.sin(2.5) true 0.5984
math.sin('-2.5') true -0.598
math.sin('-2') true -0.909
math.sin('0') true <zero>
math.sin('2') true 0.9092
math.sin('2.5') true 0.5984
---------- math.sqrt ----------
math.sqrt(-2.5) true -nan
math.sqrt(-2) true -nan
math.sqrt(0) true <zero>
math.sqrt(2) true 1.4142
math.sqrt(2.5) true 1.5811
math.sqrt('-2.5') true -nan
math.sqrt('-2') true -nan
math.sqrt('0') true <zero>
math.sqrt('2') true 1.4142
math.sqrt('2.5') true 1.5811
---------- math.tan ----------
math.tan(-2.5) true 0.7470
math.tan(-2) true 2.1850
math.tan(0) true <zero>
math.tan(2) true -2.185
math.tan(2.5) true -0.747
math.tan('-2.5') true 0.7470
math.tan('-2') true 2.1850
math.tan('0') true <zero>
math.tan('2') true -2.185
math.tan('2.5') true -0.747
---------- math.fmod ----------
math.fmod(2,0) true -nan
math.fmod(-2.5,0) true -nan
math.fmod(2,1) true <zero>
math.fmod(5,2) true 1
math.fmod(-5,2) true -1
math.fmod(16,2) true <zero>
math.fmod(-16,-2) true <zero>
math.fmod(0.5,0) true -nan
math.fmod(0.5,1) true 0.5
math.fmod(0.5,2) true 0.5
math.fmod(0.5,-1) true 0.5
math.fmod(0.5,2) true 0.5
math.fmod(2.25,0) true -nan
math.fmod(2.25,2) true 0.25
math.fmod(-2,0) true -nan
math.fmod(3,3) true <zero>
math.fmod('2','0') true -nan
math.fmod('2.5','3') true 2.5
math.fmod('-2','1.5') true -0.5
math.fmod('-2.5','-1.5') true -1
math.fmod('3.0','3.0') true <zero>
math.fmod(2.75,2.75) true <zero>
math.fmod('2.75','2.75') true <zero>
math.fmod(3,'3') true <zero>
math.fmod('3',3) true <zero>
math.fmod(2.75,'2.75') true <zero>
math.fmod('2.75',2.75) true <zero>
math.fmod(-3,'-4') true -3
math.fmod('-3',4) true -3
math.fmod(-3,'4') true -3
math.fmod('-3',-4) true -3
math.fmod(-4.75,'2.75') true -2
math.fmod('-2.75',1.75) true -1
math.fmod(4.75,'-2.75') true 2
math.fmod('2.75',-1.75) true 1
---------- math.ldexp ----------
math.ldexp(2,0) true 2
math.ldexp(-2.5,0) true -2.5
math.ldexp(2,1) true 4
math.ldexp(5,2) true 20
math.ldexp(-5,2) true -20
math.ldexp(16,2) true 64
math.ldexp(-16,-2) true -4
math.ldexp(0.5,0) true 0.5
math.ldexp(0.5,1) true 1
math.ldexp(0.5,2) true 2
math.ldexp(0.5,-1) true 0.25
math.ldexp(0.5,2) true 2
math.ldexp(2.25,0) true 2.25
math.ldexp(2.25,2) true 9
math.ldexp(-2,0) true -2
math.ldexp(3,3) true 24
math.ldexp('2','0') true 2
math.ldexp('2.5','3') true 20
math.ldexp('-2','1.5') true -4
math.ldexp('-2.5','-1.5') true -1.25
math.ldexp('3.0','3.0') true 24
math.ldexp(2.75,2.75) true 11
math.ldexp('2.75','2.75') true 11
math.ldexp(3,'3') true 24
math.ldexp('3',3) true 24
math.ldexp(2.75,'2.75') true 11
math.ldexp('2.75',2.75) true 11
math.ldexp(-3,'-4') true -0.187
math.ldexp('-3',4) true -48
math.ldexp(-3,'4') true -48
math.ldexp('-3',-4) true -0.187
math.ldexp(-4.75,'2.75') true -19
math.ldexp('-2.75',1.75) true -5.5
math.ldexp(4.75,'-2.75') true 1.1875
math.ldexp('2.75',-1.75) true 1.375
---------- math.pow ----------
math.pow(2,0) true 1
math.pow(-2.5,0) true 1
math.pow(2,1) true 2
math.pow(5,2) true 25
math.pow(-5,2) true 25
math.pow(16,2) true 256
math.pow(-16,-2) true 0.0039
math.pow(0.5,0) true 1
math.pow(0.5,1) true 0.5
math.pow(0.5,2) true 0.25
math.pow(0.5,-1) true 2
math.pow(0.5,2) true 0.25
math.pow(2.25,0) true 1
math.pow(2.25,2) true 5.0625
math.pow(-2,0) true 1
math.pow(3,3) true 27
math.pow('2','0') true 1
math.pow('2.5','3') true 15.625
math.pow('-2','1.5') true -nan
math.pow('-2.5','-1.5') true -nan
math.pow('3.0','3.0') true 27
math.pow(2.75,2.75) true 16.149
math.pow('2.75','2.75') true 16.149
math.pow(3,'3') true 27
math.pow('3',3) true 27
math.pow(2.75,'2.75') true 16.149
math.pow('2.75',2.75) true 16.149
math.pow(-3,'-4') true 0.0123
math.pow('-3',4) true 81
math.pow(-3,'4') true 81
math.pow('-3',-4) true 0.0123
math.pow(-4.75,'2.75') true -nan
math.pow('-2.75',1.75) true -nan
math.pow(4.75,'-2.75') true 0.0137
math.pow('2.75',-1.75) true 0.1702
---------- math.max ----------
math.max(4) true 4
math.max(-4.5) true -4.5
math.max('5.5') true 5.5
math.max('-5') true -5
math.max(4,'8') true 8
math.max(-4.5,'-8') true -4.5
math.max('5.5',2.2) true 5.5
math.max('-5',-2.2) true -2.2
math.max(111,222,333) true 333
math.max(-222,-333,-111) true -111
math.max(444,-111,-222) true 444
---------- math.min ----------
math.min(4) true 4
math.min(-4.5) true -4.5
math.min('5.5') true 5.5
math.min('-5') true -5
math.min(4,'8') true 4
math.min(-4.5,'-8') true -8
math.min('5.5',2.2) true 2.2
math.min('-5',-2.2) true -5
math.min(111,222,333) true 111
math.min(-222,-333,-111) true -333
math.min(444,-111,-222) true -222
----------- Random number tests
math.random() number true
math.random() number true
math.random() number true
math.random() number true
math.random() number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
-- comparing new numbers
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
-- resetting seed
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
----------- Tests involving -0 and NaN
0 == -0 true
t[-0] == t[0] true
mz, z <zero> <zero>
mz == z true
a[z] == 1 and a[mz] == 1 true

View File

@@ -19,15 +19,29 @@ os.date('%A', 1281364496) true string nil
os.date('%b', 1281364496) true string nil
os.date('%B', 1281364496) true string nil
os.date('%c', 1281364496) true string nil
os.date('%C', 1281364496) true string nil
os.date('%d', 1281364496) true string nil
os.date('%D', 1281364496) true string nil
os.date('%e', 1281364496) true string nil
os.date('%F', 1281364496) true string nil
os.date('%g', 1281364496) true string nil
os.date('%G', 1281364496) true string nil
os.date('%h', 1281364496) true string nil
os.date('%H', 1281364496) true string nil
os.date('%I', 1281364496) true string nil
os.date('%j', 1281364496) true string nil
os.date('%m', 1281364496) true string nil
os.date('%M', 1281364496) true string nil
os.date('%n', 1281364496) true string nil
os.date('%p', 1281364496) true string nil
os.date('%r', 1281364496) true string nil
os.date('%R', 1281364496) true string nil
os.date('%S', 1281364496) true string nil
os.date('%t', 1281364496) true string nil
os.date('%T', 1281364496) true string nil
os.date('%u', 1281364496) true string nil
os.date('%U', 1281364496) true string nil
os.date('%V', 1281364496) true string nil
os.date('%w', 1281364496) true string nil
os.date('%W', 1281364496) true string nil
os.date('%x', 1281364496) true string nil
@@ -35,15 +49,16 @@ os.date('%X', 1281364496) true string nil
os.date('%y', 1281364496) true string nil
os.date('%Y', 1281364496) true string nil
os.date('%z', 1281364496) true string nil
os.date('%Z', 1281364496) true string nil
k string year v number 2010
k string month v number 8
k string day v number 9
k string hour v number 7
k string hour v number 16
k string min v number 34
k string sec v number 56
k string wday v number 2
k string yday v number 221
k string isdst v boolean true
type(os.time()) number
os.time({year=1971, month=2, day=25}) 36360000
os.time({year=1971, month=2, day=25, hour=11, min=22, sec=33}) 36357753
os.time({year=1971, month=2, day=25}) 36327600
os.time({year=1971, month=2, day=25, hour=11, min=22, sec=33}) 36325353

View File

@@ -1,5 +1,4 @@
2
7
-- concat tests
onetwothree
one--two--three
@@ -26,7 +25,6 @@ two
{[1]=seven,[2]=one,[3]=two,[4]=three,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[a]=aaa,[b]=bbb,[c]=ccc} 6
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[7]=nine,[a]=aaa,[b]=bbb,[c]=ccc} 7
{[10]=ten,[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[7]=nine,[a]=aaa,[b]=bbb,[c]=ccc} 7
#{} 0
#{"a"} 1
#{"a","b"} 2
@@ -49,13 +47,7 @@ table.remove(t,1) one
{[10]=ten,[1]=two,[2]=three,[3]=four,[4]=five,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
table.remove(t,3) four
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,5)
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,10)
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,-1)
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,-1)
table.remove(t,5) nil
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
-- sort tests
one-two-three

View File

@@ -0,0 +1,240 @@
11
abc 123 nil pqr
F
F
T
assert(true) true
pcall(assert,true) true
pcall(assert,false) false string
pcall(assert,nil) false string
pcall(assert,true,"msg") true
pcall(assert,false,"msg") false string
pcall(assert,nil,"msg") false string
pcall(assert,false,"msg","msg2") false string
collectgarbage("count") number
collectgarbage("collect") number
collectgarbage("count") number
pcall(ipairs) false string
pcall(ipairs,nil) false string
pcall(ipairs,"a") false string
pcall(ipairs,1) false string
ipairs2 1 one
ipairs2 2 two
ipairs4 1 one
ipairs4 2 two
table loaded
load: nil
load("print(3+4); return 8") func.1 nil
7
load("print(3+4); return 8")() 8
pcall(pairs) false string
pcall(pairs,nil) false string
pcall(pairs,"a") false string
pcall(pairs,1) false string
pairs2 1 one
pairs2 2 two
pairs3 aa aaa
pairs4 1 one
pairs4 2 two
pairs4 aa aaa
pairs5 20 30
pairs5 30 20
_G["abc"] (before) nil
_G["abc"] (after) def
type(nil) nil
type("a") string
type(1) number
type(1.5) number
type(function() end) function
type({}) table
type(true) boolean
type(false) boolean
pcall(type,type) function
pcall(type) false string
(function() return pcall(type) end)() false string
la() false string
ga() false string
getmetatable(ta) nil
getmetatable(tb) nil
setmetatable(ta),{cc1="ccc1"} table
setmetatable(tb),{dd1="ddd1"} table
getmetatable(ta)["cc1"] ccc1
getmetatable(tb)["dd1"] ddd1
getmetatable(1) nil
pcall(setmetatable,1) false string
pcall(setmetatable,nil) false string
pcall(setmetatable,"ABC") false string
pcall(setmetatable,function() end) false string
pcall(rawget) false string
pcall(rawget,"a") false string
pcall(rawget,s) false string
pcall(rawget,t) false string
s nil nil ccc ddd nil nil nil
s nil nil ccc ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,s,"aa","www") tbl.2
s www nil ccc ddd nil nil nil
s www nil ccc ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,s,"cc","xxx") tbl.2
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,t,"aa","yyy") tbl.3
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc ddd nil nil nil
t yyy nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,t,"dd","zzz") tbl.3
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawlen, {}) 0
pcall(rawlen, {"a"}) 1
pcall(rawlen, {"a","b"}) 2
pcall(rawlen, "") 0
pcall(rawlen, "a") 1
pcall(rawlen, "ab") 2
pcall(rawlen, 1) false string
pcall(rawlen, nil) false string
pcall(rawlen) false string
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
s["ee"]="ppp"
s www nil xxx ddd ppp nil nil
s www nil xxx ddd ppp nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
s["cc"]="qqq"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
t["ff"]="rrr"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc zzz nil rrr nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil rrr nil
mt aaa bbb nil nil nil rrr nil
t["dd"]="sss"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc sss nil rrr nil
t yyy nil ccc sss nil nil nil
mt aaa bbb nil nil nil rrr nil
mt aaa bbb nil nil nil rrr nil
mt["gg"]="ttt"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc sss nil rrr ttt
t yyy nil ccc sss nil nil nil
mt aaa bbb nil nil nil rrr ttt
mt aaa bbb nil nil nil rrr ttt
pcall(select) false string
select(1,11,22,33,44,55) 11 22 33 44 55
select(2,11,22,33,44,55) 22 33 44 55
select(3,11,22,33,44,55) 33 44 55
select(4,11,22,33,44,55) 44 55
pcall(select,5,11,22,33,44,55) 55
pcall(select,6,11,22,33,44,55) nil
pcall(select,7,11,22,33,44,55) nil
pcall(select,0,11,22,33,44,55) false string
pcall(select,-1,11,22,33,44,55) 55
pcall(select,-2,11,22,33,44,55) 44
pcall(select,-4,11,22,33,44,55) 22
pcall(select,-5,11,22,33,44,55) 11
pcall(select,-6,11,22,33,44,55) false string
pcall(select,1) nil
pcall(select,select) false string
pcall(select,{}) false string
pcall(select,"2",11,22,33) 22
pcall(select,"abc",11,22,33) false string
pcall(tonumber) nil
pcall(tonumber,nil) nil
pcall(tonumber,"abc") nil
pcall(tonumber,"123") 123
pcall(tonumber,"123",10) 123
pcall(tonumber,"123",8) 83
pcall(tonumber,"123",6) 51
pcall(tonumber,"10101",4) 273
pcall(tonumber,"10101",3) 91
pcall(tonumber,"10101",2) 21
pcall(tonumber,"1a1",16) 417
pcall(tonumber,"1a1",32) 1345
pcall(tonumber,"1a1",54) false string
pcall(tonumber,"1a1",1) false string
pcall(tonumber,"1a1",0) false string
pcall(tonumber,"1a1",-1) false string
pcall(tonumber,"1a1","32") 1345
pcall(tonumber,"123","456") false string
pcall(tonumber,"1a1",10) nil
pcall(tonumber,"151",4) nil
pcall(tonumber,"151",3) nil
pcall(tonumber,"151",2) nil
pcall(tonumber,"123",8,8) 83
pcall(tonumber,123) 123
pcall(tonumber,true) nil
pcall(tonumber,false) nil
pcall(tonumber,tonumber) nil
pcall(tonumber,function() end) nil
pcall(tonumber,{"one","two",a="aa",b="bb"}) nil
pcall(tonumber,"123.456") 123.456
pcall(tonumber," 123.456") 123.456
pcall(tonumber," 234qwer") nil
pcall(tonumber,"0x20") 32
pcall(tonumber," 0x20") 32
pcall(tonumber,"0x20 ") 32
pcall(tonumber," 0x20 ") 32
pcall(tonumber,"0X20") 32
pcall(tonumber," 0X20") 32
pcall(tonumber,"0X20 ") 32
pcall(tonumber," 0X20 ") 32
pcall(tonumber,"0x20",10) nil
pcall(tonumber,"0x20",16) nil
pcall(tonumber,"0x20",8) nil
pcall(tostring) nil
pcall(tostring,nil) nil
pcall(tostring,"abc") abc
pcall(tostring,"abc","def") abc
pcall(tostring,123) 123
pcall(tostring,true) true
pcall(tostring,false) false
tostring(tostring) string
tostring(function() end) string
tostring({"one","two",a="aa",b="bb"}) string
_VERSION string
pcall(badfunc) false string
pcall(badfunc,errfunc) false string
pcall(badfunc,badfunc) false string
pcall(wrappedbad) nil
pcall(wrappedbad,errfunc) nil
pcall(xpcall(badfunc)) false string
in errfunc string
pcall(xpcall(badfunc,errfunc)) false
pcall(xpcall(badfunc,badfunc)) false
pcall(xpcall(wrappedbad)) false string
xpcall(wrappedbad,errfunc) true

View File

@@ -0,0 +1,99 @@
running is not nil
co.status suspended
co-body 1 10
foo 2
main true 4
co.status suspended
co-body r
main true 11 -9
co.status suspended
co-body x y
running is not nil
co.status.inside running
co.status.inside running
co.status.inside2 normal
main true 10 end
co.status dead
main false cannot resume dead coroutine
co.status dead
running is not nil
co.status suspended
co-body 1 10
foo 2
main true 4
co.status suspended
co-body nil nil
main true 11 -9
co.status suspended
co-body x y
main true 10 end
co.status dead
main false cannot resume dead coroutine
co.status dead
co-body 1 10
foo 2
g 4
co-body r
g 11 -9
co-body x y
g 10 end
g cannot resume dead coroutine
(main) sending args 111 222 333
(echocr) first args 111 222 333
(main) resume returns true 111 222 333
(main) sending args
(echoch) yield returns
(main) resume returns true
(main) sending args 111
(echoch) yield returns 111
(main) resume returns true 111
(main) sending args 111 222 333
(echoch) yield returns 111 222 333
(main) resume returns true 111 222 333
main-b suspended
main-c suspended
b-resumed main-arg-for-b true
b-b running
b-c suspended
b-resume-b false cannot resume non-suspended coroutine
c-resumed b-arg-for-c true
c-b normal
c-c running
c-resume-b false cannot resume non-suspended coroutine
c-resume-c false cannot resume non-suspended coroutine
b-resume-c true c-rslt
main-resume-b true b-rslt
c-resumed main-arg-for-c true
c-b suspended
c-c running
b-resumed b-arg-for-b true
b-b running
b-c normal
b-resume-b false cannot resume non-suspended coroutine
b-resume-c false cannot resume non-suspended coroutine
c-resume-b true b-rslt
c-resume-c false cannot resume non-suspended coroutine
main-resume-c true c-rslt
main-b suspended
main-c suspended
b-resumed main-arg-for-b true
b-b running
b-c suspended
b-resume-b false cannot resume non-suspended coroutine
c-resumed b-arg-for-c true
c-b normal
c-c running
c-resume-b false cannot resume non-suspended coroutine
c-resume-c false cannot resume non-suspended coroutine
b-resume-c true c-rslt
main-resume-b true b-rslt
main-resume-c true
main-b suspended
main-c dead
b-resumed main-arg-for-b true
b-b running
b-c dead
b-resume-b false cannot resume non-suspended coroutine
b-resume-c false cannot resume dead coroutine
main-resume-b true b-rslt
main-resume-c false cannot resume dead coroutine

View File

@@ -61,18 +61,18 @@ a.a=bbb a.b=nil b.a=nil b.b=nil
a.a=bbb a.b=ccc b.a=nil b.b=nil
boolean table nil table
boolean nil nil nil
boolean boolean nil nil
boolean table nil nil
a.a=bbb a.b=nil b.a=nil b.b=nil
boolean nil nil nil
get=true,true,nil
set=true,false,nil
set=true,true,nil
get=true,true,nil
get=true,true,nil
set=true,false,nil
set=true,true,nil
get=true,true,nil
true nil
true true
true true
true 1
true 1
----- debug.getinfo
6
---
@@ -83,7 +83,7 @@ debug.getinfo(1)
currentline: 144
linedefined: 141
lastlinedefined: 155
nups: 4
nups: 5
func: function
debug.getinfo(1,"")
debug.getinfo(1,"l")
@@ -98,7 +98,7 @@ debug.getinfo(2)
currentline: 157
linedefined: 135
lastlinedefined: 159
nups: 5
nups: 6
func: function
debug.getinfo(2,"l")
currentline: 157
@@ -162,7 +162,7 @@ true
currentline: -1
linedefined: 141
lastlinedefined: 155
nups: 4
nups: 5
func: function
debug.getinfo(test)
true
@@ -172,18 +172,22 @@ true
currentline: -1
linedefined: 135
lastlinedefined: 159
nups: 5
nups: 6
func: function
----- debug.sethook, debug.gethook
... in hook call nil
info[2]=debuglib.lua,174
info[2]=debuglib.lua,177
... in hook call nil
info[2]=debuglib.lua,175
info[2]=debuglib.lua,176
... in hook call nil
info[2]=[C],-1
... in hook call nil
info[2]=[C],-1
hook = c -> result=true,nil,nil,nil,false,false,nil
... in hook return nil
info[2]=[C],-1
... in hook return nil
info[2]=[C],-1
hook = r -> result=true,nil,nil,nil,false,false,nil
... in hook line 192
info[2]=debuglib.lua,192
@@ -196,19 +200,23 @@ hook = r -> result=true,nil,nil,nil,false,false,nil
... in hook line 195
info[2]=debuglib.lua,195
hook = l -> result=true,nil,nil,nil,false,false,nil
... in hook return nil
info[2]=[C],-1
... in hook line 192
info[2]=debuglib.lua,192
... in hook call nil
info[2]=debuglib.lua,174
info[2]=debuglib.lua,177
... in hook line 177
info[2]=debuglib.lua,177
... in hook line 178
info[2]=debuglib.lua,178
... in hook call nil
info[2]=debuglib.lua,175
info[2]=debuglib.lua,176
... in hook line 176
info[2]=debuglib.lua,176
... in hook call nil
info[2]=[C],-1
... in hook return nil
info[2]=[C],-1
... in hook line 195
info[2]=debuglib.lua,195
@@ -229,7 +237,7 @@ stack traceback:
debuglib.lua:238: in function <debuglib.lua:214>
[C]: in function 'pcall'
debuglib.lua:240: in main chunk
[C]: at 0x55eaaf4e2f20
[C]: in ?
----- debug.upvalueid
debug.getupvalue(a1,1) x 100
debug.getupvalue(a1,2) y 200

View File

@@ -0,0 +1,97 @@
a(error) false nil
a(error,"msg") false string
a(error,"msg",0) false string
a(error,"msg",1) false string
a(error,"msg",2) false string
a(error,"msg",3) false string
a(error,"msg",4) false string
a(error,"msg",5) false string
a(error,"msg",6) false string
a(nil()) false string
a(t()) false string
a(s()) false string
a(true()) false string
a(nil+1) false string
a(a+1) false string
a(s+1) false string
a(true+1) false string
a(nil.x) false string
a(a.x) false string
a(s.x) true nil
a(true.x) false string
a(nil.x=5) false string
a(a.x=5) false string
a(s.x=5) false string
a(true.x=5) false string
a(#nil) false string
a(#t) true 0
a(#s) true 11
a(#a) false string
a(#true) false string
a(nil>1) false string
a(a>1) false string
a(s>1) false string
a(true>1) false string
a(-nil) false string
a(-a) false string
a(-s) false string
a(-true) false string
-------- string concatenation
"a".."b" true
"a"..nil false
nil.."b" false
"a"..{} false
{}.."b" false
"a"..2 true
2.."b" true
"a"..print false
print.."b" false
"a"..true false
true.."b" false
nil..true false
"a"..3.5 true
3.5.."b" true
-------- table concatenation
"a".."b" true
"a"..nil false
nil.."b" false
"a"..{} false
{}.."b" false
"a"..2 true
2.."b" true
"a"..print false
print.."b" false
"a"..true false
true.."b" false
nil..true false
"a"..3.5 true
3.5.."b" true
-------- pairs tests
a(pairs(nil)) false string
a(pairs(a)) false string
a(pairs(s)) false string
a(pairs(t)) true func.1
a(pairs(true)) false string
-------- setmetatable tests
a(setmetatable(nil)) false string
a(setmetatable(a)) false string
a(setmetatable(s)) false string
a(setmetatable(true)) false string
a(setmetatable(t)) true tbl.2
a(getmetatable(t)) true tbl.3
a(setmetatable(t*)) true tbl.2
a(getmetatable(t)) true tbl.4
a(setmetatable(t)) false string
a(getmetatable(t)) true tbl.4
a(setmetatable(t)) true tbl.5
a(getmetatable(t)) true tbl.6
a(setmetatable(t*)) true tbl.5
a(getmetatable(t)) true some string
a(setmetatable(t)) false string
a(getmetatable(t)) true some string
a(setmetatable(t,nil)) false string
a(setmetatable(t)) false string
a(setmetatable({},"abc")) false string
error("msg","arg") false string
loadfile("bogus.txt") true nil
dofile("bogus.txt") false string

View File

@@ -0,0 +1,68 @@
f0:
f0:
f0:
f0:
f0:
f1: nil
f1: a1/1
f1: a1/2
f1: a1/3
f1: a1/4
f2: nil nil
f2: a1/1 nil
f2: a1/2 a2/2
f2: a1/3 a2/3
f2: a1/4 a2/4
f3: nil nil nil
f3: a1/1 nil nil
f3: a1/2 a2/2 nil
f3: a1/3 a2/3 a3/3
f3: a1/4 a2/4 a3/4
f4: nil nil nil nil
f4: a1/1 nil nil nil
f4: a1/2 a2/2 nil nil
f4: a1/3 a2/3 a3/3 nil
f4: a1/4 a2/4 a3/4 a4/4
z0: nil
z2: c2.3/4
z4: c4.1/4
g0: nil nil nil nil (eol)
g2: b2.3/4 b2.4/4 nil nil (eol)
g4: b4.1/4 b4.2/4 b4.3/4 b4.4/4 (eol)
11 12 13
23 22 21
32 45 58
a nil
...
...,a nil nil
a,... nil
a q
...
...,a nil q
a,... q
a q
... r
...,a r q
a,... q r
a q
... r s
...,a r q
a,... q r s
third abc nil | nil nil nil
third def nil | nil nil nil
third def nil | nil nil nil
third abc p | p nil nil
third def nil | p nil nil
third def nil | p nil nil
third abc p | p q nil
third def q | p q nil
third def q | p q nil
third abc p | p q r
third def q | p q r
third def q | p q r
third abc p | p q r
third def q | p q r
third def q | p q r
third abc nil | nil nil nil
third def nil | nil nil nil
third def nil | nil nil nil

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,842 @@
---------- miscellaneous tests ----------
math.sin( 0.0 ) true <zero>
math.cos( math.pi ) true -1
math.sqrt( 9.0 ) true 3
math.modf( 5.25 ) true 5 0.25
math.frexp(0.00625) true 0.8 -7
-5 ^ 2 true -25
-5 / 2 true -2.5
-5 % 2 true 1
---------- constants ----------
math.huge true <pos-inf>
math.pi true 3.1415
---------- unary operator - ----------
--2.5 true
--2 true
-0 true <zero>
-2 true -2
-2.5 true -2.5
-'-2.5' true 2.5
-'-2' true 2
-'0' true <zero>
-'2' true -2
-'2.5' true -2.5
---------- unary operator not ----------
not -2.5 true false
not -2 true false
not 0 true false
not 2 true false
not 2.5 true false
not '-2.5' true false
not '-2' true false
not '0' true false
not '2' true false
not '2.5' true false
---------- binary operator + ----------
2+0 true 2
-2.5+0 true -2.5
2+1 true 3
5+2 true 7
-5+2 true -3
16+2 true 18
-16+-2 true -18
0.5+0 true 0.5
0.5+1 true 1.5
0.5+2 true 2.5
0.5+-1 true -0.5
0.5+2 true 2.5
2.25+0 true 2.25
2.25+2 true 4.25
-2+0 true -2
3+3 true 6
'2'+'0' true 2
'2.5'+'3' true 5.5
'-2'+'1.5' true -0.5
'-2.5'+'-1.5' true -4
'3.0'+'3.0' true 6
2.75+2.75 true 5.5
'2.75'+'2.75' true 5.5
3+'3' true 6
'3'+3 true 6
2.75+'2.75' true 5.5
'2.75'+2.75 true 5.5
-3+'-4' true -7
'-3'+4 true 1
-3+'4' true 1
'-3'+-4 true -7
-4.75+'2.75' true -2
'-2.75'+1.75 true -1
4.75+'-2.75' true 2
'2.75'+-1.75 true 1
---------- binary operator - ----------
2-0 true 2
-2.5-0 true -2.5
2-1 true 1
5-2 true 3
-5-2 true -7
16-2 true 14
-16--2 true -14
0.5-0 true 0.5
0.5-1 true -0.5
0.5-2 true -1.5
0.5--1 true 1.5
0.5-2 true -1.5
2.25-0 true 2.25
2.25-2 true 0.25
-2-0 true -2
3-3 true <zero>
'2'-'0' true 2
'2.5'-'3' true -0.5
'-2'-'1.5' true -3.5
'-2.5'-'-1.5' true -1
'3.0'-'3.0' true <zero>
2.75-2.75 true <zero>
'2.75'-'2.75' true <zero>
3-'3' true <zero>
'3'-3 true <zero>
2.75-'2.75' true <zero>
'2.75'-2.75 true <zero>
-3-'-4' true 1
'-3'-4 true -7
-3-'4' true -7
'-3'--4 true 1
-4.75-'2.75' true -7.5
'-2.75'-1.75 true -4.5
4.75-'-2.75' true 7.5
'2.75'--1.75 true 4.5
---------- binary operator * ----------
2*0 true <zero>
-2.5*0 true <zero>
2*1 true 2
5*2 true 10
-5*2 true -10
16*2 true 32
-16*-2 true 32
0.5*0 true <zero>
0.5*1 true 0.5
0.5*2 true 1
0.5*-1 true -0.5
0.5*2 true 1
2.25*0 true <zero>
2.25*2 true 4.5
-2*0 true <zero>
3*3 true 9
'2'*'0' true <zero>
'2.5'*'3' true 7.5
'-2'*'1.5' true -3
'-2.5'*'-1.5' true 3.75
'3.0'*'3.0' true 9
2.75*2.75 true 7.5625
'2.75'*'2.75' true 7.5625
3*'3' true 9
'3'*3 true 9
2.75*'2.75' true 7.5625
'2.75'*2.75 true 7.5625
-3*'-4' true 12
'-3'*4 true -12
-3*'4' true -12
'-3'*-4 true 12
-4.75*'2.75' true -13.06
'-2.75'*1.75 true -4.812
4.75*'-2.75' true -13.06
'2.75'*-1.75 true -4.812
---------- binary operator ^ ----------
2^0 true 1
-2.5^0 true 1
2^1 true 2
5^2 true 25
-5^2 true 25
16^2 true 256
-16^-2 true 0.0039
0.5^0 true 1
0.5^1 true 0.5
0.5^2 true 0.25
0.5^-1 true 2
0.5^2 true 0.25
2.25^0 true 1
2.25^2 true 5.0625
-2^0 true 1
3^3 true 27
'2'^'0' true 1
'2.5'^'3' true 15.625
'-2'^'1.5' true -nan
'-2.5'^'-1.5' true -nan
'3.0'^'3.0' true 27
2.75^2.75 true 16.149
'2.75'^'2.75' true 16.149
3^'3' true 27
'3'^3 true 27
2.75^'2.75' true 16.149
'2.75'^2.75 true 16.149
-3^'-4' true 0.0123
'-3'^4 true 81
-3^'4' true 81
'-3'^-4 true 0.0123
-4.75^'2.75' true -nan
'-2.75'^1.75 true -nan
4.75^'-2.75' true 0.0137
'2.75'^-1.75 true 0.1702
---------- binary operator / ----------
2/0 true <pos-inf>
-2.5/0 true <neg-inf>
2/1 true 2
5/2 true 2.5
-5/2 true -2.5
16/2 true 8
-16/-2 true 8
0.5/0 true <pos-inf>
0.5/1 true 0.5
0.5/2 true 0.25
0.5/-1 true -0.5
0.5/2 true 0.25
2.25/0 true <pos-inf>
2.25/2 true 1.125
-2/0 true <neg-inf>
3/3 true 1
'2'/'0' true <pos-inf>
'2.5'/'3' true 0.8333
'-2'/'1.5' true -1.333
'-2.5'/'-1.5' true 1.6666
'3.0'/'3.0' true 1
2.75/2.75 true 1
'2.75'/'2.75' true 1
3/'3' true 1
'3'/3 true 1
2.75/'2.75' true 1
'2.75'/2.75 true 1
-3/'-4' true 0.75
'-3'/4 true -0.75
-3/'4' true -0.75
'-3'/-4 true 0.75
-4.75/'2.75' true -1.727
'-2.75'/1.75 true -1.571
4.75/'-2.75' true -1.727
'2.75'/-1.75 true -1.571
---------- binary operator % ----------
2%0 true -nan
-2.5%0 true -nan
2%1 true <zero>
5%2 true 1
-5%2 true 1
16%2 true <zero>
-16%-2 true <zero>
0.5%0 true -nan
0.5%1 true 0.5
0.5%2 true 0.5
0.5%-1 true -0.5
0.5%2 true 0.5
2.25%0 true -nan
2.25%2 true 0.25
-2%0 true -nan
3%3 true <zero>
'2'%'0' true -nan
'2.5'%'3' true 2.5
'-2'%'1.5' true 1
'-2.5'%'-1.5' true -1
'3.0'%'3.0' true <zero>
2.75%2.75 true <zero>
'2.75'%'2.75' true <zero>
3%'3' true <zero>
'3'%3 true <zero>
2.75%'2.75' true <zero>
'2.75'%2.75 true <zero>
-3%'-4' true -3
'-3'%4 true 1
-3%'4' true 1
'-3'%-4 true -3
-4.75%'2.75' true 0.75
'-2.75'%1.75 true 0.75
4.75%'-2.75' true -0.75
'2.75'%-1.75 true -0.75
---------- binary operator == ----------
2==0 true false
-2.5==0 true false
2==1 true false
5==2 true false
-5==2 true false
16==2 true false
-16==-2 true false
0.5==0 true false
0.5==1 true false
0.5==2 true false
0.5==-1 true false
0.5==2 true false
2.25==0 true false
2.25==2 true false
-2==0 true false
3==3 true true
'2'=='0' true false
'2.5'=='3' true false
'-2'=='1.5' true false
'-2.5'=='-1.5' true false
'3.0'=='3.0' true true
2.75==2.75 true true
'2.75'=='2.75' true true
---------- binary operator ~= ----------
2~=0 true true
-2.5~=0 true true
2~=1 true true
5~=2 true true
-5~=2 true true
16~=2 true true
-16~=-2 true true
0.5~=0 true true
0.5~=1 true true
0.5~=2 true true
0.5~=-1 true true
0.5~=2 true true
2.25~=0 true true
2.25~=2 true true
-2~=0 true true
3~=3 true false
'2'~='0' true true
'2.5'~='3' true true
'-2'~='1.5' true true
'-2.5'~='-1.5' true true
'3.0'~='3.0' true false
2.75~=2.75 true false
'2.75'~='2.75' true false
---------- binary operator > ----------
2>0 true true
-2.5>0 true false
2>1 true true
5>2 true true
-5>2 true false
16>2 true true
-16>-2 true false
0.5>0 true true
0.5>1 true false
0.5>2 true false
0.5>-1 true true
0.5>2 true false
2.25>0 true true
2.25>2 true true
-2>0 true false
3>3 true false
'2'>'0' true true
'2.5'>'3' true false
'-2'>'1.5' true false
'-2.5'>'-1.5' true true
'3.0'>'3.0' true false
2.75>2.75 true false
'2.75'>'2.75' true false
---------- binary operator < ----------
2<0 true false
-2.5<0 true true
2<1 true false
5<2 true false
-5<2 true true
16<2 true false
-16<-2 true true
0.5<0 true false
0.5<1 true true
0.5<2 true true
0.5<-1 true false
0.5<2 true true
2.25<0 true false
2.25<2 true false
-2<0 true true
3<3 true false
'2'<'0' true false
'2.5'<'3' true true
'-2'<'1.5' true true
'-2.5'<'-1.5' true false
'3.0'<'3.0' true false
2.75<2.75 true false
'2.75'<'2.75' true false
---------- binary operator >= ----------
2>=0 true true
-2.5>=0 true false
2>=1 true true
5>=2 true true
-5>=2 true false
16>=2 true true
-16>=-2 true false
0.5>=0 true true
0.5>=1 true false
0.5>=2 true false
0.5>=-1 true true
0.5>=2 true false
2.25>=0 true true
2.25>=2 true true
-2>=0 true false
3>=3 true true
'2'>='0' true true
'2.5'>='3' true false
'-2'>='1.5' true false
'-2.5'>='-1.5' true true
'3.0'>='3.0' true true
2.75>=2.75 true true
'2.75'>='2.75' true true
---------- binary operator <= ----------
2<=0 true false
-2.5<=0 true true
2<=1 true false
5<=2 true false
-5<=2 true true
16<=2 true false
-16<=-2 true true
0.5<=0 true false
0.5<=1 true true
0.5<=2 true true
0.5<=-1 true false
0.5<=2 true true
2.25<=0 true false
2.25<=2 true false
-2<=0 true true
3<=3 true true
'2'<='0' true false
'2.5'<='3' true true
'-2'<='1.5' true true
'-2.5'<='-1.5' true false
'3.0'<='3.0' true true
2.75<=2.75 true true
'2.75'<='2.75' true true
---------- math.abs ----------
math.abs(-2.5) true 2.5
math.abs(-2) true 2
math.abs(0) true <zero>
math.abs(2) true 2
math.abs(2.5) true 2.5
math.abs('-2.5') true 2.5
math.abs('-2') true 2
math.abs('0') true <zero>
math.abs('2') true 2
math.abs('2.5') true 2.5
---------- math.ceil ----------
math.ceil(-2.5) true -2
math.ceil(-2) true -2
math.ceil(0) true <zero>
math.ceil(2) true 2
math.ceil(2.5) true 3
math.ceil('-2.5') true -2
math.ceil('-2') true -2
math.ceil('0') true <zero>
math.ceil('2') true 2
math.ceil('2.5') true 3
---------- math.cos ----------
math.cos(-2.5) true -0.801
math.cos(-2) true -0.416
math.cos(0) true 1
math.cos(2) true -0.416
math.cos(2.5) true -0.801
math.cos('-2.5') true -0.801
math.cos('-2') true -0.416
math.cos('0') true 1
math.cos('2') true -0.416
math.cos('2.5') true -0.801
---------- math.deg ----------
math.deg(-2.5) true -143.2
math.deg(-2) true -114.5
math.deg(0) true <zero>
math.deg(2) true 114.59
math.deg(2.5) true 143.23
math.deg('-2.5') true -143.2
math.deg('-2') true -114.5
math.deg('0') true <zero>
math.deg('2') true 114.59
math.deg('2.5') true 143.23
---------- math.exp ----------
math.exp(-2.5) true 0.0820
math.exp(-2) true 0.1353
math.exp(0) true 1
math.exp(2) true 7.3890
math.exp(2.5) true 12.182
math.exp('-2.5') true 0.0820
math.exp('-2') true 0.1353
math.exp('0') true 1
math.exp('2') true 7.3890
math.exp('2.5') true 12.182
---------- math.floor ----------
math.floor(-2.5) true -3
math.floor(-2) true -2
math.floor(0) true <zero>
math.floor(2) true 2
math.floor(2.5) true 2
math.floor('-2.5') true -3
math.floor('-2') true -2
math.floor('0') true <zero>
math.floor('2') true 2
math.floor('2.5') true 2
---------- math.frexp ----------
math.frexp(-2.5) true -0.625 2
math.frexp(-2) true -0.5 2
math.frexp(0) true <zero> <zero>
math.frexp(2) true 0.5 2
math.frexp(2.5) true 0.625 2
math.frexp('-2.5') true -0.625 2
math.frexp('-2') true -0.5 2
math.frexp('0') true <zero> <zero>
math.frexp('2') true 0.5 2
math.frexp('2.5') true 0.625 2
---------- math.modf ----------
math.modf(-2.5) true -2 -0.5
math.modf(-2) true -2 <zero>
math.modf(0) true <zero> <zero>
math.modf(2) true 2 <zero>
math.modf(2.5) true 2 0.5
math.modf('-2.5') true -2 -0.5
math.modf('-2') true -2 <zero>
math.modf('0') true <zero> <zero>
math.modf('2') true 2 <zero>
math.modf('2.5') true 2 0.5
---------- math.rad ----------
math.rad(-2.5) true -0.043
math.rad(-2) true -0.034
math.rad(0) true <zero>
math.rad(2) true 0.0349
math.rad(2.5) true 0.0436
math.rad('-2.5') true -0.043
math.rad('-2') true -0.034
math.rad('0') true <zero>
math.rad('2') true 0.0349
math.rad('2.5') true 0.0436
---------- math.sin ----------
math.sin(-2.5) true -0.598
math.sin(-2) true -0.909
math.sin(0) true <zero>
math.sin(2) true 0.9092
math.sin(2.5) true 0.5984
math.sin('-2.5') true -0.598
math.sin('-2') true -0.909
math.sin('0') true <zero>
math.sin('2') true 0.9092
math.sin('2.5') true 0.5984
---------- math.sqrt ----------
math.sqrt(-2.5) true -nan
math.sqrt(-2) true -nan
math.sqrt(0) true <zero>
math.sqrt(2) true 1.4142
math.sqrt(2.5) true 1.5811
math.sqrt('-2.5') true -nan
math.sqrt('-2') true -nan
math.sqrt('0') true <zero>
math.sqrt('2') true 1.4142
math.sqrt('2.5') true 1.5811
---------- math.tan ----------
math.tan(-2.5) true 0.7470
math.tan(-2) true 2.1850
math.tan(0) true <zero>
math.tan(2) true -2.185
math.tan(2.5) true -0.747
math.tan('-2.5') true 0.7470
math.tan('-2') true 2.1850
math.tan('0') true <zero>
math.tan('2') true -2.185
math.tan('2.5') true -0.747
---------- math.acos (jse only) ----------
math.acos(-2.5) true <nan>
math.acos(-2) true <nan>
math.acos(0) true 1.5707
math.acos(2) true <nan>
math.acos(2.5) true <nan>
math.acos('-2.5') true <nan>
math.acos('-2') true <nan>
math.acos('0') true 1.5707
math.acos('2') true <nan>
math.acos('2.5') true <nan>
---------- math.asin (jse only) ----------
math.asin(-2.5) true <nan>
math.asin(-2) true <nan>
math.asin(0) true <zero>
math.asin(2) true <nan>
math.asin(2.5) true <nan>
math.asin('-2.5') true <nan>
math.asin('-2') true <nan>
math.asin('0') true <zero>
math.asin('2') true <nan>
math.asin('2.5') true <nan>
---------- math.atan (jse only) ----------
math.atan(-2.5) true -1.190
math.atan(-2) true -1.107
math.atan(0) true <zero>
math.atan(2) true 1.1071
math.atan(2.5) true 1.1902
math.atan('-2.5') true -1.190
math.atan('-2') true -1.107
math.atan('0') true <zero>
math.atan('2') true 1.1071
math.atan('2.5') true 1.1902
---------- math.cosh (jse only) ----------
math.cosh(-2.5) true 6.1322
math.cosh(-2) true 3.7621
math.cosh(0) true 1
math.cosh(2) true 3.7621
math.cosh(2.5) true 6.1322
math.cosh('-2.5') true 6.1322
math.cosh('-2') true 3.7621
math.cosh('0') true 1
math.cosh('2') true 3.7621
math.cosh('2.5') true 6.1322
---------- math.log (jse only) ----------
math.log(-2.5) true -nan
math.log(-2) true -nan
math.log(0) true <neg-inf>
math.log(2) true 0.6931
math.log(2.5) true 0.9162
math.log('-2.5') true -nan
math.log('-2') true -nan
math.log('0') true <neg-inf>
math.log('2') true 0.6931
math.log('2.5') true 0.9162
---------- math.sinh (jse only) ----------
math.sinh(-2.5) true -6.050
math.sinh(-2) true -3.626
math.sinh(0) true <zero>
math.sinh(2) true 3.6268
math.sinh(2.5) true 6.0502
math.sinh('-2.5') true -6.050
math.sinh('-2') true -3.626
math.sinh('0') true <zero>
math.sinh('2') true 3.6268
math.sinh('2.5') true 6.0502
---------- math.tanh (jse only) ----------
math.tanh(-2.5) true -0.986
math.tanh(-2) true -0.964
math.tanh(0) true <zero>
math.tanh(2) true 0.9640
math.tanh(2.5) true 0.9866
math.tanh('-2.5') true -0.986
math.tanh('-2') true -0.964
math.tanh('0') true <zero>
math.tanh('2') true 0.9640
math.tanh('2.5') true 0.9866
---------- math.fmod ----------
math.fmod(2,0) true -nan
math.fmod(-2.5,0) true -nan
math.fmod(2,1) true <zero>
math.fmod(5,2) true 1
math.fmod(-5,2) true -1
math.fmod(16,2) true <zero>
math.fmod(-16,-2) true <zero>
math.fmod(0.5,0) true -nan
math.fmod(0.5,1) true 0.5
math.fmod(0.5,2) true 0.5
math.fmod(0.5,-1) true 0.5
math.fmod(0.5,2) true 0.5
math.fmod(2.25,0) true -nan
math.fmod(2.25,2) true 0.25
math.fmod(-2,0) true -nan
math.fmod(3,3) true <zero>
math.fmod('2','0') true -nan
math.fmod('2.5','3') true 2.5
math.fmod('-2','1.5') true -0.5
math.fmod('-2.5','-1.5') true -1
math.fmod('3.0','3.0') true <zero>
math.fmod(2.75,2.75) true <zero>
math.fmod('2.75','2.75') true <zero>
math.fmod(3,'3') true <zero>
math.fmod('3',3) true <zero>
math.fmod(2.75,'2.75') true <zero>
math.fmod('2.75',2.75) true <zero>
math.fmod(-3,'-4') true -3
math.fmod('-3',4) true -3
math.fmod(-3,'4') true -3
math.fmod('-3',-4) true -3
math.fmod(-4.75,'2.75') true -2
math.fmod('-2.75',1.75) true -1
math.fmod(4.75,'-2.75') true 2
math.fmod('2.75',-1.75) true 1
---------- math.ldexp ----------
math.ldexp(2,0) true 2
math.ldexp(-2.5,0) true -2.5
math.ldexp(2,1) true 4
math.ldexp(5,2) true 20
math.ldexp(-5,2) true -20
math.ldexp(16,2) true 64
math.ldexp(-16,-2) true -4
math.ldexp(0.5,0) true 0.5
math.ldexp(0.5,1) true 1
math.ldexp(0.5,2) true 2
math.ldexp(0.5,-1) true 0.25
math.ldexp(0.5,2) true 2
math.ldexp(2.25,0) true 2.25
math.ldexp(2.25,2) true 9
math.ldexp(-2,0) true -2
math.ldexp(3,3) true 24
math.ldexp('2','0') true 2
math.ldexp('2.5','3') true 20
math.ldexp('-2','1.5') true -4
math.ldexp('-2.5','-1.5') true -1.25
math.ldexp('3.0','3.0') true 24
math.ldexp(2.75,2.75) true 11
math.ldexp('2.75','2.75') true 11
math.ldexp(3,'3') true 24
math.ldexp('3',3) true 24
math.ldexp(2.75,'2.75') true 11
math.ldexp('2.75',2.75) true 11
math.ldexp(-3,'-4') true -0.187
math.ldexp('-3',4) true -48
math.ldexp(-3,'4') true -48
math.ldexp('-3',-4) true -0.187
math.ldexp(-4.75,'2.75') true -19
math.ldexp('-2.75',1.75) true -5.5
math.ldexp(4.75,'-2.75') true 1.1875
math.ldexp('2.75',-1.75) true 1.375
---------- math.pow ----------
math.pow(2,0) true 1
math.pow(-2.5,0) true 1
math.pow(2,1) true 2
math.pow(5,2) true 25
math.pow(-5,2) true 25
math.pow(16,2) true 256
math.pow(-16,-2) true 0.0039
math.pow(0.5,0) true 1
math.pow(0.5,1) true 0.5
math.pow(0.5,2) true 0.25
math.pow(0.5,-1) true 2
math.pow(0.5,2) true 0.25
math.pow(2.25,0) true 1
math.pow(2.25,2) true 5.0625
math.pow(-2,0) true 1
math.pow(3,3) true 27
math.pow('2','0') true 1
math.pow('2.5','3') true 15.625
math.pow('-2','1.5') true -nan
math.pow('-2.5','-1.5') true -nan
math.pow('3.0','3.0') true 27
math.pow(2.75,2.75) true 16.149
math.pow('2.75','2.75') true 16.149
math.pow(3,'3') true 27
math.pow('3',3) true 27
math.pow(2.75,'2.75') true 16.149
math.pow('2.75',2.75) true 16.149
math.pow(-3,'-4') true 0.0123
math.pow('-3',4) true 81
math.pow(-3,'4') true 81
math.pow('-3',-4) true 0.0123
math.pow(-4.75,'2.75') true -nan
math.pow('-2.75',1.75) true -nan
math.pow(4.75,'-2.75') true 0.0137
math.pow('2.75',-1.75) true 0.1702
---------- math.atan2 (jse only) ----------
math.atan2(2,0) true 1.5707
math.atan2(-2.5,0) true -1.570
math.atan2(2,1) true 1.1071
math.atan2(5,2) true 1.1902
math.atan2(-5,2) true -1.190
math.atan2(16,2) true 1.4464
math.atan2(-16,-2) true -1.695
math.atan2(0.5,0) true 1.5707
math.atan2(0.5,1) true 0.4636
math.atan2(0.5,2) true 0.2449
math.atan2(0.5,-1) true 2.6779
math.atan2(0.5,2) true 0.2449
math.atan2(2.25,0) true 1.5707
math.atan2(2.25,2) true 0.8441
math.atan2(-2,0) true -1.570
math.atan2(3,3) true 0.7853
math.atan2('2','0') true 1.5707
math.atan2('2.5','3') true 0.6947
math.atan2('-2','1.5') true -0.927
math.atan2('-2.5','-1.5') true -2.111
math.atan2('3.0','3.0') true 0.7853
math.atan2(2.75,2.75) true 0.7853
math.atan2('2.75','2.75') true 0.7853
math.atan2(3,'3') true 0.7853
math.atan2('3',3) true 0.7853
math.atan2(2.75,'2.75') true 0.7853
math.atan2('2.75',2.75) true 0.7853
math.atan2(-3,'-4') true -2.498
math.atan2('-3',4) true -0.643
math.atan2(-3,'4') true -0.643
math.atan2('-3',-4) true -2.498
math.atan2(-4.75,'2.75') true -1.046
math.atan2('-2.75',1.75) true -1.004
math.atan2(4.75,'-2.75') true 2.0955
math.atan2('2.75',-1.75) true 2.1375
---------- math.max ----------
math.max(4) true 4
math.max(-4.5) true -4.5
math.max('5.5') true 5.5
math.max('-5') true -5
math.max(4,'8') true 8
math.max(-4.5,'-8') true -4.5
math.max('5.5',2.2) true 5.5
math.max('-5',-2.2) true -2.2
math.max(111,222,333) true 333
math.max(-222,-333,-111) true -111
math.max(444,-111,-222) true 444
---------- math.min ----------
math.min(4) true 4
math.min(-4.5) true -4.5
math.min('5.5') true 5.5
math.min('-5') true -5
math.min(4,'8') true 4
math.min(-4.5,'-8') true -8
math.min('5.5',2.2) true 2.2
math.min('-5',-2.2) true -5
math.min(111,222,333) true 111
math.min(-222,-333,-111) true -333
math.min(444,-111,-222) true -222
----------- Random number tests
math.random() number true
math.random() number true
math.random() number true
math.random() number true
math.random() number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(5,10) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(30) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
math.random(-4,-2) number true
-- comparing new numbers
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
false false
-- resetting seed
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
true
----------- Tests involving -0 and NaN
0 == -0 true
t[-0] == t[0] true
mz, z <zero> <zero>
mz == z true
a[z] == 1 and a[mz] == 1 true

View File

@@ -0,0 +1,649 @@
---- __eq same types
nil nil before true true
nil nil before true false
nil
nil
nil nil after true true
nil nil after true false
nil
nil
boolean boolean before true false
boolean boolean before true true
true
false
boolean boolean after true false
boolean boolean after true true
true
false
number number before true false
number number before true true
123
456
number number after true false
number number after true true
123
456
number number before true false
number number before true true
11
5.5
number number after true false
number number after true true
11
5.5
function function before true false
function function before true true
function.1
function.2
function function after true false
function function after true true
function.1
function.2
thread nil before true false
thread nil before true true
thread.3
nil
thread nil after true false
thread nil after true true
thread.3
nil
string string before true false
string string before true true
abc
def
string string after true false
string string after true true
abc
def
number string before true false
number string before true true
111
111
number string after true false
number string after true true
111
111
---- __eq, tables - should invoke metatag comparison
table table before true false
table table before true true
table.4
table.5
mt.__eq() table.4 table.5
table table after-a true true
mt.__eq() table.4 table.5
table table after-a true false
table.4
table.5
nilmt nil
boolmt nil
number nil
function nil
thread nil
---- __call
number before false attempt to call
111
mt.__call() 111 nil
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
111
boolean before false attempt to call
false
mt.__call() false nil
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
false
function before true nil
function.1
function after true
function after true
function after true
function after true
function after true
function.1
thread before false attempt to call
thread.3
mt.__call() thread.3 nil
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
thread.3
table before false attempt to call
table.4
mt.__call() table.4 nil
table after true __call-result
mt.__call() table.4 a
table after true __call-result
mt.__call() table.4 a
table after true __call-result
mt.__call() table.4 a
table after true __call-result
mt.__call() table.4 a
table after true __call-result
table.4
---- __add, __sub, __mul, __div, __pow, __mod
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
false
mt.__add() false false
boolean boolean after true __add-result
mt.__add() false false
boolean boolean after true __add-result
mt.__sub() false false
boolean boolean after true __sub-result
mt.__sub() false false
boolean boolean after true __sub-result
mt.__mul() false false
boolean boolean after true __mul-result
mt.__mul() false false
boolean boolean after true __mul-result
mt.__pow() false false
boolean boolean after true __pow-result
mt.__pow() false false
boolean boolean after true __pow-result
mt.__mod() false false
boolean boolean after true __mod-result
mt.__mod() false false
boolean boolean after true __mod-result
false
false
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
false
mt.__add() false thread.3
boolean thread after true __add-result
mt.__add() thread.3 false
boolean thread after true __add-result
mt.__sub() false thread.3
boolean thread after true __sub-result
mt.__sub() thread.3 false
boolean thread after true __sub-result
mt.__mul() false thread.3
boolean thread after true __mul-result
mt.__mul() thread.3 false
boolean thread after true __mul-result
mt.__pow() false thread.3
boolean thread after true __pow-result
mt.__pow() thread.3 false
boolean thread after true __pow-result
mt.__mod() false thread.3
boolean thread after true __mod-result
mt.__mod() thread.3 false
boolean thread after true __mod-result
false
thread.3
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
false
mt.__add() false function.1
boolean function after true __add-result
mt.__add() function.1 false
boolean function after true __add-result
mt.__sub() false function.1
boolean function after true __sub-result
mt.__sub() function.1 false
boolean function after true __sub-result
mt.__mul() false function.1
boolean function after true __mul-result
mt.__mul() function.1 false
boolean function after true __mul-result
mt.__pow() false function.1
boolean function after true __pow-result
mt.__pow() function.1 false
boolean function after true __pow-result
mt.__mod() false function.1
boolean function after true __mod-result
mt.__mod() function.1 false
boolean function after true __mod-result
false
function.1
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
false
mt.__add() false abc
boolean string after true __add-result
mt.__add() abc false
boolean string after true __add-result
mt.__sub() false abc
boolean string after true __sub-result
mt.__sub() abc false
boolean string after true __sub-result
mt.__mul() false abc
boolean string after true __mul-result
mt.__mul() abc false
boolean string after true __mul-result
mt.__pow() false abc
boolean string after true __pow-result
mt.__pow() abc false
boolean string after true __pow-result
mt.__mod() false abc
boolean string after true __mod-result
mt.__mod() abc false
boolean string after true __mod-result
false
abc
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
false
mt.__add() false table.4
boolean table after true __add-result
mt.__add() table.4 false
boolean table after true __add-result
mt.__sub() false table.4
boolean table after true __sub-result
mt.__sub() table.4 false
boolean table after true __sub-result
mt.__mul() false table.4
boolean table after true __mul-result
mt.__mul() table.4 false
boolean table after true __mul-result
mt.__pow() false table.4
boolean table after true __pow-result
mt.__pow() table.4 false
boolean table after true __pow-result
mt.__mod() false table.4
boolean table after true __mod-result
mt.__mod() table.4 false
boolean table after true __mod-result
false
table.4
---- __len
boolean before false attempt to get length of
false
mt.__len() false
boolean after true __len-result
false
function before false attempt to get length of
function.1
mt.__len() function.1
function after true __len-result
function.1
thread before false attempt to get length of
thread.3
mt.__len() thread.3
thread after true __len-result
thread.3
number before false attempt to get length of
111
mt.__len() 111
number after true __len-result
111
---- __neg
nil before false attempt to perform arithmetic
false
mt.__unm() false
nil after true __unm-result
false
nil before false attempt to perform arithmetic
function.1
mt.__unm() function.1
nil after true __unm-result
function.1
nil before false attempt to perform arithmetic
thread.3
mt.__unm() thread.3
nil after true __unm-result
thread.3
nil before false attempt to perform arithmetic
abcd
mt.__unm() abcd
nil after true __unm-result
abcd
nil before false attempt to perform arithmetic
table.4
mt.__unm() table.4
nil after true __unm-result
table.4
nil before true -111
111
nil after true -111
111
---- __lt, __le, same types
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
true
true
mt.__lt() true true
boolean boolean after true true
mt.__le() true true
boolean boolean after true true
mt.__lt() true true
boolean boolean after true true
mt.__le() true true
boolean boolean after true true
true
true
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
true
false
mt.__lt() true false
boolean boolean after true true
mt.__le() true false
boolean boolean after true true
mt.__lt() false true
boolean boolean after true true
mt.__le() false true
boolean boolean after true true
true
false
function function before false attempt to compare
function function before false attempt to compare
function function before false attempt to compare
function function before false attempt to compare
function.1
function.6
mt.__lt() function.1 function.6
function function after true true
mt.__le() function.1 function.6
function function after true true
mt.__lt() function.6 function.1
function function after true true
mt.__le() function.6 function.1
function function after true true
function.1
function.6
thread thread before false attempt to compare
thread thread before false attempt to compare
thread thread before false attempt to compare
thread thread before false attempt to compare
thread.3
thread.7
mt.__lt() thread.3 thread.7
thread thread after true true
mt.__le() thread.3 thread.7
thread thread after true true
mt.__lt() thread.7 thread.3
thread thread after true true
mt.__le() thread.7 thread.3
thread thread after true true
thread.3
thread.7
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table.4
table.4
mt.__lt() table.4 table.4
table table after true true
mt.__le() table.4 table.4
table table after true true
mt.__lt() table.4 table.4
table table after true true
mt.__le() table.4 table.4
table table after true true
table.4
table.4
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table.4
table.8
mt.__lt() table.4 table.8
table table after true true
mt.__le() table.4 table.8
table table after true true
mt.__lt() table.8 table.4
table table after true true
mt.__le() table.8 table.4
table table after true true
table.4
table.8
---- __lt, __le, different types
boolean thread before false attempt to compare
boolean thread before false attempt to compare
boolean thread before false attempt to compare
boolean thread before false attempt to compare
false
thread.3
mt.__lt() false thread.3
boolean thread after-a true true
mt.__le() false thread.3
boolean thread after-a true true
mt.__lt() thread.3 false
boolean thread after-a true true
mt.__le() thread.3 false
boolean thread after-a true true
false
thread.3
---- __tostring
mt.__tostring(boolean)
boolean after mt.__tostring(boolean) mt.__tostring(boolean)
false
function.1
function after true mt.__tostring(function)
function.1
thread.3
thread after true mt.__tostring(thread)
thread.3
table.4
table after true mt.__tostring(table)
table.4
mt.__tostring(string)
mt.__tostring(string) mt.__tostring(string) true mt.__tostring(string)
abc
---- __index, __newindex
boolean before false attempt to index
boolean before false attempt to index
boolean before false index
boolean before false index
boolean before false attempt to index
false
mt.__index() false foo
boolean after true __index-result
mt.__index() false 123
boolean after true __index-result
mt.__newindex() false foo bar
boolean after true
mt.__newindex() false 123 bar
boolean after true
mt.__index() false foo
boolean after false attempt to call
false
number before false attempt to index
number before false attempt to index
number before false index
number before false index
number before false attempt to index
111
mt.__index() 111 foo
number after true __index-result
mt.__index() 111 123
number after true __index-result
mt.__newindex() 111 foo bar
number after true
mt.__newindex() 111 123 bar
number after true
mt.__index() 111 foo
number after false attempt to call
111
function before false attempt to index
function before false attempt to index
function before false index
function before false index
function before false attempt to index
function.1
mt.__index() function.1 foo
function after true __index-result
mt.__index() function.1 123
function after true __index-result
mt.__newindex() function.1 foo bar
function after true
mt.__newindex() function.1 123 bar
function after true
mt.__index() function.1 foo
function after false attempt to call
function.1
thread before false attempt to index
thread before false attempt to index
thread before false index
thread before false index
thread before false attempt to index
thread.3
mt.__index() thread.3 foo
thread after true __index-result
mt.__index() thread.3 123
thread after true __index-result
mt.__newindex() thread.3 foo bar
thread after true
mt.__newindex() thread.3 123 bar
thread after true
mt.__index() thread.3 foo
thread after false attempt to call
thread.3
---- __concat
table function before false attempt to concatenate
table function before false attempt to concatenate
table string number before false attempt to concatenate
string table number before false attempt to concatenate
string number table before false attempt to concatenate
table.4
mt.__concat(table,function) table.4 function.1
table function after true table.9
mt.__concat(function,table) function.1 table.4
table function after true table.9
mt.__concat(table,string) table.4 sss777
table string number before true table.9
mt.__concat(table,number) table.4 777
string table number before false attempt to concatenate
mt.__concat(number,table) 777 table.4
string number table before false attempt to concatenate
table.4
function.1
function table before false attempt to concatenate
function table before false attempt to concatenate
function string number before false attempt to concatenate
string function number before false attempt to concatenate
string number function before false attempt to concatenate
function.1
mt.__concat(function,table) function.1 table.4
function table after true table.9
mt.__concat(table,function) table.4 function.1
function table after true table.9
mt.__concat(function,string) function.1 sss777
function string number before true table.9
mt.__concat(function,number) function.1 777
string function number before false attempt to concatenate
mt.__concat(number,function) 777 function.1
string number function before false attempt to concatenate
function.1
table.4
number nil before false attempt to concatenate
number nil before false attempt to concatenate
number string number before true 123sss777
string number number before true sss123777
string number number before true sss777123
123
mt.__concat(number,nil) 123 nil
number nil after true table.9
mt.__concat(nil,number) nil 123
number nil after true table.9
number string number before true 123sss777
string number number before true sss123777
string number number before true sss777123
123
nil
nil number before false attempt to concatenate
nil number before false attempt to concatenate
nil string number before false attempt to concatenate
string nil number before false attempt to concatenate
string number nil before false attempt to concatenate
nil
mt.__concat(nil,number) nil 123
nil number after true table.9
mt.__concat(number,nil) 123 nil
nil number after true table.9
mt.__concat(nil,string) nil sss777
nil string number before true table.9
mt.__concat(nil,number) nil 777
string nil number before false attempt to concatenate
mt.__concat(number,nil) 777 nil
string number nil before false attempt to concatenate
nil
123
---- __metatable
boolean before true nil nil
false
boolean after true table.10 table.11
false
function before true nil nil
function.1
function after true table.10 table.11
function.1
thread before true nil nil
thread.3
thread after true table.10 table.11
thread.3
table before true nil nil
table.4
table after true table.10 table.11
table.4
string before true table.12 table.12
abc
string after true table.10 table.11
abc

View File

@@ -0,0 +1,64 @@
os table
os.clock() true number nil
os.date() true string nil
os.difftime(123000, 21500) true number nil
os.getenv() false string nil
os.getenv("bogus.key") true nil nil
os.tmpname() true string
os.tmpname() true string
io.open true userdata
write false string nil
close false string nil
os.rename(p,q) true boolean nil
os.remove(q) true boolean nil
os.remove(q) true nil string
os.setlocale("C") true string nil
os.exit function
os.date('%a', 1281364496) true string nil
os.date('%A', 1281364496) true string nil
os.date('%b', 1281364496) true string nil
os.date('%B', 1281364496) true string nil
os.date('%c', 1281364496) true string nil
os.date('%C', 1281364496) true string nil
os.date('%d', 1281364496) true string nil
os.date('%D', 1281364496) true string nil
os.date('%e', 1281364496) true string nil
os.date('%F', 1281364496) true string nil
os.date('%g', 1281364496) true string nil
os.date('%G', 1281364496) true string nil
os.date('%h', 1281364496) true string nil
os.date('%H', 1281364496) true string nil
os.date('%I', 1281364496) true string nil
os.date('%j', 1281364496) true string nil
os.date('%m', 1281364496) true string nil
os.date('%M', 1281364496) true string nil
os.date('%n', 1281364496) true string nil
os.date('%p', 1281364496) true string nil
os.date('%r', 1281364496) true string nil
os.date('%R', 1281364496) true string nil
os.date('%S', 1281364496) true string nil
os.date('%t', 1281364496) true string nil
os.date('%T', 1281364496) true string nil
os.date('%u', 1281364496) true string nil
os.date('%U', 1281364496) true string nil
os.date('%V', 1281364496) true string nil
os.date('%w', 1281364496) true string nil
os.date('%W', 1281364496) true string nil
os.date('%x', 1281364496) true string nil
os.date('%X', 1281364496) true string nil
os.date('%y', 1281364496) true string nil
os.date('%Y', 1281364496) true string nil
os.date('%z', 1281364496) true string nil
os.date('%Z', 1281364496) true string nil
k string year v number 2010
k string month v number 8
k string day v number 9
k string hour v number 16
k string min v number 34
k string sec v number 56
k string wday v number 2
k string yday v number 221
k string isdst v boolean true
type(os.time()) number
os.time({year=1971, month=2, day=25}) 36327600
os.time({year=1971, month=2, day=25, hour=11, min=22, sec=33}) 36325353

View File

@@ -0,0 +1,237 @@
2
-- concat tests
onetwothree
one--two--three
two,three
two
onetwothreefourfive
one--two--three--four--five
two,three,four,five
two
-- insert, len tests
{[1]=one,[2]=two,[3]=three,[a]=aaa,[b]=bbb,[c]=ccc} 3
{[1]=one,[2]=two,[3]=three,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
{[1]=seven,[2]=one,[3]=two,[4]=three,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[a]=aaa,[b]=bbb,[c]=ccc} 6
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[7]=nine,[a]=aaa,[b]=bbb,[c]=ccc} 7
#{} 0
#{"a"} 1
#{"a","b"} 2
#{"a",nil} 1
#{nil,nil} 0
#{nil,"b"} true
#{"a","b","c"} 3
#{"a","b",nil} 2
#{"a",nil,nil} 1
#{nil,nil,nil} 0
#{nil,nil,"c"} true
#{nil,"b","c"} true
#{nil,"b",nil} true
#{"a",nil,"c"} true
-- remove tests
{[10]=ten,[1]=one,[2]=two,[3]=three,[4]=four,[5]=five,[6]=six,[7]=seven,[a]=aaa,[b]=bbb,[c]=ccc} 7
table.remove(t) seven
{[10]=ten,[1]=one,[2]=two,[3]=three,[4]=four,[5]=five,[6]=six,[a]=aaa,[b]=bbb,[c]=ccc} 6
table.remove(t,1) one
{[10]=ten,[1]=two,[2]=three,[3]=four,[4]=five,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
table.remove(t,3) four
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,5) nil
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
-- sort tests
one-two-three
one-three-two
www-vvv-uuu-ttt-sss-zzz-yyy-xxx
sss-ttt-uuu-vvv-www-xxx-yyy-zzz
www-vvv-uuu-ttt-sss-zzz-yyy-xxx
zzz-yyy-xxx-www-vvv-uuu-ttt-sss
----- unpack tests -------
pcall(unpack) false
pcall(unpack,nil) false
pcall(unpack,"abc") false
pcall(unpack,1) false
unpack({"aa"}) aa
unpack({"aa","bb"}) aa bb
unpack({"aa","bb","cc"}) aa bb cc
unpack -
unpack a a
unpack . nil
unpack ab a b
unpack .b nil b
unpack a. a nil
unpack abc a b c
unpack .ab nil a b
unpack a.b a nil b
unpack ab. a b nil
unpack ..b nil nil b
unpack a.. a nil nil
unpack .b. nil b nil
unpack ... nil nil nil
unpack (-)
unpack (a) a
unpack (.) nil
unpack (ab) a b
unpack (.b) nil b
unpack (a.) a nil
unpack (abc) a b c
unpack (.ab) nil a b
unpack (a.b) a nil b
unpack (ab.) a b nil
unpack (..b) nil nil b
unpack (a..) a nil nil
unpack (.b.) nil b nil
unpack (...) nil nil nil
pcall(unpack,t) true aa bb cc dd ee ff
pcall(unpack,t,2) true bb cc dd ee ff
pcall(unpack,t,2,5) true bb cc dd ee
pcall(unpack,t,2,6) true bb cc dd ee ff
pcall(unpack,t,2,7) true bb cc dd ee ff nil
pcall(unpack,t,1) true aa bb cc dd ee ff
pcall(unpack,t,1,5) true aa bb cc dd ee
pcall(unpack,t,1,6) true aa bb cc dd ee ff
pcall(unpack,t,1,7) true aa bb cc dd ee ff nil
pcall(unpack,t,0) true nil aa bb cc dd ee ff
pcall(unpack,t,0,5) true nil aa bb cc dd ee
pcall(unpack,t,0,6) true nil aa bb cc dd ee ff
pcall(unpack,t,0,7) true nil aa bb cc dd ee ff nil
pcall(unpack,t,-1) true nil nil aa bb cc dd ee ff
pcall(unpack,t,-1,5) true nil nil aa bb cc dd ee
pcall(unpack,t,-1,6) true nil nil aa bb cc dd ee ff
pcall(unpack,t,-1,7) true nil nil aa bb cc dd ee ff nil
pcall(unpack,t,2,4) true bb cc dd
pcall(unpack,t,2,5) true bb cc dd ee
pcall(unpack,t,2,6) true bb cc dd ee ff
pcall(unpack,t,2,7) true bb cc dd ee ff nil
pcall(unpack,t,2,8) true bb cc dd ee ff nil nil
pcall(unpack,t,2,2) true
pcall(unpack,t,2,1) true
pcall(unpack,t,2,0) true
pcall(unpack,t,2,-1) true
pcall(unpack,t,0) true zz aa bb cc dd ee ff
pcall(unpack,t,2,0) true
pcall(unpack,t,2,-1) true
pcall(unpack,t,"3") true cc dd ee ff
pcall(unpack,t,"a") false
pcall(unpack,t,function() end) false
----- misc table initializer tests -------
3
4
4
----- basic table operations -------
------ basic table tests on basic table table
t[1]=2 true
t[1] true 2
t[1]=nil true
t[1] true nil
t["a"]="b" true
t["a"],t.a true b b
t.a="c" true
t["a"],t.a true c c
t.a=nil true
t["a"],t.a true nil nil
t[nil]="d" false string
t[nil] true nil
t[nil]=nil false string
t[nil] true nil
------ basic table tests on function metatable on __index table
t[1]=2 true
t[1] true 2
t[1]=nil true
metatable call args table 1
t[1] true dummy
t["a"]="b" true
t["a"],t.a true b b
t.a="c" true
t["a"],t.a true c c
t.a=nil true
metatable call args table a
metatable call args table a
t["a"],t.a true dummy dummy
t[nil]="d" false string
metatable call args table nil
t[nil] true dummy
t[nil]=nil false string
metatable call args table nil
t[nil] true dummy
------ basic table tests on function metatable on __newindex table
metatable call args table 1 2
t[1]=2 true
t[1] true nil
metatable call args table 1 nil
t[1]=nil true
t[1] true nil
metatable call args table a b
t["a"]="b" true
t["a"],t.a true nil nil
metatable call args table a c
t.a="c" true
t["a"],t.a true nil nil
metatable call args table a nil
t.a=nil true
t["a"],t.a true nil nil
metatable call args table nil d
t[nil]="d" true nil
t[nil] true nil
metatable call args table nil nil
t[nil]=nil true nil
t[nil] true nil
------ basic table tests on plain metatable on __index table
t[1]=2 true
t[1] true 2
t[1]=nil true
t[1] true nil
t["a"]="b" true
t["a"],t.a true b b
t.a="c" true
t["a"],t.a true c c
t.a=nil true
t["a"],t.a true nil nil
t[nil]="d" false string
t[nil] true nil
t[nil]=nil false string
t[nil] true nil
------ basic table tests on plain metatable on __newindex table
t[1]=2 true
t[1] true 2
t[1]=nil true
t[1] true nil
t["a"]="b" true
t["a"],t.a true b b
t.a="c" true
t["a"],t.a true c c
t.a=nil true
t["a"],t.a true nil nil
t[nil]="d" false string
t[nil] true nil
t[nil]=nil false string
t[nil] true nil
-- sort tests
default (lexical) comparator
2-4-6-8-1-3-5-7
1-2-3-4-5-6-7-8
333-222-111
111-222-333
www-xxx-yyy-aaa-bbb-ccc
aaa-bbb-ccc-www-xxx-yyy
21-23-25-27-22-24-26-28
sort failed
custom (numerical) comparator
2-4-6-8-1-3-5-7
1-2-3-4-5-6-7-8
333-222-111
111-222-333
www-xxx-yyy-aaa-bbb-ccc
sort failed
21-23-25-27-22-24-26-28
21-22-23-24-25-26-27-28

View File

@@ -0,0 +1,211 @@
true true
b
true true
true true c
--f, n, table.unpack(t) func.1 0
true 0 0 0
--f, n, table.unpack(t) func.1 0 1
true 1 1 1
--f, n, table.unpack(t) func.1 0 1 2
true 1 3 3
--f, n, table.unpack(t) func.1 0 1 2 3
true 1 3 6
--f, n, table.unpack(t) func.1 0 1 2 3 4
true 1 3 6
--f, n, table.unpack(t) func.1 1
true 0 0 0
--f, n, table.unpack(t) func.1 1 1
true 1 2 3
--f, n, table.unpack(t) func.1 1 1 2
true 1 4 7
--f, n, table.unpack(t) func.1 1 1 2 3
true 1 4 10
--f, n, table.unpack(t) func.1 1 1 2 3 4
true 1 4 10
--f, n, table.unpack(t) func.1 2
true 0 0 0
--f, n, table.unpack(t) func.1 2 1
true 1 3 6
--f, n, table.unpack(t) func.1 2 1 2
true 1 5 12
--f, n, table.unpack(t) func.1 2 1 2 3
true 1 5 15
--f, n, table.unpack(t) func.1 2 1 2 3 4
true 1 5 15
--f, n, table.unpack(t) func.1 3
true 0 0 0
--f, n, table.unpack(t) func.1 3 1
true 1 4 10
--f, n, table.unpack(t) func.1 3 1 2
true 1 6 18
--f, n, table.unpack(t) func.1 3 1 2 3
true 1 6 21
--f, n, table.unpack(t) func.1 3 1 2 3 4
true 1 6 21
--f, n, table.unpack(t) func.2 0
--f2, n<=0, returning sum(...)
true 0
--f, n, table.unpack(t) func.2 0 1
--f2, n<=0, returning sum(...) 1
true 1
--f, n, table.unpack(t) func.2 0 1 2
--f2, n<=0, returning sum(...) 1 2
true 3
--f, n, table.unpack(t) func.2 0 1 2 3
--f2, n<=0, returning sum(...) 1 2 3
true 6
--f, n, table.unpack(t) func.2 0 1 2 3 4
--f2, n<=0, returning sum(...) 1 2 3 4
true 10
--f, n, table.unpack(t) func.2 1
--f2, n>0, returning f2(n-1,n,...) 0 1
--f2, n<=0, returning sum(...) 1
true 1
--f, n, table.unpack(t) func.2 1 1
--f2, n>0, returning f2(n-1,n,...) 0 1 1
--f2, n<=0, returning sum(...) 1 1
true 2
--f, n, table.unpack(t) func.2 1 1 2
--f2, n>0, returning f2(n-1,n,...) 0 1 1 2
--f2, n<=0, returning sum(...) 1 1 2
true 4
--f, n, table.unpack(t) func.2 1 1 2 3
--f2, n>0, returning f2(n-1,n,...) 0 1 1 2 3
--f2, n<=0, returning sum(...) 1 1 2 3
true 7
--f, n, table.unpack(t) func.2 1 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 0 1 1 2 3 4
--f2, n<=0, returning sum(...) 1 1 2 3 4
true 11
--f, n, table.unpack(t) func.2 2
--f2, n>0, returning f2(n-1,n,...) 1 2
--f2, n>0, returning f2(n-1,n,...) 0 1 2
--f2, n<=0, returning sum(...) 1 2
true 3
--f, n, table.unpack(t) func.2 2 1
--f2, n>0, returning f2(n-1,n,...) 1 2 1
--f2, n>0, returning f2(n-1,n,...) 0 1 2 1
--f2, n<=0, returning sum(...) 1 2 1
true 4
--f, n, table.unpack(t) func.2 2 1 2
--f2, n>0, returning f2(n-1,n,...) 1 2 1 2
--f2, n>0, returning f2(n-1,n,...) 0 1 2 1 2
--f2, n<=0, returning sum(...) 1 2 1 2
true 6
--f, n, table.unpack(t) func.2 2 1 2 3
--f2, n>0, returning f2(n-1,n,...) 1 2 1 2 3
--f2, n>0, returning f2(n-1,n,...) 0 1 2 1 2 3
--f2, n<=0, returning sum(...) 1 2 1 2 3
true 9
--f, n, table.unpack(t) func.2 2 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 1 2 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 0 1 2 1 2 3 4
--f2, n<=0, returning sum(...) 1 2 1 2 3 4
true 13
--f, n, table.unpack(t) func.2 3
--f2, n>0, returning f2(n-1,n,...) 2 3
--f2, n>0, returning f2(n-1,n,...) 1 2 3
--f2, n>0, returning f2(n-1,n,...) 0 1 2 3
--f2, n<=0, returning sum(...) 1 2 3
true 6
--f, n, table.unpack(t) func.2 3 1
--f2, n>0, returning f2(n-1,n,...) 2 3 1
--f2, n>0, returning f2(n-1,n,...) 1 2 3 1
--f2, n>0, returning f2(n-1,n,...) 0 1 2 3 1
--f2, n<=0, returning sum(...) 1 2 3 1
true 7
--f, n, table.unpack(t) func.2 3 1 2
--f2, n>0, returning f2(n-1,n,...) 2 3 1 2
--f2, n>0, returning f2(n-1,n,...) 1 2 3 1 2
--f2, n>0, returning f2(n-1,n,...) 0 1 2 3 1 2
--f2, n<=0, returning sum(...) 1 2 3 1 2
true 9
--f, n, table.unpack(t) func.2 3 1 2 3
--f2, n>0, returning f2(n-1,n,...) 2 3 1 2 3
--f2, n>0, returning f2(n-1,n,...) 1 2 3 1 2 3
--f2, n>0, returning f2(n-1,n,...) 0 1 2 3 1 2 3
--f2, n<=0, returning sum(...) 1 2 3 1 2 3
true 12
--f, n, table.unpack(t) func.2 3 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 2 3 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 1 2 3 1 2 3 4
--f2, n>0, returning f2(n-1,n,...) 0 1 2 3 1 2 3 4
--f2, n<=0, returning sum(...) 1 2 3 1 2 3 4
true 16
--f, n, table.unpack(t) func.3 0
true 0
--f, n, table.unpack(t) func.3 0 1
true 1
--f, n, table.unpack(t) func.3 0 1 2
true 3
--f, n, table.unpack(t) func.3 0 1 2 3
true 6
--f, n, table.unpack(t) func.3 0 1 2 3 4
true 10
--f, n, table.unpack(t) func.3 1
f3,n-1,n,... func.3 0 1
true true 1
--f, n, table.unpack(t) func.3 1 1
f3,n-1,n,... func.3 0 1 1
true true 2
--f, n, table.unpack(t) func.3 1 1 2
f3,n-1,n,... func.3 0 1 1 2
true true 4
--f, n, table.unpack(t) func.3 1 1 2 3
f3,n-1,n,... func.3 0 1 1 2 3
true true 7
--f, n, table.unpack(t) func.3 1 1 2 3 4
f3,n-1,n,... func.3 0 1 1 2 3 4
true true 11
--f, n, table.unpack(t) func.3 2
f3,n-1,n,... func.3 1 2
f3,n-1,n,... func.3 0 1 2
true true true 3
--f, n, table.unpack(t) func.3 2 1
f3,n-1,n,... func.3 1 2 1
f3,n-1,n,... func.3 0 1 2 1
true true true 4
--f, n, table.unpack(t) func.3 2 1 2
f3,n-1,n,... func.3 1 2 1 2
f3,n-1,n,... func.3 0 1 2 1 2
true true true 6
--f, n, table.unpack(t) func.3 2 1 2 3
f3,n-1,n,... func.3 1 2 1 2 3
f3,n-1,n,... func.3 0 1 2 1 2 3
true true true 9
--f, n, table.unpack(t) func.3 2 1 2 3 4
f3,n-1,n,... func.3 1 2 1 2 3 4
f3,n-1,n,... func.3 0 1 2 1 2 3 4
true true true 13
--f, n, table.unpack(t) func.3 3
f3,n-1,n,... func.3 2 3
f3,n-1,n,... func.3 1 2 3
f3,n-1,n,... func.3 0 1 2 3
true true true true 6
--f, n, table.unpack(t) func.3 3 1
f3,n-1,n,... func.3 2 3 1
f3,n-1,n,... func.3 1 2 3 1
f3,n-1,n,... func.3 0 1 2 3 1
true true true true 7
--f, n, table.unpack(t) func.3 3 1 2
f3,n-1,n,... func.3 2 3 1 2
f3,n-1,n,... func.3 1 2 3 1 2
f3,n-1,n,... func.3 0 1 2 3 1 2
true true true true 9
--f, n, table.unpack(t) func.3 3 1 2 3
f3,n-1,n,... func.3 2 3 1 2 3
f3,n-1,n,... func.3 1 2 3 1 2 3
f3,n-1,n,... func.3 0 1 2 3 1 2 3
true true true true 12
--f, n, table.unpack(t) func.3 3 1 2 3 4
f3,n-1,n,... func.3 2 3 1 2 3 4
f3,n-1,n,... func.3 1 2 3 1 2 3 4
f3,n-1,n,... func.3 0 1 2 3 1 2 3 4
true true true true 16
120
120
1234
true 832040
true 832040
true inf
1 1 2 3 5 8 13 21 34

View File

@@ -0,0 +1,23 @@
-------- simple upvalues tests --------
6
5
f1()= 6
g1()= 5
6
5
f2()= 6
g2()= 5
g1()= 4
f1()= 5
simplevalues result: true
----------- upvalued in middle ------------
x= 3
y= 5
z= 7
x= x
y= y
z= z
true
--------- nested upvalues ----------
10 20
nestedupvaluestest result: true

View File

@@ -0,0 +1,418 @@
-------- basic vm tests --------
-- boolean tests
true
false
false
true
true
false
false
true
true
false
false
true
false
true
1
0
nil
1
0
nil
booleantests result: true
------------- varargs
---- function p()
--p():
a nil
...
...,a nil nil
a,... nil
-> true
--p("q"):
a q
...
...,a nil q
a,... q
-> true
--p("q","r"):
a q
... r
...,a r q
a,... q r
-> true
--p("q","r","s"):
a q
... r s
...,a r q
a,... q r s
-> true
---- function q()
--q():
a,arg[1],arg[2],arg[3] nil nil global-1 global-2 global-3
-> true
--q("q"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
--q("q","r"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
--q("q","r","s"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
---- function r()
--r():
a,arg[1],arg[2],arg[3] nil nil global-1 global-2 global-3
a nil
...
...,a nil nil
a,... nil
-> true
--r("q"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
...
...,a nil q
a,... q
-> true
--r("q","r"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
... r
...,a r q
a,... q r
-> true
--r("q","r","s"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
... r s
...,a r q
a,... q r s
-> true
---- function s()
--s():
a,arg[1],arg[2],arg[3] nil 1 2 3
a nil
-> true
--s("q"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
--s("q","r"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
--s("q","r","s"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
---- function t()
--t():
a,arg[1],arg[2],arg[3] nil 1 2 3
a nil
...
...,a nil nil
a,... nil
-> true
--t("q"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
...
...,a nil q
a,... q
-> true
--t("q","r"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
... r
...,a r q
a,... q r
-> true
--t("q","r","s"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
... r s
...,a r q
a,... q r s
-> true
---- function u()
--u():
arg nil
-> true
--u("q"):
arg q
-> true
--u("q","r"):
arg q
-> true
--u("q","r","s"):
arg q
-> true
---- function v()
--v():
arg nil
...
arg,... nil
-> true
--v("q"):
arg q
...
arg,... q
-> true
--v("q","r"):
arg q
... r
arg,... q r
-> true
--v("q","r","s"):
arg q
... r s
arg,... q r s
-> true
varargstest result: true
---------- metatable tests
ell
set{} tbl.1 tbl.2 tbl.1 nil
set-nil tbl.1 nil tbl.1 nil
set{} tbl.1 tbl.3 tbl.1 nil
set tbl.1 tbl.3 false string
set{} tbl.1 tbl.4 tbl.1 nil
set{} tbl.1 tbl.5 tbl.1 nil
set{}{} tbl.1 tbl.6 tbl.1 nil
set-nil tbl.1 nil tbl.1 nil
set{__} tbl.1 tbl.7 tbl.1 nil
set{} tbl.1 tbl.7 false string
set-nil tbl.1 tbl.7 false string
set{} tbl.8 tbl.9 tbl.8 nil
set-nil tbl.8 nil tbl.8 nil
set{__} tbl.8 abc tbl.8 nil
set{} tbl.8 abc false string
set-nil tbl.8 abc false string
t.a 1234
t.b 1235
t.a 1234
t.b 1235
t.c 1236
t.a 1234
t.b 1235
t.c 1236
t.d 1237
metatabletests result: true
------------ huge tables
#t= 100 t[1,50,51,59] 1 1 1 1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
#t2= 70 t[1,50,51,59] 1 1 1 1
0,3,4,7,9,8,12,15,23,5,10,13,14,17,19,18,112,115,123,15,20,33,24,27,29,28,212,215,223,25,40,43,44,47,49,48,412,415,423,45,50,53,54,57,59,58,512,515,523,55,60,63,64,67,69,68,612,615,623,65,70,73,74,77,79,78,72,715,723,75
t[2000] a
t[2001] b
t[2002] c
t[2003] d
t[2004] e
t[2005] f
t[2006] g
t[2007] h
t[2008] i
t[2009] j
t[3000] a
t[3001] b
t[3002] c
t[3003] d
t[3004] e
t[3005] f
t[3006] g
t[3007] h
t[3008] i
t[3009] j
t[4000] a
t[4001] b
t[4002] c
t[4003] d
t[4004] e
t[4005] f
t[4006] g
t[4007] h
t[4008] i
t[4009] j
t[5000] a
t[5001] b
t[5002] c
t[5003] d
t[5004] e
t[5005] f
t[5006] g
t[5007] h
t[5008] i
t[5009] j
t[6000] a
t[6001] b
t[6002] c
t[6003] d
t[6004] e
t[6005] f
t[6006] g
t[6007] h
t[6008] i
t[6009] j
t[7000] a
t[7001] b
t[7002] c
t[7003] d
t[7004] e
t[7005] f
t[7006] g
t[7007] h
t[7008] i
t[7009] j
t[8000] a
t[8001] b
t[8002] c
t[8003] d
t[8004] e
t[8005] f
t[8006] g
t[8007] h
t[8008] i
t[8009] j
hugetables result: true
--------- many locals
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
manylocals result: true

View File

@@ -0,0 +1,240 @@
11
abc 123 nil pqr
F
F
T
assert(true) true
pcall(assert,true) true
pcall(assert,false) false string
pcall(assert,nil) false string
pcall(assert,true,"msg") true
pcall(assert,false,"msg") false string
pcall(assert,nil,"msg") false string
pcall(assert,false,"msg","msg2") false string
collectgarbage("count") number
collectgarbage("collect") number
collectgarbage("count") number
pcall(ipairs) false string
pcall(ipairs,nil) false string
pcall(ipairs,"a") false string
pcall(ipairs,1) false string
ipairs2 1 one
ipairs2 2 two
ipairs4 1 one
ipairs4 2 two
table loaded
load: nil
load("print(3+4); return 8") func.1 nil
7
load("print(3+4); return 8")() 8
pcall(pairs) false string
pcall(pairs,nil) false string
pcall(pairs,"a") false string
pcall(pairs,1) false string
pairs2 1 one
pairs2 2 two
pairs3 aa aaa
pairs4 1 one
pairs4 2 two
pairs4 aa aaa
pairs5 20 30
pairs5 30 20
_G["abc"] (before) nil
_G["abc"] (after) def
type(nil) nil
type("a") string
type(1) number
type(1.5) number
type(function() end) function
type({}) table
type(true) boolean
type(false) boolean
pcall(type,type) function
pcall(type) false string
(function() return pcall(type) end)() false string
la() false string
ga() false string
getmetatable(ta) nil
getmetatable(tb) nil
setmetatable(ta),{cc1="ccc1"} table
setmetatable(tb),{dd1="ddd1"} table
getmetatable(ta)["cc1"] ccc1
getmetatable(tb)["dd1"] ddd1
getmetatable(1) nil
pcall(setmetatable,1) false string
pcall(setmetatable,nil) false string
pcall(setmetatable,"ABC") false string
pcall(setmetatable,function() end) false string
pcall(rawget) false string
pcall(rawget,"a") false string
pcall(rawget,s) false string
pcall(rawget,t) false string
s nil nil ccc ddd nil nil nil
s nil nil ccc ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,s,"aa","www") tbl.2
s www nil ccc ddd nil nil nil
s www nil ccc ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,s,"cc","xxx") tbl.2
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t aaa bbb ccc ddd nil nil nil
t nil nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,t,"aa","yyy") tbl.3
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc ddd nil nil nil
t yyy nil ccc ddd nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawset,t,"dd","zzz") tbl.3
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
pcall(rawlen, {}) false string
pcall(rawlen, {"a"}) false string
pcall(rawlen, {"a","b"}) false string
pcall(rawlen, "") false string
pcall(rawlen, "a") false string
pcall(rawlen, "ab") false string
pcall(rawlen, 1) false string
pcall(rawlen, nil) false string
pcall(rawlen) false string
s www nil xxx ddd nil nil nil
s www nil xxx ddd nil nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
s["ee"]="ppp"
s www nil xxx ddd ppp nil nil
s www nil xxx ddd ppp nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
s["cc"]="qqq"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc zzz nil nil nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil nil nil
mt aaa bbb nil nil nil nil nil
t["ff"]="rrr"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc zzz nil rrr nil
t yyy nil ccc zzz nil nil nil
mt aaa bbb nil nil nil rrr nil
mt aaa bbb nil nil nil rrr nil
t["dd"]="sss"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc sss nil rrr nil
t yyy nil ccc sss nil nil nil
mt aaa bbb nil nil nil rrr nil
mt aaa bbb nil nil nil rrr nil
mt["gg"]="ttt"
s www nil qqq ddd ppp nil nil
s www nil qqq ddd ppp nil nil
t yyy bbb ccc sss nil rrr ttt
t yyy nil ccc sss nil nil nil
mt aaa bbb nil nil nil rrr ttt
mt aaa bbb nil nil nil rrr ttt
pcall(select) false string
select(1,11,22,33,44,55) 11 22 33 44 55
select(2,11,22,33,44,55) 22 33 44 55
select(3,11,22,33,44,55) 33 44 55
select(4,11,22,33,44,55) 44 55
pcall(select,5,11,22,33,44,55) 55
pcall(select,6,11,22,33,44,55) nil
pcall(select,7,11,22,33,44,55) nil
pcall(select,0,11,22,33,44,55) false string
pcall(select,-1,11,22,33,44,55) 55
pcall(select,-2,11,22,33,44,55) 44
pcall(select,-4,11,22,33,44,55) 22
pcall(select,-5,11,22,33,44,55) 11
pcall(select,-6,11,22,33,44,55) false string
pcall(select,1) nil
pcall(select,select) false string
pcall(select,{}) false string
pcall(select,"2",11,22,33) 22
pcall(select,"abc",11,22,33) false string
pcall(tonumber) nil
pcall(tonumber,nil) nil
pcall(tonumber,"abc") nil
pcall(tonumber,"123") 123
pcall(tonumber,"123",10) 123
pcall(tonumber,"123",8) 83
pcall(tonumber,"123",6) 51
pcall(tonumber,"10101",4) 273
pcall(tonumber,"10101",3) 91
pcall(tonumber,"10101",2) 21
pcall(tonumber,"1a1",16) 417
pcall(tonumber,"1a1",32) 1345
pcall(tonumber,"1a1",54) false string
pcall(tonumber,"1a1",1) false string
pcall(tonumber,"1a1",0) false string
pcall(tonumber,"1a1",-1) false string
pcall(tonumber,"1a1","32") 1345
pcall(tonumber,"123","456") false string
pcall(tonumber,"1a1",10) nil
pcall(tonumber,"151",4) nil
pcall(tonumber,"151",3) nil
pcall(tonumber,"151",2) nil
pcall(tonumber,"123",8,8) 83
pcall(tonumber,123) 123
pcall(tonumber,true) nil
pcall(tonumber,false) nil
pcall(tonumber,tonumber) nil
pcall(tonumber,function() end) nil
pcall(tonumber,{"one","two",a="aa",b="bb"}) nil
pcall(tonumber,"123.456") 123.456
pcall(tonumber," 123.456") 123.456
pcall(tonumber," 234qwer") nil
pcall(tonumber,"0x20") 32
pcall(tonumber," 0x20") 32
pcall(tonumber,"0x20 ") 32
pcall(tonumber," 0x20 ") 32
pcall(tonumber,"0X20") 32
pcall(tonumber," 0X20") 32
pcall(tonumber,"0X20 ") 32
pcall(tonumber," 0X20 ") 32
pcall(tonumber,"0x20",10) 32
pcall(tonumber,"0x20",16) 32
pcall(tonumber,"0x20",8) nil
pcall(tostring) nil
pcall(tostring,nil) nil
pcall(tostring,"abc") abc
pcall(tostring,"abc","def") abc
pcall(tostring,123) 123
pcall(tostring,true) true
pcall(tostring,false) false
tostring(tostring) string
tostring(function() end) string
tostring({"one","two",a="aa",b="bb"}) string
_VERSION string
pcall(badfunc) false string
pcall(badfunc,errfunc) false string
pcall(badfunc,badfunc) false string
pcall(wrappedbad) nil
pcall(wrappedbad,errfunc) nil
pcall(xpcall(badfunc)) false string
in errfunc string
pcall(xpcall(badfunc,errfunc)) false
pcall(xpcall(badfunc,badfunc)) false
pcall(xpcall(wrappedbad)) false string
xpcall(wrappedbad,errfunc) true

View File

@@ -0,0 +1,95 @@
running is nil
co.status suspended
co-body 1 10
foo 2
main true 4
co.status suspended
co-body r
main true 11 -9
co.status suspended
co-body x y
running is not nil
co.status.inside running
co.status.inside running
co.status.inside2 normal
main true 10 end
co.status dead
main false cannot resume dead coroutine
co.status dead
running is nil
co.status suspended
co-body 1 10
foo 2
main true 4
co.status suspended
co-body nil nil
main true 11 -9
co.status suspended
co-body x y
main true 10 end
co.status dead
main false cannot resume dead coroutine
co.status dead
co-body 1 10
foo 2
g 4
co-body r
g 11 -9
co-body x y
g 10 end
g cannot resume dead coroutine
(main) sending args 111 222 333
(main) resume returns false coroutinelib.lua:83: attempt to call field 'pack' (a nil value)
(main) sending args
(main) resume returns false cannot resume dead coroutine
(main) sending args 111
(main) resume returns false cannot resume dead coroutine
(main) sending args 111 222 333
(main) resume returns false cannot resume dead coroutine
main-b suspended
main-c suspended
b-resumed main-arg-for-b true
b-b running
b-c suspended
b-resume-b false cannot resume running coroutine
c-resumed b-arg-for-c true
c-b normal
c-c running
c-resume-b false cannot resume running coroutine
c-resume-c false cannot resume running coroutine
b-resume-c true c-rslt
main-resume-b true b-rslt
c-resumed main-arg-for-c true
c-b suspended
c-c running
b-resumed b-arg-for-b true
b-b running
b-c normal
b-resume-b false cannot resume running coroutine
b-resume-c false cannot resume running coroutine
c-resume-b true b-rslt
c-resume-c false cannot resume running coroutine
main-resume-c true c-rslt
main-b suspended
main-c suspended
b-resumed main-arg-for-b true
b-b running
b-c suspended
b-resume-b false cannot resume running coroutine
c-resumed b-arg-for-c true
c-b normal
c-c running
c-resume-b false cannot resume running coroutine
c-resume-c false cannot resume running coroutine
b-resume-c true c-rslt
main-resume-b true b-rslt
main-resume-c true
main-b suspended
main-c dead
b-resumed main-arg-for-b true
b-b running
b-c dead
b-resume-b false cannot resume running coroutine
b-resume-c false cannot resume dead coroutine
main-resume-b true b-rslt
main-resume-c false cannot resume dead coroutine

View File

@@ -0,0 +1,97 @@
a(error) false nil
a(error,"msg") false string
a(error,"msg",0) false string
a(error,"msg",1) false string
a(error,"msg",2) false string
a(error,"msg",3) false string
a(error,"msg",4) false string
a(error,"msg",5) false string
a(error,"msg",6) false string
a(nil()) false string
a(t()) false string
a(s()) false string
a(true()) false string
a(nil+1) false string
a(a+1) false string
a(s+1) false string
a(true+1) false string
a(nil.x) false string
a(a.x) false string
a(s.x) true nil
a(true.x) false string
a(nil.x=5) false string
a(a.x=5) false string
a(s.x=5) false string
a(true.x=5) false string
a(#nil) false string
a(#t) true 0
a(#s) true 11
a(#a) false string
a(#true) false string
a(nil>1) false string
a(a>1) false string
a(s>1) false string
a(true>1) false string
a(-nil) false string
a(-a) false string
a(-s) false string
a(-true) false string
-------- string concatenation
"a".."b" true
"a"..nil false
nil.."b" false
"a"..{} false
{}.."b" false
"a"..2 true
2.."b" true
"a"..print false
print.."b" false
"a"..true false
true.."b" false
nil..true false
"a"..3.5 true
3.5.."b" true
-------- table concatenation
"a".."b" true
"a"..nil false
nil.."b" false
"a"..{} false
{}.."b" false
"a"..2 true
2.."b" true
"a"..print false
print.."b" false
"a"..true false
true.."b" false
nil..true false
"a"..3.5 true
3.5.."b" true
-------- pairs tests
a(pairs(nil)) false string
a(pairs(a)) false string
a(pairs(s)) false string
a(pairs(t)) true func.1
a(pairs(true)) false string
-------- setmetatable tests
a(setmetatable(nil)) false string
a(setmetatable(a)) false string
a(setmetatable(s)) false string
a(setmetatable(true)) false string
a(setmetatable(t)) true tbl.2
a(getmetatable(t)) true tbl.3
a(setmetatable(t*)) true tbl.2
a(getmetatable(t)) true tbl.4
a(setmetatable(t)) false string
a(getmetatable(t)) true tbl.4
a(setmetatable(t)) true tbl.5
a(getmetatable(t)) true tbl.6
a(setmetatable(t*)) true tbl.5
a(getmetatable(t)) true some string
a(setmetatable(t)) false string
a(getmetatable(t)) true some string
a(setmetatable(t,nil)) false string
a(setmetatable(t)) false string
a(setmetatable({},"abc")) false string
error("msg","arg") false string
loadfile("bogus.txt") true nil
dofile("bogus.txt") false string

View File

@@ -0,0 +1,68 @@
f0:
f0:
f0:
f0:
f0:
f1: nil
f1: a1/1
f1: a1/2
f1: a1/3
f1: a1/4
f2: nil nil
f2: a1/1 nil
f2: a1/2 a2/2
f2: a1/3 a2/3
f2: a1/4 a2/4
f3: nil nil nil
f3: a1/1 nil nil
f3: a1/2 a2/2 nil
f3: a1/3 a2/3 a3/3
f3: a1/4 a2/4 a3/4
f4: nil nil nil nil
f4: a1/1 nil nil nil
f4: a1/2 a2/2 nil nil
f4: a1/3 a2/3 a3/3 nil
f4: a1/4 a2/4 a3/4 a4/4
z0: nil
z2: c2.3/4
z4: c4.1/4
g0: nil nil nil nil (eol)
g2: b2.3/4 b2.4/4 nil nil (eol)
g4: b4.1/4 b4.2/4 b4.3/4 b4.4/4 (eol)
11 12 13
23 22 21
32 45 58
a nil
...
...,a nil nil
a,... nil
a q
...
...,a nil q
a,... q
a q
... r
...,a r q
a,... q r
a q
... r s
...,a r q
a,... q r s
third abc nil | nil nil nil
third def nil | nil nil nil
third def nil | nil nil nil
third abc p | p nil nil
third def nil | p nil nil
third def nil | p nil nil
third abc p | p q nil
third def q | p q nil
third def q | p q nil
third abc p | p q r
third def q | p q r
third def q | p q r
third abc p | p q r
third def q | p q r
third def q | p q r
third abc nil | nil nil nil
third def nil | nil nil nil
third def nil | nil nil nil

View File

@@ -0,0 +1,8 @@
true
true
true
true
true
write true
Thiswrite true
is a pen.write true

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,645 @@
---- __eq same types
nil nil before true true
nil nil before true false
true
true
nil nil after true true
nil nil after true false
true
true
boolean boolean before true false
boolean boolean before true true
true
true
boolean boolean after true false
boolean boolean after true true
true
true
number number before true false
number number before true true
true
true
number number after true false
number number after true true
true
true
number number before true false
number number before true true
true
true
number number after true false
number number after true true
true
true
function function before true false
function function before true true
true
true
function function after true false
function function after true true
true
true
thread nil before true false
thread nil before true true
true
true
thread nil after true false
thread nil after true true
true
true
string string before true false
string string before true true
true
true
string string after true false
string string after true true
true
true
number string before true false
number string before true true
true
true
number string after true false
number string after true true
true
true
---- __eq, tables - should invoke metatag comparison
table table before true false
table table before true true
true
true
mt.__eq() table.1 table.2
table table after-a true true
mt.__eq() table.1 table.2
table table after-a true false
true
true
nilmt nil
boolmt nil
number nil
function nil
thread nil
---- __call
number before false attempt to call
true
mt.__call() 111 nil
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
mt.__call() 111 a
number after true __call-result
true
boolean before false attempt to call
true
mt.__call() false nil
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
mt.__call() false a
boolean after true __call-result
true
function before true nil
true
function after true
function after true
function after true
function after true
function after true
true
thread before false attempt to call
true
mt.__call() thread.3 nil
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
mt.__call() thread.3 a
thread after true __call-result
true
table before false attempt to call
true
mt.__call() table.1 nil
table after true __call-result
mt.__call() table.1 a
table after true __call-result
mt.__call() table.1 a
table after true __call-result
mt.__call() table.1 a
table after true __call-result
mt.__call() table.1 a
table after true __call-result
true
---- __add, __sub, __mul, __div, __pow, __mod
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
boolean boolean before false attempt to perform arithmetic
true
mt.__add() false false
boolean boolean after true __add-result
mt.__add() false false
boolean boolean after true __add-result
mt.__sub() false false
boolean boolean after true __sub-result
mt.__sub() false false
boolean boolean after true __sub-result
mt.__mul() false false
boolean boolean after true __mul-result
mt.__mul() false false
boolean boolean after true __mul-result
mt.__pow() false false
boolean boolean after true __pow-result
mt.__pow() false false
boolean boolean after true __pow-result
mt.__mod() false false
boolean boolean after true __mod-result
mt.__mod() false false
boolean boolean after true __mod-result
true
true
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
boolean thread before false attempt to perform arithmetic
true
mt.__add() false thread.3
boolean thread after true __add-result
mt.__add() thread.3 false
boolean thread after true __add-result
mt.__sub() false thread.3
boolean thread after true __sub-result
mt.__sub() thread.3 false
boolean thread after true __sub-result
mt.__mul() false thread.3
boolean thread after true __mul-result
mt.__mul() thread.3 false
boolean thread after true __mul-result
mt.__pow() false thread.3
boolean thread after true __pow-result
mt.__pow() thread.3 false
boolean thread after true __pow-result
mt.__mod() false thread.3
boolean thread after true __mod-result
mt.__mod() thread.3 false
boolean thread after true __mod-result
true
true
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
boolean function before false attempt to perform arithmetic
true
mt.__add() false function.4
boolean function after true __add-result
mt.__add() function.4 false
boolean function after true __add-result
mt.__sub() false function.4
boolean function after true __sub-result
mt.__sub() function.4 false
boolean function after true __sub-result
mt.__mul() false function.4
boolean function after true __mul-result
mt.__mul() function.4 false
boolean function after true __mul-result
mt.__pow() false function.4
boolean function after true __pow-result
mt.__pow() function.4 false
boolean function after true __pow-result
mt.__mod() false function.4
boolean function after true __mod-result
mt.__mod() function.4 false
boolean function after true __mod-result
true
true
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
boolean string before false attempt to perform arithmetic
true
mt.__add() false abc
boolean string after true __add-result
mt.__add() abc false
boolean string after true __add-result
mt.__sub() false abc
boolean string after true __sub-result
mt.__sub() abc false
boolean string after true __sub-result
mt.__mul() false abc
boolean string after true __mul-result
mt.__mul() abc false
boolean string after true __mul-result
mt.__pow() false abc
boolean string after true __pow-result
mt.__pow() abc false
boolean string after true __pow-result
mt.__mod() false abc
boolean string after true __mod-result
mt.__mod() abc false
boolean string after true __mod-result
true
true
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
boolean table before false attempt to perform arithmetic
true
mt.__add() false table.1
boolean table after true __add-result
mt.__add() table.1 false
boolean table after true __add-result
mt.__sub() false table.1
boolean table after true __sub-result
mt.__sub() table.1 false
boolean table after true __sub-result
mt.__mul() false table.1
boolean table after true __mul-result
mt.__mul() table.1 false
boolean table after true __mul-result
mt.__pow() false table.1
boolean table after true __pow-result
mt.__pow() table.1 false
boolean table after true __pow-result
mt.__mod() false table.1
boolean table after true __mod-result
mt.__mod() table.1 false
boolean table after true __mod-result
true
true
---- __len
boolean before false attempt to get length of
true
mt.__len() false
boolean after true __len-result
true
function before false attempt to get length of
true
mt.__len() function.4
function after true __len-result
true
thread before false attempt to get length of
true
mt.__len() thread.3
thread after true __len-result
true
number before false attempt to get length of
true
mt.__len() 111
number after true __len-result
true
---- __neg
nil before false attempt to perform arithmetic
true
mt.__unm() false
nil after true __unm-result
true
nil before false attempt to perform arithmetic
true
mt.__unm() function.4
nil after true __unm-result
true
nil before false attempt to perform arithmetic
true
mt.__unm() thread.3
nil after true __unm-result
true
nil before false attempt to perform arithmetic
true
mt.__unm() abcd
nil after true __unm-result
true
nil before false attempt to perform arithmetic
true
mt.__unm() table.1
nil after true __unm-result
true
nil before true -111
true
nil after true -111
true
---- __lt, __le, same types
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
true
true
mt.__lt() true true
boolean boolean after true true
mt.__le() true true
boolean boolean after true true
mt.__lt() true true
boolean boolean after true true
mt.__le() true true
boolean boolean after true true
true
true
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
boolean boolean before false attempt to compare
true
true
mt.__lt() true false
boolean boolean after true true
mt.__le() true false
boolean boolean after true true
mt.__lt() false true
boolean boolean after true true
mt.__le() false true
boolean boolean after true true
true
true
function function before false attempt to compare
function function before false attempt to compare
function function before false attempt to compare
function function before false attempt to compare
true
true
mt.__lt() function.4 function.5
function function after true true
mt.__le() function.4 function.5
function function after true true
mt.__lt() function.5 function.4
function function after true true
mt.__le() function.5 function.4
function function after true true
true
true
thread thread before false attempt to compare
thread thread before false attempt to compare
thread thread before false attempt to compare
thread thread before false attempt to compare
true
true
mt.__lt() thread.3 thread.6
thread thread after true true
mt.__le() thread.3 thread.6
thread thread after true true
mt.__lt() thread.6 thread.3
thread thread after true true
mt.__le() thread.6 thread.3
thread thread after true true
true
true
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
true
true
mt.__lt() table.1 table.1
table table after true true
mt.__le() table.1 table.1
table table after true true
mt.__lt() table.1 table.1
table table after true true
mt.__le() table.1 table.1
table table after true true
true
true
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
table table before false attempt to compare
true
true
mt.__lt() table.1 table.7
table table after true true
mt.__le() table.1 table.7
table table after true true
mt.__lt() table.7 table.1
table table after true true
mt.__le() table.7 table.1
table table after true true
true
true
---- __lt, __le, different types
boolean thread before false attempt to compare
boolean thread before false attempt to compare
boolean thread before false attempt to compare
boolean thread before false attempt to compare
true
true
boolean thread after-a false attempt to compare
boolean thread after-a false attempt to compare
boolean thread after-a false attempt to compare
boolean thread after-a false attempt to compare
true
true
---- __tostring
mt.__tostring(boolean)
boolean after mt.__tostring(boolean) mt.__tostring(boolean)
true
true
function after true mt.__tostring(function)
true
true
thread after true mt.__tostring(thread)
true
true
table after true mt.__tostring(table)
true
true
string after true abc
true
---- __index, __newindex
boolean before false attempt to index
boolean before false attempt to index
boolean before false index
boolean before false index
boolean before false attempt to index
true
mt.__index() false foo
boolean after true __index-result
mt.__index() false 123
boolean after true __index-result
mt.__newindex() false foo bar
boolean after true
mt.__newindex() false 123 bar
boolean after true
mt.__index() false foo
boolean after false attempt to call
true
number before false attempt to index
number before false attempt to index
number before false index
number before false index
number before false attempt to index
true
mt.__index() 111 foo
number after true __index-result
mt.__index() 111 123
number after true __index-result
mt.__newindex() 111 foo bar
number after true
mt.__newindex() 111 123 bar
number after true
mt.__index() 111 foo
number after false attempt to call
true
function before false attempt to index
function before false attempt to index
function before false index
function before false index
function before false attempt to index
true
mt.__index() function.4 foo
function after true __index-result
mt.__index() function.4 123
function after true __index-result
mt.__newindex() function.4 foo bar
function after true
mt.__newindex() function.4 123 bar
function after true
mt.__index() function.4 foo
function after false attempt to call
true
thread before false attempt to index
thread before false attempt to index
thread before false index
thread before false index
thread before false attempt to index
true
mt.__index() thread.3 foo
thread after true __index-result
mt.__index() thread.3 123
thread after true __index-result
mt.__newindex() thread.3 foo bar
thread after true
mt.__newindex() thread.3 123 bar
thread after true
mt.__index() thread.3 foo
thread after false attempt to call
true
---- __concat
table function before false attempt to concatenate
table function before false attempt to concatenate
table string number before false attempt to concatenate
string table number before false attempt to concatenate
string number table before false attempt to concatenate
true
mt.__concat(table,function) table.1 function.4
table function after true table.8
mt.__concat(function,table) function.4 table.1
table function after true table.8
mt.__concat(table,string) table.1 sss777
table string number before true table.8
mt.__concat(table,number) table.1 777
string table number before false attempt to concatenate
mt.__concat(number,table) 777 table.1
string number table before false attempt to concatenate
true
true
function table before false attempt to concatenate
function table before false attempt to concatenate
function string number before false attempt to concatenate
string function number before false attempt to concatenate
string number function before false attempt to concatenate
true
mt.__concat(function,table) function.4 table.1
function table after true table.8
mt.__concat(table,function) table.1 function.4
function table after true table.8
mt.__concat(function,string) function.4 sss777
function string number before true table.8
mt.__concat(function,number) function.4 777
string function number before false attempt to concatenate
mt.__concat(number,function) 777 function.4
string number function before false attempt to concatenate
true
true
number nil before false attempt to concatenate
number nil before false attempt to concatenate
number string number before true 123sss777
string number number before true sss123777
string number number before true sss777123
true
mt.__concat(number,nil) 123 nil
number nil after true table.8
mt.__concat(nil,number) nil 123
number nil after true table.8
number string number before true 123sss777
string number number before true sss123777
string number number before true sss777123
true
true
nil number before false attempt to concatenate
nil number before false attempt to concatenate
nil string number before false attempt to concatenate
string nil number before false attempt to concatenate
string number nil before false attempt to concatenate
true
mt.__concat(nil,number) nil 123
nil number after true table.8
mt.__concat(number,nil) 123 nil
nil number after true table.8
mt.__concat(nil,string) nil sss777
nil string number before true table.8
mt.__concat(nil,number) nil 777
string nil number before false attempt to concatenate
mt.__concat(number,nil) 777 nil
string number nil before false attempt to concatenate
true
true
---- __metatable
boolean before true nil nil
true
boolean after true table.9 table.10
true
function before true nil nil
true
function after true table.9 table.10
true
thread before true nil nil
true
thread after true table.9 table.10
true
table before true nil nil
true
table after true table.9 table.10
true
string before true table.11 table.11
true
string after true table.9 table.10
true

View File

@@ -0,0 +1,80 @@
os table
os.clock() true number nil
os.date() true string nil
os.difftime(123000, 21500) true number nil
os.getenv() false string nil
os.getenv("bogus.key") true nil nil
os.tmpname() true string
os.tmpname() true string
io.open true userdata
write false string nil
close false string nil
os.rename(p,q) true boolean nil
os.remove(q) true boolean nil
os.remove(q) true nil string
os.setlocale("C") true string nil
os.exit function
os.date('%a', 1281364496) true string nil
os.date('%A', 1281364496) true string nil
os.date('%b', 1281364496) true string nil
os.date('%B', 1281364496) true string nil
os.date('%c', 1281364496) true string nil
os.date('%C', 1281364496) true string nil
os.date('%d', 1281364496) true string nil
os.date('%D', 1281364496) true string nil
os.date('%e', 1281364496) true string nil
os.date('%E', 1281364496) true string nil
os.date('%f', 1281364496) true string nil
os.date('%F', 1281364496) true string nil
os.date('%g', 1281364496) true string nil
os.date('%G', 1281364496) true string nil
os.date('%h', 1281364496) true string nil
os.date('%H', 1281364496) true string nil
os.date('%i', 1281364496) true string nil
os.date('%I', 1281364496) true string nil
os.date('%j', 1281364496) true string nil
os.date('%J', 1281364496) true string nil
os.date('%k', 1281364496) true string nil
os.date('%K', 1281364496) true string nil
os.date('%l', 1281364496) true string nil
os.date('%L', 1281364496) true string nil
os.date('%m', 1281364496) true string nil
os.date('%M', 1281364496) true string nil
os.date('%n', 1281364496) true string nil
os.date('%N', 1281364496) true string nil
os.date('%o', 1281364496) true string nil
os.date('%O', 1281364496) true string nil
os.date('%p', 1281364496) true string nil
os.date('%P', 1281364496) true string nil
os.date('%q', 1281364496) true string nil
os.date('%Q', 1281364496) true string nil
os.date('%r', 1281364496) true string nil
os.date('%R', 1281364496) true string nil
os.date('%s', 1281364496) true string nil
os.date('%S', 1281364496) true string nil
os.date('%t', 1281364496) true string nil
os.date('%T', 1281364496) true string nil
os.date('%u', 1281364496) true string nil
os.date('%U', 1281364496) true string nil
os.date('%v', 1281364496) true string nil
os.date('%V', 1281364496) true string nil
os.date('%w', 1281364496) true string nil
os.date('%W', 1281364496) true string nil
os.date('%x', 1281364496) true string nil
os.date('%X', 1281364496) true string nil
os.date('%y', 1281364496) true string nil
os.date('%Y', 1281364496) true string nil
os.date('%z', 1281364496) true string nil
os.date('%Z', 1281364496) true string nil
k string year v number 2010
k string month v number 8
k string day v number 9
k string hour v number 16
k string min v number 34
k string sec v number 56
k string wday v number 2
k string yday v number 221
k string isdst v boolean true
type(os.time()) number
os.time({year=1971, month=2, day=25}) 36327600
os.time({year=1971, month=2, day=25, hour=11, min=22, sec=33}) 36325353

View File

@@ -0,0 +1,63 @@
2
-- concat tests
onetwothree
one--two--three
two,three
two
onetwothreefourfive
one--two--three--four--five
two,three,four,five
two
-- insert, len tests
{[1]=one,[2]=two,[3]=three,[a]=aaa,[b]=bbb,[c]=ccc} 3
{[1]=one,[2]=two,[3]=three,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
{[1]=seven,[2]=one,[3]=two,[4]=three,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[a]=aaa,[b]=bbb,[c]=ccc} 6
{[1]=seven,[2]=one,[3]=two,[4]=eight,[5]=three,[6]=six,[7]=nine,[a]=aaa,[b]=bbb,[c]=ccc} 7
#{} 0
#{"a"} 1
#{"a","b"} 2
#{"a",nil} 1
#{nil,nil} 0
#{nil,"b"} true
#{"a","b","c"} 3
#{"a","b",nil} 2
#{"a",nil,nil} 1
#{nil,nil,nil} 0
#{nil,nil,"c"} true
#{nil,"b","c"} true
#{nil,"b",nil} true
#{"a",nil,"c"} true
-- remove tests
{[10]=ten,[1]=one,[2]=two,[3]=three,[4]=four,[5]=five,[6]=six,[7]=seven,[a]=aaa,[b]=bbb,[c]=ccc} 7
table.remove(t) seven
{[10]=ten,[1]=one,[2]=two,[3]=three,[4]=four,[5]=five,[6]=six,[a]=aaa,[b]=bbb,[c]=ccc} 6
table.remove(t,1) one
{[10]=ten,[1]=two,[2]=three,[3]=four,[4]=five,[5]=six,[a]=aaa,[b]=bbb,[c]=ccc} 5
table.remove(t,3) four
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
table.remove(t,5)
{[10]=ten,[1]=two,[2]=three,[3]=five,[4]=six,[a]=aaa,[b]=bbb,[c]=ccc} 4
-- sort tests
one-two-three
one-three-two
www-vvv-uuu-ttt-sss-zzz-yyy-xxx
sss-ttt-uuu-vvv-www-xxx-yyy-zzz
www-vvv-uuu-ttt-sss-zzz-yyy-xxx
zzz-yyy-xxx-www-vvv-uuu-ttt-sss
----- unpack tests -------
pcall(unpack) false
pcall(unpack,nil) false
pcall(unpack,"abc") false
pcall(unpack,1) false

View File

@@ -0,0 +1,4 @@
true true
b
true true
true true c

View File

@@ -0,0 +1,23 @@
-------- simple upvalues tests --------
6
5
f1()= 6
g1()= 5
6
5
f2()= 6
g2()= 5
g1()= 4
f1()= 5
simplevalues result: true
----------- upvalued in middle ------------
x= 3
y= 5
z= 7
x= x
y= y
z= z
true
--------- nested upvalues ----------
10 20
nestedupvaluestest result: true

View File

@@ -0,0 +1,418 @@
-------- basic vm tests --------
-- boolean tests
true
false
false
true
true
false
false
true
true
false
false
true
false
true
1
0
nil
1
0
nil
booleantests result: true
------------- varargs
---- function p()
--p():
a nil
...
...,a nil nil
a,... nil
-> true
--p("q"):
a q
...
...,a nil q
a,... q
-> true
--p("q","r"):
a q
... r
...,a r q
a,... q r
-> true
--p("q","r","s"):
a q
... r s
...,a r q
a,... q r s
-> true
---- function q()
--q():
a,arg[1],arg[2],arg[3] nil nil global-1 global-2 global-3
-> true
--q("q"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
--q("q","r"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
--q("q","r","s"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
-> true
---- function r()
--r():
a,arg[1],arg[2],arg[3] nil nil global-1 global-2 global-3
a nil
...
...,a nil nil
a,... nil
-> true
--r("q"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
...
...,a nil q
a,... q
-> true
--r("q","r"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
... r
...,a r q
a,... q r
-> true
--r("q","r","s"):
a,arg[1],arg[2],arg[3] q nil global-1 global-2 global-3
a q
... r s
...,a r q
a,... q r s
-> true
---- function s()
--s():
a,arg[1],arg[2],arg[3] nil 1 2 3
a nil
-> true
--s("q"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
--s("q","r"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
--s("q","r","s"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
-> true
---- function t()
--t():
a,arg[1],arg[2],arg[3] nil 1 2 3
a nil
...
...,a nil nil
a,... nil
-> true
--t("q"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
...
...,a nil q
a,... q
-> true
--t("q","r"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
... r
...,a r q
a,... q r
-> true
--t("q","r","s"):
a,arg[1],arg[2],arg[3] q 1 2 3
a q
... r s
...,a r q
a,... q r s
-> true
---- function u()
--u():
arg nil
-> true
--u("q"):
arg q
-> true
--u("q","r"):
arg q
-> true
--u("q","r","s"):
arg q
-> true
---- function v()
--v():
arg nil
...
arg,... nil
-> true
--v("q"):
arg q
...
arg,... q
-> true
--v("q","r"):
arg q
... r
arg,... q r
-> true
--v("q","r","s"):
arg q
... r s
arg,... q r s
-> true
varargstest result: true
---------- metatable tests
ell
set{} tbl.1 tbl.2 tbl.1 nil
set-nil tbl.1 nil tbl.1 nil
set{} tbl.1 tbl.3 tbl.1 nil
set tbl.1 tbl.3 false string
set{} tbl.1 tbl.4 tbl.1 nil
set{} tbl.1 tbl.5 tbl.1 nil
set{}{} tbl.1 tbl.6 tbl.1 nil
set-nil tbl.1 nil tbl.1 nil
set{__} tbl.1 tbl.7 tbl.1 nil
set{} tbl.1 tbl.7 false string
set-nil tbl.1 tbl.7 false string
set{} tbl.8 tbl.9 tbl.8 nil
set-nil tbl.8 nil tbl.8 nil
set{__} tbl.8 abc tbl.8 nil
set{} tbl.8 abc false string
set-nil tbl.8 abc false string
t.a 1234
t.b 1235
t.a 1234
t.b 1235
t.c 1236
t.a 1234
t.b 1235
t.c 1236
t.d 1237
metatabletests result: true
------------ huge tables
#t= 100 t[1,50,51,59] 1 1 1 1
1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
#t2= 70 t[1,50,51,59] 1 1 1 1
0,3,4,7,9,8,12,15,23,5,10,13,14,17,19,18,112,115,123,15,20,33,24,27,29,28,212,215,223,25,40,43,44,47,49,48,412,415,423,45,50,53,54,57,59,58,512,515,523,55,60,63,64,67,69,68,612,615,623,65,70,73,74,77,79,78,72,715,723,75
t[2000] a
t[2001] b
t[2002] c
t[2003] d
t[2004] e
t[2005] f
t[2006] g
t[2007] h
t[2008] i
t[2009] j
t[3000] a
t[3001] b
t[3002] c
t[3003] d
t[3004] e
t[3005] f
t[3006] g
t[3007] h
t[3008] i
t[3009] j
t[4000] a
t[4001] b
t[4002] c
t[4003] d
t[4004] e
t[4005] f
t[4006] g
t[4007] h
t[4008] i
t[4009] j
t[5000] a
t[5001] b
t[5002] c
t[5003] d
t[5004] e
t[5005] f
t[5006] g
t[5007] h
t[5008] i
t[5009] j
t[6000] a
t[6001] b
t[6002] c
t[6003] d
t[6004] e
t[6005] f
t[6006] g
t[6007] h
t[6008] i
t[6009] j
t[7000] a
t[7001] b
t[7002] c
t[7003] d
t[7004] e
t[7005] f
t[7006] g
t[7007] h
t[7008] i
t[7009] j
t[8000] a
t[8001] b
t[8002] c
t[8003] d
t[8004] e
t[8005] f
t[8006] g
t[8007] h
t[8008] i
t[8009] j
hugetables result: true
--------- many locals
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
a a
b b
c c
d d
e e
f f
g g
h h
i i
j j
manylocals result: true

View File

@@ -58,30 +58,6 @@
--- checkallpass
- load(<function>,nil) <function>
- load(<function>,'abc') <function>
--- checkallerrors
- load(nil,nil) ...bad argument...
needcheck load('abc',nil) nil
needcheck load(1.25,nil) nil
- load(true,nil) ...bad argument...
- load(<table>,nil) ...bad argument...
- load(<thread>,nil) ...bad argument...
- load(nil,'abc') ...bad argument...
needcheck load('abc','abc') nil
needcheck load(1.25,'abc') nil
- load(true,'abc') ...bad argument...
- load(<table>,'abc') ...bad argument...
- load(<thread>,'abc') ...bad argument...
- load(nil,1.25) ...bad argument...
needcheck load('abc',1.25) nil
needcheck load(1.25,1.25) nil
- load(true,1.25) ...bad argument...
- load(<table>,1.25) ...bad argument...
- load(<thread>,1.25) ...bad argument...
--- checkallerrors
- load(<function>,<function>) ...bad argument...
- load(<function>,<table>) ...bad argument...
====== loadfile ======
====== load ======
--- checkallpass
- load('return') <function>
--- checkallpass
@@ -89,24 +65,44 @@ needcheck load(1.25,1.25) nil
--- checkallpass
- load('return a ... b','mychunk') nil,string
--- checkallerrors
- load(<function>,true) ...bad argument...
- load(<function>,<table>) ...bad argument...
- load(<function>,<function>) ...bad argument...
- load(<function>,<thread>) ...bad argument...
--- checkallerrors
- load(nil,nil) ...bad argument...
- load(true,nil) ...bad argument...
- load(<table>,nil) ...bad argument...
needcheck load(<function>,nil) function: 0x10011ba00
- load(<thread>,nil) ...bad argument...
- load(nil,'abc') ...bad argument...
- load(true,'abc') ...bad argument...
- load(<table>,'abc') ...bad argument...
needcheck load(<function>,'abc') function: 0x10011c780
- load(<thread>,'abc') ...bad argument...
- load(nil,1.25) ...bad argument...
- load(true,1.25) ...bad argument...
- load(<table>,1.25) ...bad argument...
needcheck load(<function>,1.25) function: 0x10011d560
- load(<thread>,1.25) ...bad argument...
- load(nil,true) ...bad argument...
- load(true,true) ...bad argument...
- load(<table>,true) ...bad argument...
- load(<thread>,true) ...bad argument...
- load(nil,<table>) ...bad argument...
- load(true,<table>) ...bad argument...
- load(<table>,<table>) ...bad argument...
- load(<thread>,<table>) ...bad argument...
- load(nil,<function>) ...bad argument...
- load(true,<function>) ...bad argument...
- load(<table>,<function>) ...bad argument...
- load(<thread>,<function>) ...bad argument...
- load(nil,<thread>) ...bad argument...
- load(true,<thread>) ...bad argument...
- load(<table>,<thread>) ...bad argument...
- load(<thread>,<thread>) ...bad argument...
--- checkallerrors
- load('return',<function>) ...bad argument...
- load('return',true) ...bad argument...
- load('return',<table>) ...bad argument...
- load('return',<function>) ...bad argument...
- load('return',<thread>) ...bad argument...
====== loadfile ======
--- checkallpass
- loadfile('args.lua') <function>
--- checkallerrors
- loadfile(true) ...bad argument...
- loadfile(<table>) ...bad argument...
- loadfile(<function>) ...bad argument...
- loadfile(<thread>) ...bad argument...
====== next ======
--- checkallpass
- next(<table>,'aa')
@@ -382,8 +378,8 @@ true
- select(<thread>) ...bad argument...
====== setmetatable ======
--- checkallpass
- setmetatable(<table>,nil) <table>
- setmetatable(<table>,<table>) <table>
--- checkallpass
--- checkallerrors
- setmetatable(nil,<table>) ...bad argument...
- setmetatable('abc',<table>) ...bad argument...
@@ -414,12 +410,15 @@ true
- tonumber(<table>,nil)
- tonumber(<function>,nil)
- tonumber(<thread>,nil)
--- checkallpass
- tonumber('abc',10)
- tonumber(1.25,10)
fail tonumber(true,10) 'bad argument #1 to '_G.tonumber' (string expected, got boolean)'
fail tonumber(<table>,10) 'bad argument #1 to '_G.tonumber' (string expected, got table)'
fail tonumber(<function>,10) 'bad argument #1 to '_G.tonumber' (string expected, got function)'
fail tonumber(<thread>,10) 'bad argument #1 to '_G.tonumber' (string expected, got thread)'
--- checkallerrors
- tonumber(nil,10) ...bad argument...
- tonumber(true,10) ...bad argument...
- tonumber(<table>,10) ...bad argument...
- tonumber(<function>,10) ...bad argument...
- tonumber(<thread>,10) ...bad argument...
--- checkallerrors
- tonumber(nil,2) ...bad argument...
- tonumber(<function>,2) ...bad argument...

View File

@@ -8,9 +8,9 @@
- debug.getinfo(25)
- debug.getinfo('25')
--- checkallpass
- debug.getinfo(<function>) <table>
- debug.getinfo(25)
- debug.getinfo('25')
- debug.getinfo(<thread>,<function>) <table>
- debug.getinfo(<thread>,25)
- debug.getinfo(<thread>,'25')
--- checkallpass
- debug.getinfo(<function>,'') <table>
- debug.getinfo(25,'')
@@ -22,9 +22,15 @@
- debug.getinfo(25,'flnStu')
- debug.getinfo('25','flnStu')
--- checkallpass
fail debug.getinfo('') 'bad argument #1 to 'debug.getinfo' (function or level expected)'
fail debug.getinfo('n') 'bad argument #1 to 'debug.getinfo' (function or level expected)'
fail debug.getinfo('flnStu') 'bad argument #1 to 'debug.getinfo' (function or level expected)'
- debug.getinfo(<thread>,<function>,'') <table>
- debug.getinfo(<thread>,25,'')
- debug.getinfo(<thread>,'25','')
- debug.getinfo(<thread>,<function>,'n') <table>
- debug.getinfo(<thread>,25,'n')
- debug.getinfo(<thread>,'25','n')
- debug.getinfo(<thread>,<function>,'flnStu') <table>
- debug.getinfo(<thread>,25,'flnStu')
- debug.getinfo(<thread>,'25','flnStu')
--- checkallerrors
- debug.getinfo() ...function or level...
--- checkallerrors
@@ -48,7 +54,7 @@ fail debug.getinfo('flnStu') 'bad argument #1 to 'debug.getinfo' (function or l
- debug.getinfo(<table>,<function>,'abc') ...string expected...
- debug.getinfo(<function>,<function>,'abc') ...string expected...
--- checkallerrors
badmsg debug.getinfo('qzQZ') template='invalid option' actual='bad argument #1 to 'debug.getinfo' (function or level expected)'
- debug.getinfo(<thread>,<function>,'qzQZ') ...invalid option...
====== debug.getlocal ======
f: x,y,a,b,p,q 1 2 nil nil p q
--- checkallpass
@@ -310,47 +316,47 @@ p,q abc abc
--- checkallpass
- debug.traceback() 'stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:127: in main chunk
[C]: in ?'
--- checkallpass
- debug.traceback('abc') 'abc
stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:128: in main chunk
[C]: in ?'
--- checkallpass
- debug.traceback('abc',1.25) 'abc
stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:129: in main chunk
[C]: in ?'
--- checkallpass
- debug.traceback(<thread>) 'stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:130: in main chunk
[C]: in ?'
--- checkallpass
- debug.traceback(<thread>,'abc') 'abc
stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:131: in main chunk
[C]: in ?'
--- checkallpass
- debug.traceback(<thread>,'abc',1.25) 'abc
stack traceback:
[C]: in function 'pcall'
args.lua:143: in function 'invoke'
args.lua:167: in function 'checkallpass'
args.lua:144: in function 'invoke'
args.lua:168: in function 'checkallpass'
debuglibargs.lua:132: in main chunk
[C]: in ?'
--- checkallpass

View File

@@ -24,7 +24,6 @@
--- checkallerrors
- io.lines(<userdata>) ...bad argument...
--- checkallerrors
needcheck io.lines(nil) function: 0x100112cf0
- io.lines(true) ...bad argument...
- io.lines(<table>) ...bad argument...
- io.lines(<function>) ...bad argument...

View File

@@ -23,11 +23,11 @@
- package.loadlib(<thread>) ...bad argument...
====== package.seeall ======
--- checkallpass
fail package.seeall(<table>) 'attempt to call a nil value'
- package.seeall(<table>)
--- checkallerrors
badmsg package.seeall(nil) template='bad argument' actual='attempt to call a nil value'
badmsg package.seeall('abc') template='bad argument' actual='attempt to call a nil value'
badmsg package.seeall(1.25) template='bad argument' actual='attempt to call a nil value'
badmsg package.seeall(true) template='bad argument' actual='attempt to call a nil value'
badmsg package.seeall(<function>) template='bad argument' actual='attempt to call a nil value'
badmsg package.seeall(<thread>) template='bad argument' actual='attempt to call a nil value'
- package.seeall(nil) ...bad argument...
- package.seeall('abc') ...bad argument...
- package.seeall(1.25) ...bad argument...
- package.seeall(true) ...bad argument...
- package.seeall(<function>) ...bad argument...
- package.seeall(<thread>) ...bad argument...

View File

@@ -14,7 +14,6 @@
- lengthop(<table>) 0
--- checkallerrors
- lengthop(nil) ...attempt to get length of...
needcheck lengthop('abc') 3
- lengthop(1.25) ...attempt to get length of...
- lengthop(true) ...attempt to get length of...
- lengthop(<function>) ...attempt to get length of...
@@ -564,43 +563,35 @@ needcheck lengthop('abc') 3
- bracketop(<table>,<thread>)
--- checkallerrors
- bracketop(nil,'abc') ...attempt to index...
needcheck bracketop('abc','abc') nil
- bracketop(1.25,'abc') ...attempt to index...
- bracketop(true,'abc') ...attempt to index...
- bracketop(<function>,'abc') ...attempt to index...
- bracketop(<thread>,'abc') ...attempt to index...
- bracketop(nil,1.25) ...attempt to index...
needcheck bracketop('abc',1.25) nil
- bracketop(1.25,1.25) ...attempt to index...
- bracketop(true,1.25) ...attempt to index...
- bracketop(<function>,1.25) ...attempt to index...
- bracketop(<thread>,1.25) ...attempt to index...
- bracketop(nil,true) ...attempt to index...
needcheck bracketop('abc',true) nil
- bracketop(1.25,true) ...attempt to index...
- bracketop(true,true) ...attempt to index...
- bracketop(<function>,true) ...attempt to index...
- bracketop(<thread>,true) ...attempt to index...
- bracketop(nil,<table>) ...attempt to index...
needcheck bracketop('abc',<table>) nil
- bracketop(1.25,<table>) ...attempt to index...
- bracketop(true,<table>) ...attempt to index...
- bracketop(<function>,<table>) ...attempt to index...
- bracketop(<thread>,<table>) ...attempt to index...
- bracketop(nil,<function>) ...attempt to index...
needcheck bracketop('abc',<function>) nil
- bracketop(1.25,<function>) ...attempt to index...
- bracketop(true,<function>) ...attempt to index...
- bracketop(<function>,<function>) ...attempt to index...
- bracketop(<thread>,<function>) ...attempt to index...
- bracketop(nil,<thread>) ...attempt to index...
needcheck bracketop('abc',<thread>) nil
- bracketop(1.25,<thread>) ...attempt to index...
- bracketop(true,<thread>) ...attempt to index...
- bracketop(<function>,<thread>) ...attempt to index...
- bracketop(<thread>,<thread>) ...attempt to index...
--- checkallerrors
needcheck bracketop(<table>) nil
====== . ======
--- checkallpass
- dotop(<table>,'abc')
@@ -611,43 +602,35 @@ needcheck bracketop(<table>) nil
- dotop(<table>,<thread>)
--- checkallerrors
- dotop(nil,'abc') ...attempt to index...
needcheck dotop('abc','abc') nil
- dotop(1.25,'abc') ...attempt to index...
- dotop(true,'abc') ...attempt to index...
- dotop(<function>,'abc') ...attempt to index...
- dotop(<thread>,'abc') ...attempt to index...
- dotop(nil,1.25) ...attempt to index...
needcheck dotop('abc',1.25) nil
- dotop(1.25,1.25) ...attempt to index...
- dotop(true,1.25) ...attempt to index...
- dotop(<function>,1.25) ...attempt to index...
- dotop(<thread>,1.25) ...attempt to index...
- dotop(nil,true) ...attempt to index...
needcheck dotop('abc',true) nil
- dotop(1.25,true) ...attempt to index...
- dotop(true,true) ...attempt to index...
- dotop(<function>,true) ...attempt to index...
- dotop(<thread>,true) ...attempt to index...
- dotop(nil,<table>) ...attempt to index...
needcheck dotop('abc',<table>) nil
- dotop(1.25,<table>) ...attempt to index...
- dotop(true,<table>) ...attempt to index...
- dotop(<function>,<table>) ...attempt to index...
- dotop(<thread>,<table>) ...attempt to index...
- dotop(nil,<function>) ...attempt to index...
needcheck dotop('abc',<function>) nil
- dotop(1.25,<function>) ...attempt to index...
- dotop(true,<function>) ...attempt to index...
- dotop(<function>,<function>) ...attempt to index...
- dotop(<thread>,<function>) ...attempt to index...
- dotop(nil,<thread>) ...attempt to index...
needcheck dotop('abc',<thread>) nil
- dotop(1.25,<thread>) ...attempt to index...
- dotop(true,<thread>) ...attempt to index...
- dotop(<function>,<thread>) ...attempt to index...
- dotop(<thread>,<thread>) ...attempt to index...
--- checkallerrors
needcheck dotop(<table>) nil
====== and ======
--- checkallpass
- andop(nil,nil)