mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-16 14:11:16 +07:00
proof of concept REQUIRES fragment impl
This commit is contained in:
@@ -22,3 +22,176 @@ do
|
||||
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)
|
||||
evo.set(f1, evo.REQUIRES, { 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)
|
||||
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 = evo.id(2)
|
||||
evo.set(f1, evo.REQUIRES, { f2 })
|
||||
evo.set(f2, evo.DEFAULT, 42)
|
||||
|
||||
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)
|
||||
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)
|
||||
|
||||
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)
|
||||
assert(evo.has(e2, f2))
|
||||
assert(evo.get(e2, f2) == true)
|
||||
assert(evo.has(e2, f3))
|
||||
assert(evo.get(e2, f3) == 42)
|
||||
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)
|
||||
assert(evo.has(e2, f1) and evo.get(e2, f1) == 42)
|
||||
assert(evo.has(e2, f2) and evo.get(e2, f2) == true)
|
||||
assert(evo.has(e2, f3) and evo.get(e2, f3) == true)
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user