---
-- test_helpers.lua
--
-- Helper functions for setting up workspaces and projects, etc.
--
-- Author Jason Perkins
-- Copyright (c) 2008-2016 Jason Perkins and the Premake project.
---

	local p = premake

	local m = p.modules.self_test



	function m.createWorkspace()
		local wks = workspace("MyWorkspace")
		configurations { "Debug", "Release" }
		local prj = m.createProject(wks)
		return wks, prj
	end



	-- Eventually we'll want to deprecate this one and move everyone
	-- over to createWorkspace() instead (4 Sep 2015).

	function m.createsolution()
		local wks = workspace("MySolution")
		configurations { "Debug", "Release" }
		local prj = m.createproject(wks)
		return wks, prj
	end



	function m.createProject(wks)
		local n = #wks.projects + 1
		if n == 1 then n = "" end

		local prj = project ("MyProject" .. n)
		language "C++"
		kind "ConsoleApp"
		return prj
	end

	function m.createGroup(wks)		
		local prj = group ("MyGroup" .. (#wks.groups + 1))
		return prj
	end


	function m.getWorkspace(wks)
		p.oven.bake()
		return p.global.getWorkspace(wks.name)
	end


	function m.getRule(name)
		p.oven.bake()
		return p.global.getRule(name)
	end


	function m.getProject(wks, i)
		wks = m.getWorkspace(wks)
		return p.workspace.getproject(wks, i or 1)
	end



	function m.getConfig(prj, buildcfg, platform)
		local wks = m.getWorkspace(prj.workspace)
		prj = p.workspace.getproject(wks, prj.name)
		return p.project.getconfig(prj, buildcfg, platform)
	end



	m.print = print



	p.alias(m, "createProject", "createproject")
	p.alias(m, "getConfig", "getconfig")
	p.alias(m, "getProject", "getproject")
	p.alias(m, "getWorkspace", "getsolution")
