mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2025-12-14 12:10:23 +07:00
Compare commits
4 Commits
22302cee75
...
0c016f1b67
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
0c016f1b67 | ||
|
|
26bf586140 | ||
|
|
46f1516a55 | ||
|
|
4cd8393546 |
@@ -91,31 +91,31 @@ do
|
||||
assert(evo.has_any(e12, evo.pair(p1, evo.ANY), evo.pair(p2, evo.ANY)))
|
||||
end
|
||||
|
||||
-- do
|
||||
-- local p1, s1, p2, s2 = evo.id(4)
|
||||
-- evo.set(p1, s1)
|
||||
-- evo.set(s1, p1)
|
||||
-- evo.set(p2, s2)
|
||||
-- assert(not evo.empty(evo.pair(p1, s1)))
|
||||
-- assert(not evo.empty(evo.pair(p2, s2)))
|
||||
-- assert(not evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2)))
|
||||
-- assert(not evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2)))
|
||||
-- assert(not evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2), p1))
|
||||
-- assert(not evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2), p1))
|
||||
-- assert(not evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2), s2))
|
||||
-- assert(evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2), s2))
|
||||
-- end
|
||||
do
|
||||
local p1, s1, p2, s2 = evo.id(4)
|
||||
evo.set(p1, s1)
|
||||
evo.set(s1, p1)
|
||||
evo.set(p2, s2)
|
||||
assert(evo.empty(evo.pair(p1, s1)))
|
||||
assert(evo.empty(evo.pair(p2, s2)))
|
||||
assert(evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2)))
|
||||
assert(evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2)))
|
||||
assert(not evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2), p1))
|
||||
assert(evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2), p1))
|
||||
assert(evo.empty_all(evo.pair(p1, s1), evo.pair(p2, s2), s2))
|
||||
assert(evo.empty_any(evo.pair(p1, s1), evo.pair(p2, s2), s2))
|
||||
end
|
||||
|
||||
do
|
||||
local p1, s1 = evo.id(2)
|
||||
evo.set(p1, s1)
|
||||
evo.set(s1, p1)
|
||||
assert(not evo.has(evo.pair(p1, s1), p1))
|
||||
assert(evo.has(evo.pair(p1, s1), s1))
|
||||
assert(not evo.has(evo.pair(p1, s1), s1))
|
||||
assert(not evo.has_all(evo.pair(p1, s1), p1, s1))
|
||||
assert(evo.has_any(evo.pair(p1, s1), p1, s1))
|
||||
assert(not evo.has_any(evo.pair(p1, s1), p1, s1))
|
||||
assert(evo.get(evo.pair(p1, s1), p1) == nil)
|
||||
assert(evo.get(evo.pair(p1, s1), s1) == true)
|
||||
assert(evo.get(evo.pair(p1, s1), s1) == nil)
|
||||
end
|
||||
|
||||
do
|
||||
@@ -1117,7 +1117,7 @@ do
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
|
||||
evo.set(p, f)
|
||||
assert(not evo.empty(evo.pair(p, s)))
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
|
||||
evo.destroy(p)
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
@@ -1128,10 +1128,10 @@ do
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
|
||||
evo.set(p, f)
|
||||
assert(not evo.empty(evo.pair(p, s)))
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
|
||||
evo.destroy(s)
|
||||
assert(not evo.empty(evo.pair(p, s)))
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
|
||||
evo.destroy(p)
|
||||
assert(evo.empty(evo.pair(p, s)))
|
||||
@@ -1144,10 +1144,10 @@ do
|
||||
|
||||
evo.set(p, f, 42)
|
||||
assert(evo.has(p, f))
|
||||
assert(evo.has(evo.pair(p, s), f))
|
||||
assert(not evo.has(evo.pair(p, s), f))
|
||||
assert(not evo.has(evo.pair(s, p), f))
|
||||
assert(evo.get(p, f) == 42)
|
||||
assert(evo.get(evo.pair(p, s), f) == 42)
|
||||
assert(evo.get(evo.pair(p, s), f) == nil)
|
||||
assert(evo.get(evo.pair(s, p), f) == nil)
|
||||
end
|
||||
end
|
||||
@@ -1643,7 +1643,7 @@ do
|
||||
do
|
||||
local p, s = evo.id(2)
|
||||
evo.destroy(s)
|
||||
assert(evo.alive(evo.pair(p, s)))
|
||||
assert(not evo.alive(evo.pair(p, s)))
|
||||
end
|
||||
|
||||
do
|
||||
@@ -1723,43 +1723,26 @@ do
|
||||
assert(fst(evo.primary(e, s2, 2)) == nil)
|
||||
assert(snd(evo.primary(e, s2, 2)) == nil)
|
||||
|
||||
assert(fst(evo.primary(evo.pair(e, f), s1)) == p)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s1)) == 21)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s2)) == p)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s2)) == 42)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s1, 1)) == p)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s1, 1)) == 21)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s2, 1)) == p)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s2, 1)) == 42)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s1)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s2)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s1, 1)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s2, 1)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s1, 2)) == nil)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s1, 2)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(e, f), s2, 2)) == nil)
|
||||
assert(snd(evo.primary(evo.pair(e, f), s2, 2)) == nil)
|
||||
|
||||
assert(fst(evo.secondary(e, p)) == s1)
|
||||
assert(snd(evo.secondary(e, p)) == 21)
|
||||
assert(fst(evo.secondary(e, p, 1)) == s1)
|
||||
assert(snd(evo.secondary(e, p, 1)) == 21)
|
||||
assert(fst(evo.secondary(e, p, 2)) == s2)
|
||||
assert(snd(evo.secondary(e, p, 2)) == 42)
|
||||
assert(fst(evo.secondary(e, p, 3)) == nil)
|
||||
assert(snd(evo.secondary(e, p, 3)) == nil)
|
||||
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p)) == s1)
|
||||
assert(snd(evo.secondary(evo.pair(e, f), p)) == 21)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p, 1)) == s1)
|
||||
assert(snd(evo.secondary(evo.pair(e, f), p, 1)) == 21)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p, 2)) == s2)
|
||||
assert(snd(evo.secondary(evo.pair(e, f), p, 2)) == 42)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p)) == nil)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p, 1)) == nil)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p, 2)) == nil)
|
||||
assert(fst(evo.secondary(evo.pair(e, f), p, 3)) == nil)
|
||||
assert(snd(evo.secondary(evo.pair(e, f), p, 3)) == nil)
|
||||
|
||||
assert(fst(evo.primary(evo.pair(f, e), s1)) == nil)
|
||||
assert(snd(evo.primary(evo.pair(f, e), s1)) == nil)
|
||||
assert(fst(evo.primary(evo.pair(f, e), s2)) == nil)
|
||||
assert(snd(evo.primary(evo.pair(f, e), s2)) == nil)
|
||||
assert(fst(evo.secondary(evo.pair(f, e), p)) == nil)
|
||||
assert(snd(evo.secondary(evo.pair(f, e), p)) == nil)
|
||||
end
|
||||
|
||||
do
|
||||
@@ -1778,9 +1761,9 @@ do
|
||||
assert(evo.secondary_count(e, s2) == 0)
|
||||
|
||||
assert(evo.primary_count(evo.pair(e, f), p) == 0)
|
||||
assert(evo.primary_count(evo.pair(e, f), s1) == 1)
|
||||
assert(evo.primary_count(evo.pair(e, f), s2) == 1)
|
||||
assert(evo.secondary_count(evo.pair(e, f), p) == 2)
|
||||
assert(evo.primary_count(evo.pair(e, f), s1) == 0)
|
||||
assert(evo.primary_count(evo.pair(e, f), s2) == 0)
|
||||
assert(evo.secondary_count(evo.pair(e, f), p) == 0)
|
||||
assert(evo.secondary_count(evo.pair(e, f), s1) == 0)
|
||||
assert(evo.secondary_count(evo.pair(e, f), s2) == 0)
|
||||
|
||||
@@ -1820,8 +1803,6 @@ do
|
||||
|
||||
iter, state = evo.primaries(evo.pair(e, f), s1)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == p and component == 21)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == nil and component == nil)
|
||||
end
|
||||
|
||||
@@ -1834,8 +1815,6 @@ do
|
||||
|
||||
iter, state = evo.primaries(evo.pair(e, f), s2)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == p and component == 42)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == nil and component == nil)
|
||||
end
|
||||
end
|
||||
@@ -1869,17 +1848,72 @@ do
|
||||
|
||||
iter, state = evo.secondaries(evo.pair(e, f), p)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == s1 and component == 21)
|
||||
assert(fragment == nil and component == nil)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local p, s1, s2 = evo.id(3)
|
||||
|
||||
local e = evo.builder()
|
||||
:set(evo.pair(p, s1), 21)
|
||||
:set(evo.pair(p, s2), 42)
|
||||
:spawn()
|
||||
|
||||
do
|
||||
local iter, state = evo.each(e)
|
||||
local fragment, component = iter(state)
|
||||
assert(fragment == evo.pair(p, s1) and component == 21)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == s2 and component == 42)
|
||||
assert(fragment == evo.pair(p, s2) and component == 42)
|
||||
fragment, component = iter(state)
|
||||
assert(fragment == nil and component == nil)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
do
|
||||
local p, s1, s2 = evo.id(3)
|
||||
|
||||
local e = evo.spawn {
|
||||
[evo.pair(p, s1)] = 21,
|
||||
[evo.pair(p, s2)] = 42,
|
||||
}
|
||||
|
||||
assert(evo.has(e, evo.pair(p, s1)) and evo.get(e, evo.pair(p, s1)) == 21)
|
||||
assert(evo.has(e, evo.pair(p, s2)) and evo.get(e, evo.pair(p, s2)) == 42)
|
||||
|
||||
evo.destroy(p)
|
||||
|
||||
assert(not evo.has(e, evo.pair(p, s1)) and evo.get(e, evo.pair(p, s1)) == nil)
|
||||
assert(not evo.has(e, evo.pair(p, s2)) and evo.get(e, evo.pair(p, s2)) == nil)
|
||||
end
|
||||
|
||||
do
|
||||
local p, s1, s2 = evo.id(3)
|
||||
|
||||
local e = evo.spawn {
|
||||
[evo.pair(p, s1)] = 21,
|
||||
[evo.pair(p, s2)] = 42,
|
||||
}
|
||||
|
||||
assert(evo.has(e, evo.pair(p, s1)) and evo.get(e, evo.pair(p, s1)) == 21)
|
||||
assert(evo.has(e, evo.pair(p, s2)) and evo.get(e, evo.pair(p, s2)) == 42)
|
||||
|
||||
evo.destroy(s1)
|
||||
|
||||
assert(not evo.has(e, evo.pair(p, s1)) and evo.get(e, evo.pair(p, s1)) == nil)
|
||||
assert(evo.has(e, evo.pair(p, s2)) and evo.get(e, evo.pair(p, s2)) == 42)
|
||||
|
||||
evo.destroy(s2)
|
||||
|
||||
assert(not evo.has(e, evo.pair(p, s1)) and evo.get(e, evo.pair(p, s1)) == nil)
|
||||
assert(not evo.has(e, evo.pair(p, s2)) and evo.get(e, evo.pair(p, s2)) == nil)
|
||||
end
|
||||
end
|
||||
|
||||
-- TODO
|
||||
-- builder:has/has_all/has_any should work with wildcards / remove too?
|
||||
-- should we provide wildcard support for get operations?
|
||||
-- prevent setting pairs with dead secondary fragments
|
||||
-- process evo.ANY as single wildcard
|
||||
|
||||
1092
evolved.lua
1092
evolved.lua
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user