local describe = require("lua_test.test").describe
local test = require("lua_test.test").test
local expect = require("lua_test.test").expect
local function create_mock_actors()
return {
sakura = { name = "さくら", spot = "sakura" },
kero = { name = "うにゅう", spot = "kero" },
}
end
describe("SHIORI_ACT - transfer_req_to_var() 基本転記", function()
test("transfers reference[0]-[9] to fullwidth keys r0-r9", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnMouseClick",
base_id = "OnMouseClick",
reference = {
[0] = "0",
[1] = "button1",
[2] = "value2",
[3] = "value3",
[4] = "value4",
[5] = "value5",
[6] = "value6",
[7] = "value7",
[8] = "value8",
[9] = "value9",
},
}
local act = SHIORI_ACT.new(actors, req)
act:transfer_req_to_var()
expect(act.var["r0"]):toBe("0")
expect(act.var["r1"]):toBe("button1")
expect(act.var["r2"]):toBe("value2")
expect(act.var["r3"]):toBe("value3")
expect(act.var["r4"]):toBe("value4")
expect(act.var["r5"]):toBe("value5")
expect(act.var["r6"]):toBe("value6")
expect(act.var["r7"]):toBe("value7")
expect(act.var["r8"]):toBe("value8")
expect(act.var["r9"]):toBe("value9")
end)
test("transfers reference[0]-[9] to halfwidth keys r0-r9", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnMouseClick",
base_id = "OnMouseClick",
reference = {
[0] = "head",
[1] = "button2",
[2] = "extra",
},
}
local act = SHIORI_ACT.new(actors, req)
act:transfer_req_to_var()
expect(act.var.r0):toBe("head")
expect(act.var.r1):toBe("button2")
expect(act.var.r2):toBe("extra")
end)
test("transfers req.id to var.req_id and req.base_id to var.req_base_id", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnMouseDoubleClick",
base_id = "OnMouseClick",
reference = { [0] = "0" },
}
local act = SHIORI_ACT.new(actors, req)
act:transfer_req_to_var()
expect(act.var.req_id):toBe("OnMouseDoubleClick")
expect(act.var.req_base_id):toBe("OnMouseClick")
end)
end)
describe("SHIORI_ACT - transfer_req_to_var() 境界条件", function()
test("returns self safely when req is nil", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local act = SHIORI_ACT.new(actors, nil)
local result = act:transfer_req_to_var()
expect(result):toBe(act)
end)
test("handles sparse reference array correctly (only [0] and [2] exist)", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnMouseClick",
reference = {
[0] = "head",
[2] = "extra",
},
}
local act = SHIORI_ACT.new(actors, req)
act:transfer_req_to_var()
expect(act.var["r0"]):toBe("head")
expect(act.var["r1"]):toBe(nil)
expect(act.var["r2"]):toBe("extra")
expect(act.var["r3"]):toBe(nil)
expect(act.var.r0):toBe("head")
expect(act.var.r1):toBe(nil)
expect(act.var.r2):toBe("extra")
expect(act.var.r3):toBe(nil)
end)
test("returns self for method chaining", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnBoot",
reference = { [0] = "test" },
}
local act = SHIORI_ACT.new(actors, req)
local result = act:transfer_req_to_var()
expect(result):toBe(act)
end)
end)
describe("SHIORI_ACT - transfer_req_to_var() 統合テスト", function()
test("does not set req-derived keys in var when not called", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnMouseClick",
reference = { [0] = "head", [1] = "button1" },
}
local act = SHIORI_ACT.new(actors, req)
expect(act.var["r0"]):toBe(nil)
expect(act.var["r1"]):toBe(nil)
expect(act.var.r0):toBe(nil)
expect(act.var.r1):toBe(nil)
expect(act.var.req_id):toBe(nil)
expect(act.var.req_base_id):toBe(nil)
end)
test("coexists with transfer_date_to_var() without key conflicts", function()
local SHIORI_ACT = require("pasta.shiori.act")
local actors = create_mock_actors()
local req = {
id = "OnSecondChange",
base_id = "OnSecondChange",
date = {
year = 2026,
month = 2,
day = 7,
hour = 14,
min = 30,
sec = 45,
wday = 6,
},
reference = {
[0] = "ref0",
[1] = "ref1",
},
}
local act = SHIORI_ACT.new(actors, req)
act:transfer_date_to_var()
act:transfer_req_to_var()
expect(act.var.year):toBe(2026)
expect(act.var.month):toBe(2)
expect(act.var.day):toBe(7)
expect(act.var.hour):toBe(14)
expect(act.var.min):toBe(30)
expect(act.var.sec):toBe(45)
expect(act.var.wday):toBe(6)
expect(act.var["年"]):toBe("2026年")
expect(act.var["曜日"]):toBe("土曜日")
expect(act.var.week):toBe("Saturday")
expect(act.var["時12"]):toBe("午後2時")
expect(act.var["r0"]):toBe("ref0")
expect(act.var["r1"]):toBe("ref1")
expect(act.var.r0):toBe("ref0")
expect(act.var.r1):toBe("ref1")
expect(act.var.req_id):toBe("OnSecondChange")
expect(act.var.req_base_id):toBe("OnSecondChange")
end)
end)