mirror of
https://github.com/BlackMATov/evolved.lua.git
synced 2026-01-06 03:21:18 +07:00
first queries wip
This commit is contained in:
@@ -1,5 +1,18 @@
|
||||
local evo = require 'evolved'
|
||||
|
||||
---@generic V
|
||||
---@param list V[]
|
||||
---@return boolean
|
||||
---@nodiscard
|
||||
local function __is_sorted(list)
|
||||
for i = 1, #list - 1 do
|
||||
if list[i] > list[i + 1] then
|
||||
return false
|
||||
end
|
||||
end
|
||||
return true
|
||||
end
|
||||
|
||||
do
|
||||
local e1, e2 = evo.id(), evo.id()
|
||||
assert(e1 ~= e2)
|
||||
@@ -663,3 +676,74 @@ do
|
||||
assert(evo.get(e, f2) == nil)
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2, f3, f4 = evo.id(4)
|
||||
|
||||
do
|
||||
local q = evo.id()
|
||||
evo.set(q, evo.INCLUDE_LIST)
|
||||
assert(evo.has_all(q, evo.INCLUDE_LIST, evo.EXCLUDE_LIST))
|
||||
|
||||
local include_list, exclude_list = evo.get(q, evo.INCLUDE_LIST, evo.EXCLUDE_LIST)
|
||||
assert(type(include_list) == "table" and next(include_list) == nil)
|
||||
assert(type(exclude_list) == "table" and next(exclude_list) == nil)
|
||||
end
|
||||
|
||||
do
|
||||
local q = evo.id()
|
||||
evo.set(q, evo.EXCLUDE_LIST)
|
||||
assert(evo.has_all(q, evo.EXCLUDE_LIST, evo.INCLUDE_LIST))
|
||||
|
||||
local include_list, exclude_list = evo.get(q, evo.INCLUDE_LIST, evo.EXCLUDE_LIST)
|
||||
assert(type(include_list) == "table" and next(include_list) == nil)
|
||||
assert(type(exclude_list) == "table" and next(exclude_list) == nil)
|
||||
end
|
||||
|
||||
do
|
||||
local q = evo.id()
|
||||
|
||||
evo.set(q, evo.INCLUDE_LIST, { f2, f1 })
|
||||
assert(__is_sorted(evo.get(q, evo.INCLUDE_LIST)))
|
||||
|
||||
evo.set(q, evo.EXCLUDE_LIST, { f4, f3 })
|
||||
assert(__is_sorted(evo.get(q, evo.EXCLUDE_LIST)))
|
||||
end
|
||||
end
|
||||
|
||||
do
|
||||
local f1, f2, f3, f4 = evo.id(4)
|
||||
|
||||
local q = evo.id()
|
||||
evo.set(q, evo.INCLUDE_LIST, { f2, f1 })
|
||||
evo.set(q, evo.EXCLUDE_LIST, { f3 })
|
||||
|
||||
do
|
||||
local e1 = evo.id()
|
||||
assert(evo.insert(e1, f1, 41))
|
||||
|
||||
local e2 = evo.id()
|
||||
assert(evo.insert(e2, f1, 41))
|
||||
assert(evo.insert(e2, f2, 42))
|
||||
|
||||
local e3 = evo.id()
|
||||
assert(evo.insert(e3, f1, 43))
|
||||
assert(evo.insert(e3, f2, 44))
|
||||
assert(evo.insert(e3, f3, 45))
|
||||
|
||||
local e4 = evo.id()
|
||||
assert(evo.insert(e4, f1, 45))
|
||||
assert(evo.insert(e4, f2, 46))
|
||||
assert(evo.insert(e4, f3, 47))
|
||||
assert(evo.insert(e4, f4, 48))
|
||||
|
||||
local e5 = evo.id()
|
||||
assert(evo.insert(e5, f1, 49))
|
||||
assert(evo.insert(e5, f2, 50))
|
||||
assert(evo.insert(e5, f4, 51))
|
||||
|
||||
for chunk in evo.execute(q) do
|
||||
print(chunk)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user