mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-15 04:15:28 +07:00
351 lines
7.8 KiB
Lua
351 lines
7.8 KiB
Lua
local evo = require 'evolved'
|
|
|
|
do
|
|
local e1, e2 = evo.id(), evo.id()
|
|
assert(e1 ~= e2)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
local e = evo.id()
|
|
|
|
do
|
|
assert(not evo.has(e, f1))
|
|
assert(not evo.has(e, f2))
|
|
assert(not evo.has_all(e, f1, f2))
|
|
assert(not evo.has_any(e, f1, f2))
|
|
end
|
|
|
|
do
|
|
assert(evo.get(e, f1) == nil)
|
|
assert(evo.get(e, f2) == nil)
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == nil and c2 == nil)
|
|
end
|
|
|
|
assert(evo.insert(e, f1, 41))
|
|
|
|
do
|
|
assert(evo.has(e, f1))
|
|
assert(not evo.has(e, f2))
|
|
assert(not evo.has_all(e, f1, f2))
|
|
assert(evo.has_any(e, f1, f2))
|
|
end
|
|
|
|
do
|
|
assert(evo.get(e, f1) == 41)
|
|
assert(evo.get(e, f2) == nil)
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == 41 and c2 == nil)
|
|
end
|
|
|
|
assert(evo.insert(e, f2, 42))
|
|
|
|
do
|
|
assert(evo.has(e, f1))
|
|
assert(evo.has(e, f2))
|
|
assert(evo.has_all(e, f1, f2))
|
|
assert(evo.has_any(e, f1, f2))
|
|
end
|
|
|
|
do
|
|
assert(evo.get(e, f1) == 41)
|
|
assert(evo.get(e, f2) == 42)
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == 41 and c2 == 42)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
local e = evo.id()
|
|
|
|
assert(evo.insert(e, f1, 41))
|
|
assert(not evo.insert(e, f1, 42))
|
|
|
|
assert(evo.insert(e, f2, 42))
|
|
assert(not evo.insert(e, f1, 42))
|
|
assert(not evo.insert(e, f2, 41))
|
|
|
|
do
|
|
assert(evo.has_all(e, f1, f2))
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == 41 and c2 == 42)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
|
|
do
|
|
local e = evo.id()
|
|
assert(evo.insert(e, f1, 41))
|
|
assert(evo.insert(e, f2, 42))
|
|
|
|
evo.remove(e, f1)
|
|
|
|
assert(not evo.has(e, f1))
|
|
assert(evo.has(e, f2))
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == nil and c2 == 42)
|
|
end
|
|
|
|
do
|
|
local e = evo.id()
|
|
assert(evo.insert(e, f1, 41))
|
|
assert(evo.insert(e, f2, 42))
|
|
|
|
evo.remove(e, f2)
|
|
|
|
assert(evo.has(e, f1))
|
|
assert(not evo.has(e, f2))
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == 41 and c2 == nil)
|
|
end
|
|
|
|
do
|
|
local e = evo.id()
|
|
assert(evo.insert(e, f1, 41))
|
|
assert(evo.insert(e, f2, 42))
|
|
|
|
evo.remove(e, f1, f2)
|
|
|
|
assert(not evo.has_any(e, f1, f2))
|
|
|
|
local c1, c2 = evo.get(e, f1, f2)
|
|
assert(c1 == nil and c2 == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
local e1, e2 = evo.id(), evo.id()
|
|
|
|
assert(evo.insert(e1, f1, 41))
|
|
assert(evo.insert(e2, f2, 42))
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == nil)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == nil)
|
|
end
|
|
|
|
assert(evo.insert(e1, f2, 43))
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == nil)
|
|
end
|
|
|
|
assert(evo.insert(e2, f1, 44))
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == 44)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
|
|
do
|
|
local e1, e2 = evo.id(), evo.id()
|
|
|
|
assert(evo.insert(e1, f1, 41))
|
|
assert(evo.insert(e1, f2, 43))
|
|
assert(evo.insert(e2, f1, 44))
|
|
assert(evo.insert(e2, f2, 42))
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == 44)
|
|
end
|
|
|
|
evo.remove(e1, f1)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == nil and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == 44)
|
|
end
|
|
|
|
evo.remove(e2, f1)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == nil and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == nil)
|
|
end
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
local e1, e2 = evo.id(), evo.id()
|
|
|
|
assert(evo.insert(e1, f1, 41))
|
|
assert(evo.insert(e1, f2, 43))
|
|
assert(evo.insert(e2, f1, 44))
|
|
assert(evo.insert(e2, f2, 42))
|
|
|
|
evo.clear(e1)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == nil and evo.get(e1, f2) == nil)
|
|
assert(evo.get(e2, f2) == 42 and evo.get(e2, f1) == 44)
|
|
end
|
|
|
|
evo.clear(e2)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == nil and evo.get(e1, f2) == nil)
|
|
assert(evo.get(e2, f2) == nil and evo.get(e2, f1) == nil)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
|
|
local e = evo.id()
|
|
|
|
assert(not evo.assign(e, f1, 41))
|
|
assert(evo.get(e, f1) == nil)
|
|
|
|
assert(evo.insert(e, f1, 41))
|
|
assert(evo.assign(e, f1, 42))
|
|
assert(evo.get(e, f1) == 42)
|
|
|
|
assert(not evo.assign(e, f2, 43))
|
|
assert(evo.get(e, f2) == nil)
|
|
|
|
assert(evo.insert(e, f2, 43))
|
|
assert(evo.assign(e, f2, 44))
|
|
assert(evo.get(e, f2) == 44)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
|
|
local e = evo.id()
|
|
|
|
evo.set(e, f1, 41)
|
|
assert(evo.get(e, f1) == 41)
|
|
assert(evo.get(e, f2) == nil)
|
|
|
|
evo.set(e, f1, 43)
|
|
assert(evo.get(e, f1) == 43)
|
|
assert(evo.get(e, f2) == nil)
|
|
|
|
evo.set(e, f2, 42)
|
|
assert(evo.get(e, f1) == 43)
|
|
assert(evo.get(e, f2) == 42)
|
|
|
|
evo.set(e, f2, 44)
|
|
assert(evo.get(e, f1) == 43)
|
|
assert(evo.get(e, f2) == 44)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
local e1, e2 = evo.id(), evo.id()
|
|
|
|
evo.set(e1, f1, 41)
|
|
evo.set(e2, f1, 42)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == nil)
|
|
assert(evo.get(e2, f1) == 42 and evo.get(e2, f2) == nil)
|
|
end
|
|
|
|
evo.set(e1, f2, 43)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f1) == 42 and evo.get(e2, f2) == nil)
|
|
end
|
|
|
|
evo.set(e2, f2, 44)
|
|
|
|
do
|
|
assert(evo.get(e1, f1) == 41 and evo.get(e1, f2) == 43)
|
|
assert(evo.get(e2, f1) == 42 and evo.get(e2, f2) == 44)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3, f4 = evo.id(), evo.id(), evo.id(), evo.id()
|
|
evo.set(f1, evo.DEFAULT, 42)
|
|
evo.set(f2, evo.DEFAULT, false)
|
|
|
|
local e = evo.id()
|
|
|
|
evo.set(e, f1)
|
|
evo.set(e, f2)
|
|
evo.set(e, f3)
|
|
evo.set(e, f4, false)
|
|
|
|
assert(evo.get(e, f1) == 42)
|
|
assert(evo.get(e, f2) == false)
|
|
assert(evo.get(e, f3) == true)
|
|
assert(evo.get(e, f4) == false)
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3, f4, f5 = evo.id(), evo.id(), evo.id(), evo.id(), evo.id()
|
|
evo.set(f1, evo.CONSTRUCT, function(_, a, b) return a - b end)
|
|
evo.set(f2, evo.CONSTRUCT, function(_, c) return c end)
|
|
evo.set(f3, evo.CONSTRUCT, function() return nil end)
|
|
evo.set(f4, evo.CONSTRUCT, function() return false end)
|
|
evo.set(f5, evo.CONSTRUCT, function(e) return e end)
|
|
|
|
local e = evo.id()
|
|
|
|
evo.insert(e, f1, 43, 1)
|
|
evo.insert(e, f2, false)
|
|
evo.insert(e, f3, 43)
|
|
evo.insert(e, f4, 43)
|
|
evo.insert(e, f5)
|
|
|
|
assert(evo.get(e, f1) == 42)
|
|
assert(evo.get(e, f2) == false)
|
|
assert(evo.get(e, f3) == true)
|
|
assert(evo.get(e, f4) == false)
|
|
assert(evo.get(e, f5) == e)
|
|
|
|
evo.assign(e, f1, 42, 2)
|
|
evo.assign(e, f2, true)
|
|
evo.assign(e, f3, 43)
|
|
evo.assign(e, f4, 43)
|
|
evo.assign(e, f5, 43)
|
|
|
|
assert(evo.get(e, f1) == 40)
|
|
assert(evo.get(e, f2) == true)
|
|
assert(evo.get(e, f3) == true)
|
|
assert(evo.get(e, f4) == false)
|
|
assert(evo.get(e, f5) == e)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(), evo.id()
|
|
evo.set(f1, evo.DEFAULT, 42)
|
|
evo.set(f1, evo.CONSTRUCT, function() return nil end)
|
|
evo.set(f2, evo.DEFAULT, 42)
|
|
evo.set(f2, evo.CONSTRUCT, function() return false end)
|
|
|
|
local e = evo.id()
|
|
|
|
evo.set(e, f1, 43)
|
|
evo.set(e, f2, 43)
|
|
|
|
assert(evo.get(e, f1) == 42)
|
|
assert(evo.get(e, f2) == false)
|
|
|
|
evo.set(e, f1, 43)
|
|
evo.set(e, f2, 43)
|
|
|
|
assert(evo.get(e, f1) == 42)
|
|
assert(evo.get(e, f2) == false)
|
|
end
|