local function get_skin(skin_name)
	local skin = skins.get(skin_name)
		or skins.__fuzzy_match_skin_name("(unittest)", skin_name, true)
	return skin and skin:get_key() or nil
end

local function run_unittest()
	local PATH = ":UNITTEST:"

	-- -----
	-- `.`: Simple register + retrieve operations
	assert(skins.register_skin(PATH, "player.DotSep.png"))
	assert(skins.register_skin(PATH, "player._DotSep_666_.1.png"))
	assert(skins.register_skin(PATH, "character._DotSep_With-Dash-.png"))

	assert(get_skin("player.DotSep"))
	assert(get_skin("player._DotSep_666_.1"))
	assert(get_skin("player.DotSep.1") == nil)
	assert(get_skin("character._DotSep_With-Dash-"))

	-- -----
	-- Ambiguous skin names (filenames without extension). Register + retrieve
	skins.new("player_AmbSki")
	skins.new("player_AmbSki_1")
	skins.new("player_AmbSki_666_1")

	assert(get_skin("player_AmbSki"))
	assert(get_skin("player_AmbSki_") == nil)
	assert(get_skin("player_AmbSki_1"))
	assert(get_skin("player_AmbSki_666_1"))
	-- There are no `__` patterns as they were silently removed by string.split


	-- -----
	-- Mod Storage backwards compatibility
	-- Match the old `_` notation to `.`-separated skins
	skins.register_skin(PATH, "player.ComPat42.png")
	skins.register_skin(PATH, "player.ComPat42.5.png")
	skins.register_skin(PATH, "player._Com_Pat_42.png")
	skins.register_skin(PATH, "player._Com_Pat_42.1.png")

	assert(get_skin("player_ComPat42") == "player.ComPat42")
	assert(get_skin("player_ComPat42_5") == "player.ComPat42.5")
	assert(get_skin("player_Com_Pat_42") == "player._Com_Pat_42")
	assert(get_skin("player_Com_Pat_42_1") == "player._Com_Pat_42.1")

	error("Unittest passed! Please disable them now.")
end

run_unittest()

