new evolved.name function

This commit is contained in:
BlackMATov
2025-06-30 23:21:46 +07:00
parent b5d8ced4c8
commit 5eb8902d5a
5 changed files with 206 additions and 21 deletions

View File

@@ -0,0 +1,43 @@
local evo = require 'evolved'
do
local id = evo.id()
local index, version, options = evo.unpack(id)
assert(evo.name(id) == string.format('$%d#%d:%d:%d', id, index, version, options))
evo.set(id, evo.NAME, 'hello')
assert(evo.name(id) == 'hello')
evo.set(id, evo.NAME, 'world')
assert(evo.name(id) == 'world')
evo.destroy(id)
assert(evo.name(id) == string.format('$%d#%d:%d:%d', id, index, version, options))
end
do
local id1, id2, id3, id4, id5 = evo.id(5)
evo.set(id1, evo.NAME, 'id1')
evo.set(id2, evo.NAME, 'id2')
evo.set(id3, evo.NAME, 'id3')
evo.set(id4, evo.NAME, 'id4')
evo.set(id5, evo.NAME, 'id5')
do
local id1_n, id3_n, id5_n = evo.name(id1, id3, id5)
assert(id1_n == 'id1')
assert(id3_n == 'id3')
assert(id5_n == 'id5')
end
do
local id1_n, id2_n, id3_n, id4_n, id5_n = evo.name(id1, id2, id3, id4, id5)
assert(id1_n == 'id1')
assert(id2_n == 'id2')
assert(id3_n == 'id3')
assert(id4_n == 'id4')
assert(id5_n == 'id5')
end
end

View File

@@ -406,6 +406,40 @@ do
end
end
do
do
local p, s = evo.id(2)
evo.set(p, evo.NAME, 'p')
evo.set(s, evo.NAME, 's')
local ps_chunk = evo.chunk(evo.pair(p, s))
assert(tostring(ps_chunk) == '<${p,s}>')
end
do
local p, s = evo.id(2)
evo.set(p, evo.NAME, 'p')
evo.set(s, evo.NAME, 's')
evo.destroy(p)
local ps_chunk = evo.chunk(evo.pair(p, s))
assert(tostring(ps_chunk) ~= '<${p,s}>')
end
do
local p, s = evo.id(2)
evo.set(p, evo.NAME, 'p')
evo.set(s, evo.NAME, 's')
evo.destroy(s)
local ps_chunk = evo.chunk(evo.pair(p, s))
assert(tostring(ps_chunk) ~= '<${p,s}>')
end
do
local p, s = evo.id(2)
evo.set(p, evo.NAME, 'p')
evo.set(s, evo.NAME, 's')
evo.destroy(p, s)
local ps_chunk = evo.chunk(evo.pair(p, s))
assert(tostring(ps_chunk) ~= '<${p,s}>')
end
end
-- TODO:
-- How should required fragments work with pairs?
-- How can we set defaults for paired fragments?