From c1075b54df04ae236a9ad380f98291dcffa57062 Mon Sep 17 00:00:00 2001 From: BlackMATov Date: Mon, 10 Mar 2025 02:27:33 +0700 Subject: [PATCH] more bits for version --- develop/untests.lua | 29 +++++++++++++++++++++++++++-- evolved.lua | 6 +++--- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/develop/untests.lua b/develop/untests.lua index 7427235..ab5183c 100644 --- a/develop/untests.lua +++ b/develop/untests.lua @@ -7,6 +7,31 @@ do assert(e1 ~= e2) end +do + local i = evo.id() + + for _ = 1, 0xFFE do + local _, v0 = evo.unpack(i) + evo.destroy(i) + i = evo.id() + local _, v1 = evo.unpack(i) + assert(v1 == v0 + 1) + end + + do + local _, v = evo.unpack(i) + assert(v == 0xFFF) + end + + evo.destroy(i) + i = evo.id() + + do + local _, v = evo.unpack(i) + assert(v == 1) + end +end + do do local i0 = evo.id(0) @@ -5055,9 +5080,9 @@ do end do - local id = evo.pack(0xFFFFF, 0x7FF) + local id = evo.pack(0xFFFFF, 0xFFF) local index, version = evo.unpack(id) - assert(index == 0xFFFFF and version == 0x7FF) + assert(index == 0xFFFFF and version == 0xFFF) end do diff --git a/evolved.lua b/evolved.lua index 4b315c6..ebfa6c6 100644 --- a/evolved.lua +++ b/evolved.lua @@ -247,7 +247,7 @@ local function __release_id(id) __lua_error('id is not acquired or already released') end - shifted_version = shifted_version == 0x7FF00000 + shifted_version = shifted_version == 0xFFF00000 and 0x100000 or shifted_version + 0x100000 @@ -4507,8 +4507,8 @@ __evolved_pack = function(index, version) __lua_error('id index out of range [1;0xFFFFF]') end - if version < 1 or version > 0x7FF then - __lua_error('id version out of range [1;0x7FF]') + if version < 1 or version > 0xFFF then + __lua_error('id version out of range [1;0xFFF]') end local shifted_version = version * 0x100000