--
-- tests/config/test_linkinfo.lua
-- Test the config object's link target accessor.
-- Copyright (c) 2012-2013 Jess Perkins and the Premake project
--

	local p = premake
	local suite = test.declare("config_linkinfo")
	local config = p.config


--
-- Setup and teardown
--

	local wks, prj

	function suite.setup()
		p.action.set("test")
		wks, prj = test.createWorkspace()
		kind "StaticLib"
		system "Windows"
	end

	local function prepare()
		local cfg = test.getconfig(prj, "Debug")
		return config.getlinkinfo(cfg)
	end


--
-- Directory should use targetdir() value if present.
--

	function suite.directoryIsTargetDir_onTargetDir()
		targetdir "../bin"
		i = prepare()
		test.isequal("../bin", path.getrelative(os.getcwd(), i.directory))
	end


--
-- Shared library should use implibdir() if present.
--

	function suite.directoryIsImpLibDir_onImpLibAndTargetDir()
		kind "SharedLib"
		targetdir "../bin"
		implibdir "../lib"
		i = prepare()
		test.isequal("../lib", path.getrelative(os.getcwd(), i.directory))
	end


--
-- Base name should use the project name by default.
--

	function suite.basenameIsProjectName_onNoTargetName()
		i = prepare()
		test.isequal("MyProject", i.basename)
	end


--
-- Base name should use targetname() if present.
--

	function suite.basenameIsTargetName_onTargetName()
		targetname "MyTarget"
		i = prepare()
		test.isequal("MyTarget", i.basename)
	end


--
-- Shared library should use implibname() if present.
--

	function suite.basenameIsImplibName_onTargetName()
		kind "SharedLib"
		targetname "MyTarget"
		implibname "MyTargetImports"
		i = prepare()
		test.isequal("MyTargetImports", i.basename)
	end


--
-- Test library name formatting.
--

	function suite.nameFormatting_onWindows()
		system "Windows"
		i = prepare()
		test.isequal("MyProject.lib", i.name)
	end

	function suite.nameFormatting_onLinux()
		system "Linux"
		i = prepare()
		test.isequal("libMyProject.a", i.name)
	end


--
-- The import library extension should not change if the a
-- custom target extension is set.
--

	function suite.impLibExtensionUnmodified_OnCustomTargetExt()
		system "windows"
		kind "SharedLib"
		targetextension ".mil"
		i = prepare()
		test.isequal("MyProject.lib", i.name)
	end
