package.path = "./?.lua;./?/init.lua;" .. package.path local T = require("tests.harness") love = love or require("tests.love_stub") local OnlinePanel = require("src.import.OnlinePanel") local SyncState = require("src.sync.SyncState") local Client = require("src.online.Client") local NAME_TABLES = { ["red/data/generated/pokemon.lua"] = [[return { MR_MIME = { name = "MR.MIME" }, NIDORAN_M = { name = "NIDORAN♂" }, NIDORAN_F = { name = "NIDORAN♀" }, FARFETCHD = { name = "FARFETCH'D" }, KADABRA = { name = "KADABRA" }, PIKACHU = { name = "PIKACHU" }, ALAKAZAM = { name = "ALAKAZAM" } }]], ["gold/data/generated/pokemon.lua"] = [[return { MR__MIME = { name = "MR.MIME" }, HO_OH = { name = "HO-OH" }, FARFETCH_D = { name = "FARFETCH'D" }, SLOWPOKE = { name = "SLOWPOKE" }, SLOWKING = { name = "SLOWKING" } }]], ["gold/data/generated/items.lua"] = [[return { KINGS_ROCK = { name = "KING'S ROCK" }, METAL_COAT = { name = "METAL COAT" }, UP_GRADE = { name = "UP-GRADE" } }]], } local function withNameTables(fn) local OnlineSprites = require("src.online.OnlineSprites") local savedRead = OnlineSprites.readBytes local reads = {} OnlineSprites.readBytes = function(version, path) local full = tostring(version) .. "/" .. path reads[full] = (reads[full] or 0) + 1 return NAME_TABLES[full] end OnlinePanel.resetNames() local ok, err = pcall(fn, reads) OnlineSprites.readBytes = savedRead OnlinePanel.resetNames() if not ok then error(err, 0) end end -- ------------------------------------------------------------- names T.eq(OnlinePanel.sanitizeName("RED"), "RED", "a plain name survives") T.eq(OnlinePanel.sanitizeName('RD&"x\''), "REDx", "the relay's five banned characters are dropped") T.eq(OnlinePanel.sanitizeName(" RED "), "RED", "outer space is trimmed") T.eq(#OnlinePanel.sanitizeName(("A"):rep(40)), OnlinePanel.NAME_MAX, "a long name is capped at 16") T.check(OnlinePanel.nameValid("RED#417"), "RED#417 is a valid display name") T.check(not OnlinePanel.nameValid("AB"), "two characters is too short") T.check(not OnlinePanel.nameValid(("A"):rep(17)), "seventeen is too long") T.check(not OnlinePanel.nameValid("RE