--
-- tests/base/test_uuid.lua
-- Automated test suite for UUID generation.
-- Copyright (c) 2008-2012 Jason Perkins and the Premake project
--

	local suite = test.declare("os_uuid")


--
-- Setup and teardown
--

	local builtin_print, result

	function suite.setup()
		builtin_print = print
		print = function(value)
			result = value
		end
	end

	function suite.teardown()
		print = builtin_print
	end


--
-- Make sure the return value looks like a UUID.
--

	function suite.returnsValidUUID()
		local g = os.uuid()
		test.istrue(#g == 36)
		for i=1,36 do
			local ch = g:sub(i,i)
			test.istrue(ch:find("[ABCDEF0123456789-]"))
		end
		test.isequal("-", g:sub(9,9))
		test.isequal("-", g:sub(14,14))
		test.isequal("-", g:sub(19,19))
		test.isequal("-", g:sub(24,24))
	end


--
-- Make sure the value returned is deterministic if a name is provided.
--

	function suite.isDeterministic_onName()
		test.isequal("885E8F4B-F43D-0EE7-FD55-99BD69B47448", os.uuid("MyValue"))
	end
