feat(fields): ren statusfunktion til Fields-listen
This commit is contained in:
@@ -79,3 +79,21 @@ function ADFieldView.distanceText(meters)
|
|||||||
if meters < 1000 then return string.format("%d m", math.floor(meters + 0.5)) end
|
if meters < 1000 then return string.format("%d m", math.floor(meters + 0.5)) end
|
||||||
return (string.gsub(string.format("%.1f km", meters / 1000), "%.", ","))
|
return (string.gsub(string.format("%.1f km", meters / 1000), "%.", ","))
|
||||||
end
|
end
|
||||||
|
|
||||||
|
-- ---- status pr. mark (Fields-listen) ----
|
||||||
|
|
||||||
|
-- Årsager der betyder "kan ikke" (rød) — resten er "venter" (gul).
|
||||||
|
ADFieldView.ERROR_REASONS = {
|
||||||
|
spu_field_reason_noRig = true, spu_field_reason_cannotDo = true, spu_field_reason_tooWide = true,
|
||||||
|
spu_field_reason_tooNarrow = true, spu_field_reason_widthUnknown = true, spu_field_reason_noSowFruit = true,
|
||||||
|
}
|
||||||
|
|
||||||
|
-- s = {hasMarker, working, awaiting, startRequested, reasonKey} -> "running"|"waiting"|"error"|"stopped"
|
||||||
|
function ADFieldView.fieldStatus(s)
|
||||||
|
if not s.hasMarker then return "error" end
|
||||||
|
if s.reasonKey ~= nil and ADFieldView.ERROR_REASONS[s.reasonKey] then return "error" end
|
||||||
|
if s.awaiting or s.startRequested then return "waiting" end
|
||||||
|
if s.working then return s.reasonKey ~= nil and "waiting" or "running" end
|
||||||
|
if s.reasonKey ~= nil then return "waiting" end
|
||||||
|
return "stopped"
|
||||||
|
end
|
||||||
|
|||||||
@@ -0,0 +1,22 @@
|
|||||||
|
-- Kør: luajit tests/test_fieldStatus.lua (fra repo-roden)
|
||||||
|
dofile("FS25_ADSmartPickup/adFieldModel.lua")
|
||||||
|
dofile("FS25_ADSmartPickup/adFieldView.lua")
|
||||||
|
local V = ADFieldView
|
||||||
|
local failures = 0
|
||||||
|
local function check(name, actual, expected)
|
||||||
|
if actual == expected then print("OK " .. name) else
|
||||||
|
failures = failures + 1
|
||||||
|
print(string.format("FAIL %s: forventede %s, fik %s", name, tostring(expected), tostring(actual)))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
check("mangler markør", V.fieldStatus({hasMarker = false}), "error")
|
||||||
|
check("arbejder", V.fieldStatus({hasMarker = true, working = true}), "running")
|
||||||
|
check("arbejder men venter på maskine", V.fieldStatus({hasMarker = true, working = true, reasonKey = "spu_field_reason_allBusy"}), "waiting")
|
||||||
|
check("for bred", V.fieldStatus({hasMarker = true, working = true, reasonKey = "spu_field_reason_tooWide"}), "error")
|
||||||
|
check("ingen maskine", V.fieldStatus({hasMarker = true, reasonKey = "spu_field_reason_noRig"}), "error")
|
||||||
|
check("regn", V.fieldStatus({hasMarker = true, working = true, reasonKey = "spu_field_reason_rain"}), "waiting")
|
||||||
|
check("venter på spilleren (høster)", V.fieldStatus({hasMarker = true, awaiting = true}), "waiting")
|
||||||
|
check("start bestilt", V.fieldStatus({hasMarker = true, startRequested = true}), "waiting")
|
||||||
|
check("i ro", V.fieldStatus({hasMarker = true}), "stopped")
|
||||||
|
print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL"))
|
||||||
|
os.exit(failures == 0 and 0 or 1)
|
||||||
Reference in New Issue
Block a user