-- Kør: luajit tests/test_adHitchCreep.lua (fra repo-roden) dofile("FS25_ADSmartPickup/adHitchCreep.lua") local C = ADHitchCreep 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 -- plan: vognens trækøje i traktorens rum set fra krogen (x = til siden, z < 0 = bagved) check("plan: inden for rummelig rækkevidde -> kobl direkte", C.plan({x = 0.4, z = -2.0}), "attach") check("plan: 5 m lige bagved -> bak", C.plan({x = 0.3, z = -5.0}), "creep") check("plan: lidt til siden -> bak", C.plan({x = -1.2, z = -6.0}), "creep") check("plan: for langt til siden -> intet", C.plan({x = 2.5, z = -5.0}), "none") check("plan: for langt bagved -> intet", C.plan({x = 0, z = -12.0}), "none") check("plan: foran traktoren -> intet", C.plan({x = 0, z = 5.0}), "none") check("plan: ingen vogn -> intet", C.plan(nil), "none") -- skridt under bakningen check("skridt: vognen inden for rækkevidde -> færdig", C.step({inRange = true, distance = 2.5, startDistance = 6, elapsedMs = 3000}), "done") check("skridt: på vej -> kør", C.step({inRange = false, distance = 4, startDistance = 6, elapsedMs = 3000}), "drive") check("skridt: for længe -> giv op", C.step({inRange = false, distance = 4, startDistance = 6, elapsedMs = C.CREEP_TIMEOUT_MS}), "giveUp") check("skridt: kører væk fra vognen -> giv op", C.step({inRange = false, distance = 7.5, startDistance = 6, elapsedMs = 3000}), "giveUp") check("skridt: forbi vognen uden kobling -> giv op", C.step({inRange = false, distance = 0.3, startDistance = 6, elapsedMs = 3000, passed = true}), "giveUp") print(failures == 0 and "\nALLE TESTS OK" or ("\n" .. failures .. " FEJL")) os.exit(failures == 0 and 0 or 1)