-- Unit tests for [[Module:Ustring]]. Click talk page to run tests.
local p = require('Module:UnitTests')

-- Test sub function
function p:test_sub()
	self:preprocess_equals_sandbox_many('{{#invoke:ustring', 'sub', {
		{' hello | 1 | 3', ' he'},
		{' s1 = hello | 1 | 3', 'hel'},
		{' s1 = hello | 0 | 3', 'hel'},
		{' s1 = hello | -3 ', 'llo'},
		{' hello | -3 ', 'lo '},
	})
end

-- Test error supression
function p:test_onerror()
	self:preprocess_equals_sandbox_many('{{#invoke:ustring', 'sub', {
		{' hello | 1 | 3 | onerror = foo', ' he'},
		{' s1 = hello | bar | 3 | onerror = foo', 'foo'},
		{' s1 = hello | 0 |  | onerror = foo', 'foo'},
	})
end

-- Test find/replace
function p:test_gsub()
	self:preprocess_equals_sandbox_many('{{#invoke:ustring', 'gsub', {
		{' hello world | world | x ', ' hello x '},
		{' hello world| world | x ', ' hello world'},
	})
end

return p