aboutsummaryrefslogtreecommitdiff
path: root/tests/test.lua
blob: cc07ee86763d9905d1580f35e958d8bcfd46f20f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
#!/usr/bin/env lua

local mod = require( "testmod" )
local F
do
  local type, unpack = type, table.unpack or unpack
  function F( ... )
    local args, n = { ... }, select( '#', ... )
    for i = 1, n do
      local t = type( args[ i ] )
      if t ~= "string" and t ~= "number" and t ~= "boolean" then
        args[ i ] = t
      end
    end
    return unpack( args, 1, n )
  end
end


print( mod.isinteger( 1 ) )
print( mod.isinteger( 0 ) )
print( mod.isinteger( 1234567 ) )
print( mod.isinteger( 12.3 ) )
print( mod.isinteger( math.huge ) )
print( mod.isinteger( math.sqrt( -1 ) ) )


print( mod.rotate( 1, 1, 2, 3, 4, 5, 6 ) )
print( mod.rotate(-1, 1, 2, 3, 4, 5, 6 ) )
print( mod.rotate( 4, 1, 2, 3, 4, 5, 6 ) )
print( mod.rotate( -4, 1, 2, 3, 4, 5, 6 ) )


print( mod.strtonum( "+123" ) )
print( mod.strtonum( " 123 " ) )
print( mod.strtonum( "-1.23" ) )
print( mod.strtonum( " 123 abc" ) )
print( mod.strtonum( "jkl" ) )


local a, b, c = mod.requiref()
print( type( a ), type( b ), type( c ),
       a.boolean, b.boolean, c.boolean,
       type( requiref1 ), type( requiref2 ), type( requiref3 ) )

local proxy, backend = {}, {}
setmetatable( proxy, { __index = backend, __newindex = backend } )
print( rawget( proxy, 1 ), rawget( backend, 1 ) )
print( mod.getseti( proxy, 1 ) )
print( rawget( proxy, 1 ), rawget( backend, 1 ) )
print( mod.getseti( proxy, 1 ) )
print( rawget( proxy, 1 ), rawget( backend, 1 ) )

-- tests for Lua 5.1
print(mod.tonumber(12))
print(mod.tonumber("12"))
print(mod.tonumber("0"))
print(mod.tonumber(false))
print(mod.tonumber("error"))

print(mod.tointeger(12))
print(mod.tointeger("12"))
print(mod.tointeger("0"))
print( "aaa" )
print(mod.tointeger(math.pi))
print( "bbb" )
print(mod.tointeger(false))
print(mod.tointeger("error"))

print(mod.len("123"))
print(mod.len({ 1, 2, 3}))
print(pcall(mod.len, true))
local ud, meta = mod.newproxy()
meta.__len = function() return 5 end
print(mod.len(ud))
meta.__len = function() return true end
print(pcall(mod.len, ud))

print(mod.copy(true, "string", {}, 1))

print(mod.rawxetp())
print(mod.rawxetp("I'm back"))

print(F(mod.globals()), mod.globals() == _G)

local t = {}
print(F(mod.subtable(t)))
local x, msg = mod.subtable(t)
print(F(x, msg, x == t.xxx))

print(F(mod.udata()))
print(mod.udata("nosuchtype"))

print(F(mod.uservalue()))

print(mod.getupvalues())

print(mod.absindex("hi", true))

print(mod.tolstring("string"))
local t = setmetatable({}, {
  __tostring = function(v) return "mytable" end
})
print(mod.tolstring( t ) )
local t = setmetatable({}, {
  __tostring = function(v) return nil end
})
print(pcall(mod.tolstring, t))