--Go to the talk page to see the results of the tests --Consider making sure that other modules that rely heavily on this module (E.g. Module:Template parameter value) also pass their testcases local p = require('Module:UnitTests')  local frame = mw.getCurrentFrame() local function preprocess(text, IsPrepared) 	local content = mw.text.unstrip(frame:preprocess(text)) 	if IsPrepared then 		content = mw.text.decode(content) 	end 	return content end  function p:_internal_test(module, name) 	--All PrepareText runs have keepComments set to true for testing convenience 	--Test conditions: 	--1) The escaped text should match our expectation for escaped text 	--2) The escaped text should always preprocess to the same as the original text (we only nowiki nowiki'd content) 	local PrepareTextTestN = 1 	local function TestPrepareText(...) 		local OriginalString = "" 		local ExpectedEscapedString = "" 		local args = {...} 		for i = 1, #args do 			OriginalString = OriginalString .. args[i] 			ExpectedEscapedString = ExpectedEscapedString .. (i%2 == 1 and args[i] or mw.text.nowiki(args[i])) 		end 		local ModuleEscapedString = module.PrepareText(OriginalString, true) 		self:equals(name.."PrepareText Escape Test "..PrepareTextTestN, ExpectedEscapedString, ModuleEscapedString, {nowiki=1}) 		self:equals(name.."PrepareText Preprocess Test "..PrepareTextTestN, preprocess(OriginalString), preprocess(ModuleEscapedString, true), {nowiki=1}) 		PrepareTextTestN = PrepareTextTestN + 1 	end 	 	--== PrepareText ==-- 	--Standard comment escape 	TestPrepareText( 	--	R------, NW------, R----- 		"BA" 	)  	--Even when there's no end, the content inside is escaped 	TestPrepareText( 	--	R----------, NW----------, R------ 		"", ">|B}}" 	)  	--A decently complex case 	TestPrepareText( 	--	R-------------, NW-----------, R--, NW------------, R---, NW------, 		"Hey!\nA", "</", "nowiki", 	--	R-------, NW---------, R------------------------------ 		">|Should see|Shouldn't see}}" 	)  	--Another decently complex case 	TestPrepareText( 	--	R---------------------------------------------------------------, 		"|A B=Success}}" 	) end  function p:test_live() 	p:_internal_test(require("Module:Wikitext Parsing"), "Live ") end  function p:test_sandbox() 	p:_internal_test(require("Module:Wikitext Parsing/খেলাঘর"), "Sandbox ") end  -- Code for testing ParseTemplates that doesn't exactly work (not a primary feature so not a huge concern) --[====[ 	--Test conditions: 	--1) The parsed information matches the expected information 	local ParseTemplatesTestN = 1 	local function TestParseTemplates(OriginalString, ExpectedInformation) 		local ModuleInformation = module.ParseTemplates(OriginalString)[1] 		ModuleInformation.Children = nil --This isn't gonna be tested properly rn due to reasons 		mw.logObject(ModuleInformation) 		self:equals_deep(name.."ParseTemplates Test "..ParseTemplatesTestN, ExpectedInformation, ModuleInformation, {nowiki=1}) 		ParseTemplatesTestN = ParseTemplatesTestN + 1 	end  	--== ParseTemplates ==-- 	-- Just the one test since this feature isn't entirely developed 	local TestString = "|A=B]]|A B=Success}}" 	TestParseTemplates( 		"\nA"..TestString.."B\n", 		{ 			Text = TestString, Name = "User:Aidan9382.templates/dummy", 			ArgOrder = {"1", "2", "3", "4", "5", "6", "", "a", "A", "A B"}, 			Args = { 				["1"]="A", ["2"]="B", ["3"]="C B { } } {", 				["4"]="D", ["5"]="E\n|F", 				["6"]="G", [""]="", a="", 				A="A=B", 				["A B"]="Success" 			} 		} 	) ]====]  return p