mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-13 19:48:00 +07:00
246 lines
6.7 KiB
Lua
246 lines
6.7 KiB
Lua
local evo = require 'evolved'
|
|
|
|
do
|
|
local f1, f2 = evo.id(2)
|
|
evo.set(f1, evo.REQUIRES)
|
|
evo.set(f2, evo.REQUIRES, evo.get(f1, evo.REQUIRES))
|
|
local f1_rs = evo.get(f1, evo.REQUIRES)
|
|
local f2_rs = evo.get(f2, evo.REQUIRES)
|
|
assert(f1_rs and f2_rs and #f1_rs == 0 and #f2_rs == 0 and f1_rs ~= f2_rs)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(2)
|
|
local f3 = evo.builder():require(f1):require(f2):spawn()
|
|
local f3_rs = evo.get(f3, evo.REQUIRES)
|
|
assert(f3_rs and #f3_rs == 2 and f3_rs[1] == f1 and f3_rs[2] == f2)
|
|
end
|
|
|
|
do
|
|
local f1, f2 = evo.id(2)
|
|
local f3 = evo.builder():require(f1, f2):spawn()
|
|
local f3_rs = evo.get(f3, evo.REQUIRES)
|
|
assert(f3_rs and #f3_rs == 2 and f3_rs[1] == f1 and f3_rs[2] == f2)
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
evo.set(f1, evo.REQUIRES, { f2 })
|
|
evo.set(f3, evo.REQUIRES, { f1, f2 })
|
|
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
end
|
|
|
|
do
|
|
local e = evo.builder():set(f1):spawn()
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
end
|
|
|
|
do
|
|
local e = evo.spawn { [f1] = true }
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
|
|
evo.remove(e, f2)
|
|
assert(not evo.has(e, f2))
|
|
|
|
local e2 = evo.clone(e)
|
|
assert(evo.has(e2, f2))
|
|
assert(evo.get(e2, f2) == true)
|
|
|
|
local e3 = evo.clone(e, { [f3] = true })
|
|
assert(evo.has(e3, f2))
|
|
assert(evo.get(e3, f2) == true)
|
|
end
|
|
|
|
do
|
|
local f0 = evo.id()
|
|
local q0 = evo.builder():include(f0):spawn()
|
|
|
|
local e1 = evo.builder():set(f0):spawn()
|
|
local e2 = evo.builder():set(f0):spawn()
|
|
local e3 = evo.builder():set(f0):set(f2, false):spawn()
|
|
|
|
evo.batch_set(q0, f1)
|
|
|
|
assert(evo.has(e1, f2) and evo.get(e1, f2) == true)
|
|
assert(evo.has(e2, f2) and evo.get(e2, f2) == true)
|
|
assert(evo.has(e3, f2) and evo.get(e3, f2) == false)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
evo.set(f1, evo.REQUIRES, { f2 })
|
|
evo.set(f2, evo.DEFAULT, 42)
|
|
evo.set(f3, evo.REQUIRES, { f1, f2 })
|
|
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == 42)
|
|
end
|
|
|
|
do
|
|
local e = evo.builder():set(f1):spawn()
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == 42)
|
|
end
|
|
|
|
do
|
|
local e = evo.spawn { [f1] = true, }
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == 42)
|
|
|
|
evo.remove(e, f2)
|
|
assert(not evo.has(e, f2))
|
|
|
|
local e2 = evo.clone(e)
|
|
assert(evo.has(e2, f2))
|
|
assert(evo.get(e2, f2) == 42)
|
|
|
|
local e3 = evo.clone(e, { [f3] = true })
|
|
assert(evo.has(e3, f2))
|
|
assert(evo.get(e3, f2) == 42)
|
|
end
|
|
|
|
do
|
|
local f0 = evo.id()
|
|
local q0 = evo.builder():include(f0):spawn()
|
|
|
|
local e1 = evo.builder():set(f0):spawn()
|
|
local e2 = evo.builder():set(f0):spawn()
|
|
local e3 = evo.builder():set(f0):set(f2, 21):spawn()
|
|
|
|
evo.batch_set(q0, f1)
|
|
|
|
assert(evo.has(e1, f2) and evo.get(e1, f2) == 42)
|
|
assert(evo.has(e2, f2) and evo.get(e2, f2) == 42)
|
|
assert(evo.has(e3, f2) and evo.get(e3, f2) == 21)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
evo.set(f1, evo.REQUIRES, { f2 })
|
|
evo.set(f2, evo.REQUIRES, { f3 })
|
|
evo.set(f3, evo.DEFAULT, 42)
|
|
evo.set(f3, evo.REQUIRES, { f1, f2 })
|
|
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3))
|
|
assert(evo.get(e, f3) == 42)
|
|
end
|
|
|
|
do
|
|
local e = evo.builder():set(f1):spawn()
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3))
|
|
assert(evo.get(e, f3) == 42)
|
|
end
|
|
|
|
do
|
|
local e = evo.spawn { [f1] = true }
|
|
assert(evo.has(e, f2))
|
|
assert(evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3))
|
|
assert(evo.get(e, f3) == 42)
|
|
|
|
evo.remove(e, f2, f3)
|
|
assert(not evo.has(e, f2))
|
|
assert(not evo.has(e, f3))
|
|
|
|
local e2 = evo.clone(e, { [f1] = 21 })
|
|
assert(evo.has(e2, f1) and evo.get(e2, f1) == 21)
|
|
assert(evo.has(e2, f2) and evo.get(e2, f2) == true)
|
|
assert(evo.has(e2, f3) and evo.get(e2, f3) == 42)
|
|
|
|
local e3 = evo.clone(e, { [f3] = 21 })
|
|
assert(evo.has(e3, f1) and evo.get(e3, f1) == true)
|
|
assert(evo.has(e3, f2) and evo.get(e3, f2) == true)
|
|
assert(evo.has(e3, f3) and evo.get(e3, f3) == 21)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3 = evo.id(3)
|
|
evo.set(f1, evo.REQUIRES, { f2 })
|
|
evo.set(f2, evo.REQUIRES, { f3 })
|
|
evo.set(f3, evo.REQUIRES, { f1, f2, f3 })
|
|
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1, 42)
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == true)
|
|
end
|
|
|
|
do
|
|
local e = evo.builder():set(f1, 42):spawn()
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == true)
|
|
end
|
|
|
|
do
|
|
local e = evo.spawn { [f1] = 42 }
|
|
assert(evo.has(e, f1) and evo.get(e, f1) == 42)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == true)
|
|
|
|
evo.remove(e, f2, f3)
|
|
assert(not evo.has(e, f2))
|
|
assert(not evo.has(e, f3))
|
|
|
|
local e2 = evo.clone(e, { [f1] = 21 })
|
|
assert(evo.has(e2, f1) and evo.get(e2, f1) == 21)
|
|
assert(evo.has(e2, f2) and evo.get(e2, f2) == true)
|
|
assert(evo.has(e2, f3) and evo.get(e2, f3) == true)
|
|
|
|
local e3 = evo.clone(e, { [f3] = 21 })
|
|
assert(evo.has(e3, f1) and evo.get(e3, f1) == 42)
|
|
assert(evo.has(e3, f2) and evo.get(e3, f2) == true)
|
|
assert(evo.has(e3, f3) and evo.get(e3, f3) == 21)
|
|
end
|
|
end
|
|
|
|
do
|
|
local f1, f2, f3, f4 = evo.id(4)
|
|
|
|
do
|
|
evo.set(f1, evo.REQUIRES, { f2 })
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
end
|
|
evo.set(f1, evo.REQUIRES, { f2, f3 })
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == true)
|
|
end
|
|
evo.set(f3, evo.REQUIRES, { f4 })
|
|
do
|
|
local e = evo.id()
|
|
evo.set(e, f1)
|
|
assert(evo.has(e, f2) and evo.get(e, f2) == true)
|
|
assert(evo.has(e, f3) and evo.get(e, f3) == true)
|
|
assert(evo.has(e, f4) and evo.get(e, f4) == true)
|
|
end
|
|
end
|
|
end
|