-- Really a test for lua_lessthan()
local N = 1000
do --- numbers
math.randomseed(42)
local t = {}
for i=1,N do t[i] = math.random(N) end
table.sort(t)
for i=2,N do assert(t[i-1] <= t[i]) end
end
do --- strings
math.randomseed(42)
local t = {}
for i=1,N do t[i] = math.random(1, N/10).."" end
table.sort(t)
for i=2,N do assert(t[i-1] <= t[i]) end
end
do --- tables
math.randomseed(42)
local mt = { __lt = function(a,b) return a[1] < b[1] end }
local t = {}
for i=1,N do t[i] = setmetatable({ math.random(N) }, mt) end
table.sort(t)
for i=2,N do assert(t[i-1][1] <= t[i][1]) end
end