return function()local x=script.Parent local T=x.Parent local Y=require(x.support)local P=(require(T)).isMatch describe("\115\108\097\115\104 \104\097\110\100\108\105\110\103 - \112\111\115\105\120",function()beforeAll(function()return Y.resetPathSep()end)afterAll(function()return Y.resetPathSep()end)afterEach(function()return Y.resetPathSep()end)it("\115\104\111\117\108\100 \109\097\116\099\104 \097 \108\105\116\101\114\097\108 \115\116\114\105\110\103",function()assert(not P("\097\047\097","\040\097\047\098\041"))assert(P("\097\047\098","\040\097\047\098\041"))assert(not P("\097\047\099","\040\097\047\098\041"))assert(not P("\098\047\097","\040\097\047\098\041"))assert(not P("\098\047\098","\040\097\047\098\041"))assert(not P("\098\047\099","\040\097\047\098\041"))assert(not P("\097\047\097","\097\047\098"))assert(P("\097\047\098","\097\047\098"))assert(not P("\097\047\099","\097\047\098"))assert(not P("\098\047\097","\097\047\098"))assert(not P("\098\047\098","\097\047\098"))assert(not P("\098\047\099","\097\047\098"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \097\110 \097\114\114\097\121 \111\102 \108\105\116\101\114\097\108 \115\116\114\105\110\103\115",function()assert(not P("\097\047\097","\097\047\098"))assert(P("\097\047\098","\097\047\098"))assert(not P("\097\047\099","\097\047\098"))assert(not P("\098\047\097","\097\047\098"))assert(not P("\098\047\098","\097\047\098"))assert(P("\098\047\098","\098\047\098"))assert(not P("\098\047\099","\097\047\098"))end)it("\115\104\111\117\108\100 \115\117\112\112\111\114\116 \114\101\103\101\120 \108\111\103\105\099\097\108 \111\114",function()assert(P("\097\047\097","\097\047\040\097\124\099\041"))assert(not P("\097\047\098","\097\047\040\097\124\099\041"))assert(P("\097\047\099","\097\047\040\097\124\099\041"))assert(P("\097\047\097","\097\047\040\097\124\098\124\099\041"))assert(P("\097\047\098","\097\047\040\097\124\098\124\099\041"))assert(P("\097\047\099","\097\047\040\097\124\098\124\099\041"))end)itFIXME("\115\104\111\117\108\100 \115\117\112\112\111\114\116 \114\101\103\101\120 \114\097\110\103\101\115",function()assert(not P("\097\047\097","\097\047\091\098-\099\093"))assert(P("\097\047\098","\097\047\091\098-\099\093"))assert(P("\097\047\099","\097\047\091\098-\099\093"))assert(P("\097\047\097","\097\047\091\097-\122\093"))assert(P("\097\047\098","\097\047\091\097-\122\093"))assert(P("\097\047\099","\097\047\091\097-\122\093"))assert(not P("\097\047\120\047\121","\097\047\091\097-\122\093"))assert(P("\097\047\120","\097\047\091\097-\122\093"))end)it("\115\104\111\117\108\100 \115\117\112\112\111\114\116 \115\105\110\103\108\101 \103\108\111\098\115 \040\042\041",function()assert(P("\097","\042"))assert(P("\098","\042"))assert(not P("\097\047\097","\042"))assert(not P("\097\047\098","\042"))assert(not P("\097\047\099","\042"))assert(not P("\097\047\120","\042"))assert(not P("\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\098","\042"))assert(not P("\097\047\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042"))assert(not P("\120\047\121","\042"))assert(not P("\122\047\122","\042"))assert(not P("\097","\042\047\042"))assert(not P("\098","\042\047\042"))assert(P("\097\047\097","\042\047\042"))assert(P("\097\047\098","\042\047\042"))assert(P("\097\047\099","\042\047\042"))assert(P("\097\047\120","\042\047\042"))assert(not P("\097\047\097\047\097","\042\047\042"))assert(not P("\097\047\097\047\098","\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042"))assert(P("\120\047\121","\042\047\042"))assert(P("\122\047\122","\042\047\042"))assert(not P("\097","\042\047\042\047\042"))assert(not P("\098","\042\047\042\047\042"))assert(not P("\097\047\097","\042\047\042\047\042"))assert(not P("\097\047\098","\042\047\042\047\042"))assert(not P("\097\047\099","\042\047\042\047\042"))assert(not P("\097\047\120","\042\047\042\047\042"))assert(P("\097\047\097\047\097","\042\047\042\047\042"))assert(P("\097\047\097\047\098","\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042"))assert(not P("\120\047\121","\042\047\042\047\042"))assert(not P("\122\047\122","\042\047\042\047\042"))assert(not P("\097","\042\047\042\047\042\047\042"))assert(not P("\098","\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\042\047\042\047\042\047\042"))assert(not P("\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\042\047\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\042\047\042\047\042\047\042\047\042"))assert(not P("\097","\097\047\042"))assert(not P("\098","\097\047\042"))assert(P("\097\047\097","\097\047\042"))assert(P("\097\047\098","\097\047\042"))assert(P("\097\047\099","\097\047\042"))assert(P("\097\047\120","\097\047\042"))assert(not P("\097\047\097\047\097","\097\047\042"))assert(not P("\097\047\097\047\098","\097\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042"))assert(not P("\120\047\121","\097\047\042"))assert(not P("\122\047\122","\097\047\042"))assert(not P("\097","\097\047\042\047\042"))assert(not P("\098","\097\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\042"))assert(P("\097\047\097\047\097","\097\047\042\047\042"))assert(P("\097\047\097\047\098","\097\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\042"))assert(not P("\097","\097\047\042\047\042\047\042"))assert(not P("\098","\097\047\042\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\042\047\042"))assert(not P("\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\042\047\042\047\042"))assert(not P("\097","\097\047\042\047\097"))assert(not P("\098","\097\047\042\047\097"))assert(not P("\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\098","\097\047\042\047\097"))assert(not P("\097\047\099","\097\047\042\047\097"))assert(not P("\097\047\120","\097\047\042\047\097"))assert(P("\097\047\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\097\047\098","\097\047\042\047\097"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\097"))assert(not P("\120\047\121","\097\047\042\047\097"))assert(not P("\122\047\122","\097\047\042\047\097"))assert(not P("\097","\097\047\042\047\098"))assert(not P("\098","\097\047\042\047\098"))assert(not P("\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\098","\097\047\042\047\098"))assert(not P("\097\047\099","\097\047\042\047\098"))assert(not P("\097\047\120","\097\047\042\047\098"))assert(not P("\097\047\097\047\097","\097\047\042\047\098"))assert(P("\097\047\097\047\098","\097\047\042\047\098"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\098"))assert(not P("\120\047\121","\097\047\042\047\098"))assert(not P("\122\047\122","\097\047\042\047\098"))end)it("\115\104\111\117\108\100 \115\117\112\112\111\114\116 \103\108\111\098\115\116\097\114\115 \040\042\042\041",function()assert(P("\097","\097"))assert(not P("\097\047","\097"))assert(not P("\097\047\097","\097"))assert(not P("\097\047\098","\097"))assert(not P("\097\047\099","\097"))assert(not P("\097\047\120","\097"))assert(not P("\097\047\120\047\121","\097"))assert(not P("\097\047\120\047\121\047\122","\097"))assert(P("\097","\042"))assert(P("\097\047","\042",{relaxSlashes=true}))assert(P("\097\047","\042\123\044\047\125"))assert(not P("\097\047\097","\042"))assert(not P("\097\047\098","\042"))assert(not P("\097\047\099","\042"))assert(not P("\097\047\120","\042"))assert(not P("\097\047\120\047\121","\042"))assert(not P("\097\047\120\047\121\047\122","\042"))assert(not P("\097","\042\047"))assert(P("\097\047","\042\047"))assert(not P("\097\047\097","\042\047"))assert(not P("\097\047\098","\042\047"))assert(not P("\097\047\099","\042\047"))assert(not P("\097\047\120","\042\047"))assert(not P("\097\047\120\047\121","\042\047"))assert(not P("\097\047\120\047\121\047\122","\042\047"))assert(not P("\097","\042\047\042"))assert(not P("\097\047","\042\047\042"))assert(P("\097\047\097","\042\047\042"))assert(P("\097\047\098","\042\047\042"))assert(P("\097\047\099","\042\047\042"))assert(P("\097\047\120","\042\047\042"))assert(not P("\097\047\120\047\121","\042\047\042"))assert(not P("\097\047\120\047\121\047\122","\042\047\042"))assert(P("\097","\042\042"))assert(P("\097\047","\042\042"))assert(P("\097\047\097","\042\042"))assert(P("\097\047\098","\042\042"))assert(P("\097\047\099","\042\042"))assert(P("\097\047\120","\042\042"))assert(P("\097\047\120\047\121","\042\042"))assert(P("\097\047\120\047\121\047\122","\042\042"))assert(not P("\097\047","\042\042\047\097"))assert(not P("\097\047\098","\042\042\047\097"))assert(not P("\097\047\099","\042\042\047\097"))assert(not P("\097\047\120","\042\042\047\097"))assert(not P("\097\047\120\047\121\047\122","\042\042\047\097"))assert(P("\097\047\120\047\121\047\122\047\097","\042\042\047\097"))assert(P("\097","\042\042\047\097"))assert(P("\097\047\097","\042\042\047\097"))assert(not P("\097","\097\047\042"))assert(not P("\097\047","\097\047\042"))assert(P("\097\047\097","\097\047\042"))assert(P("\097\047\098","\097\047\042"))assert(P("\097\047\099","\097\047\042"))assert(P("\097\047\120","\097\047\042"))assert(not P("\097\047\120\047\121","\097\047\042"))assert(not P("\097\047\120\047\121\047\122","\097\047\042"))assert(P("\097","\097\047\042\042"))assert(P("\097\047","\097\047\042\042"))assert(P("\097\047\097","\097\047\042\042"))assert(P("\097\047\098","\097\047\042\042"))assert(P("\097\047\099","\097\047\042\042"))assert(P("\097\047\120","\097\047\042\042"))assert(P("\097\047\120\047\121","\097\047\042\042"))assert(P("\097\047\120\047\121\047\122","\097\047\042\042"))assert(not P("\097","\097\047\042\042\047\042"))assert(not P("\097\047","\097\047\042\042\047\042"))assert(P("\097\047\097","\097\047\042\042\047\042"))assert(P("\097\047\098","\097\047\042\042\047\042"))assert(P("\097\047\099","\097\047\042\042\047\042"))assert(P("\097\047\120","\097\047\042\042\047\042"))assert(P("\097\047\120\047\121","\097\047\042\042\047\042"))assert(P("\097\047\120\047\121\047\122","\097\047\042\042\047\042"))assert(not P("\097","\097\047\042\042\047\042\042\047\042"))assert(not P("\097\047","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\097","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\098","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\099","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\120","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\120\047\121","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\120\047\121\047\122","\097\047\042\042\047\042\042\047\042"))assert(P("\097\047\098\047\102\111\111\047\098\097\114\047\098\097\122\046\113\117\120","\097\047\098\047\042\042\047\098\097\114\047\042\042\047\042\046\042"))assert(P("\097\047\098\047\098\097\114\047\098\097\122\046\113\117\120","\097\047\098\047\042\042\047\098\097\114\047\042\042\047\042\046\042"))end)it("\115\104\111\117\108\100 \115\117\112\112\111\114\116 \110\101\103\097\116\105\111\110 \112\097\116\116\101\114\110\115",function()assert(P("\097\047\097","\033\097\047\098"))assert(not P("\097\047\098","\033\097\047\098"))assert(P("\097\047\099","\033\097\047\098"))assert(P("\098\047\097","\033\097\047\098"))assert(P("\098\047\098","\033\097\047\098"))assert(P("\098\047\099","\033\097\047\098"))assert(P("\097\047\097",{"\042\047\042","\033\097\047\098";"\033\042\047\099"}))assert(P("\097\047\098",{"\042\047\042","\033\097\047\098","\033\042\047\099"}))assert(P("\097\047\099",{"\042\047\042";"\033\097\047\098","\033\042\047\099"}))assert(P("\098\047\097",{"\042\047\042","\033\097\047\098";"\033\042\047\099"}))assert(P("\098\047\098",{"\042\047\042","\033\097\047\098";"\033\042\047\099"}))assert(P("\098\047\099",{"\042\047\042";"\033\097\047\098";"\033\042\047\099"}))assert(P("\097\047\097",{"\033\097\047\098";"\033\042\047\099"}))assert(P("\097\047\098",{"\033\097\047\098","\033\042\047\099"}))assert(P("\097\047\099",{"\033\097\047\098";"\033\042\047\099"}))assert(P("\098\047\097",{"\033\097\047\098","\033\042\047\099"}))assert(P("\098\047\098",{"\033\097\047\098","\033\042\047\099"}))assert(P("\098\047\099",{"\033\097\047\098","\033\042\047\099"}))assert(P("\097\047\097",{"\033\097\047\098","\033\097\047\099"}))assert(P("\097\047\098",{"\033\097\047\098","\033\097\047\099"}))assert(P("\097\047\099",{"\033\097\047\098","\033\097\047\099"}))assert(P("\098\047\097",{"\033\097\047\098","\033\097\047\099"}))assert(P("\098\047\098",{"\033\097\047\098","\033\097\047\099"}))assert(P("\098\047\099",{"\033\097\047\098";"\033\097\047\099"}))assert(P("\097\047\097","\033\097\047\040\098\041"))assert(not P("\097\047\098","\033\097\047\040\098\041"))assert(P("\097\047\099","\033\097\047\040\098\041"))assert(P("\098\047\097","\033\097\047\040\098\041"))assert(P("\098\047\098","\033\097\047\040\098\041"))assert(P("\098\047\099","\033\097\047\040\098\041"))assert(P("\097\047\097","\033\040\097\047\098\041"))assert(not P("\097\047\098","\033\040\097\047\098\041"))assert(P("\097\047\099","\033\040\097\047\098\041"))assert(P("\098\047\097","\033\040\097\047\098\041"))assert(P("\098\047\098","\033\040\097\047\098\041"))assert(P("\098\047\099","\033\040\097\047\098\041"))end)it("\115\104\111\117\108\100 \119\111\114\107 \119\105\116\104 \102\105\108\101 \101\120\116\101\110\115\105\111\110\115",function()assert(not P("\097\046\116\120\116","\097\047\042\042\047\042\046\116\120\116"))assert(P("\097\047\098\046\116\120\116","\097\047\042\042\047\042\046\116\120\116"))assert(P("\097\047\120\047\121\046\116\120\116","\097\047\042\042\047\042\046\116\120\116"))assert(not P("\097\047\120\047\121\047\122",{"\097\047\042\042\047\042\046\116\120\116"}))assert(not P("\097\046\116\120\116","\097\047\042\046\116\120\116"))assert(P("\097\047\098\046\116\120\116","\097\047\042\046\116\120\116"))assert(not P("\097\047\120\047\121\046\116\120\116","\097\047\042\046\116\120\116"))assert(not P("\097\047\120\047\121\047\122","\097\047\042\046\116\120\116"))assert(P("\097\046\116\120\116","\097\042\046\116\120\116"))assert(not P("\097\047\098\046\116\120\116","\097\042\046\116\120\116"))assert(not P("\097\047\120\047\121\046\116\120\116","\097\042\046\116\120\116"))assert(not P("\097\047\120\047\121\047\122","\097\042\046\116\120\116"))assert(P("\097\046\116\120\116","\042\046\116\120\116"))assert(not P("\097\047\098\046\116\120\116","\042\046\116\120\116"))assert(not P("\097\047\120\047\121\046\116\120\116","\042\046\116\120\116"))assert(not P("\097\047\120\047\121\047\122","\042\046\116\120\116"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \111\110\101 \100\105\114\101\099\116\111\114\121 \108\101\118\101\108 \119\105\116\104 \097 \115\105\110\103\108\101 \115\116\097\114 \040\042\041",function()assert(not P("\047\097","\042\047"))assert(not P("\047\097","\042\047\042\047\042"))assert(not P("\047\097","\042\047\042\047\042\047\042"))assert(not P("\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\047\097","\047\042\047"))assert(not P("\047\097","\097\047\042"))assert(not P("\047\097","\097\047\042\047\042"))assert(not P("\047\097","\097\047\042\047\042\047\042"))assert(not P("\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\047\097","\097\047\042\047\097"))assert(not P("\047\097","\097\047\042\047\098"))assert(not P("\047\097\047","\042"))assert(not P("\047\097\047","\042\042\047\042",{strictSlashes=true}))assert(not P("\047\097\047","\042\047"))assert(not P("\047\097\047","\042\047\042",{strictSlashes=true}))assert(not P("\047\097\047","\042\047\042\047\042"))assert(not P("\047\097\047","\042\047\042\047\042\047\042"))assert(not P("\047\097\047","\042\047\042\047\042\047\042\047\042"))assert(not P("\047\097\047","\047\042",{strictSlashes=true}))assert(not P("\047\097\047","\097\047\042"))assert(not P("\047\097\047","\097\047\042\047\042"))assert(not P("\047\097\047","\097\047\042\047\042\047\042"))assert(not P("\047\097\047","\097\047\042\047\042\047\042\047\042"))assert(not P("\047\097\047","\097\047\042\047\097"))assert(not P("\047\097\047","\097\047\042\047\098"))assert(not P("\047\097\098","\042"))assert(not P("\047\097\098\099","\042"))assert(not P("\047\098","\042"))assert(not P("\047\098","\042\047"))assert(not P("\047\098","\042\047\042\047\042"))assert(not P("\047\098","\042\047\042\047\042\047\042"))assert(not P("\047\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\047\098","\047\042\047"))assert(not P("\047\098","\097\047\042"))assert(not P("\047\098","\097\047\042\047\042"))assert(not P("\047\098","\097\047\042\047\042\047\042"))assert(not P("\047\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\047\098","\097\047\042\047\097"))assert(not P("\047\098","\097\047\042\047\098"))assert(not P("\097","\042\047"))assert(not P("\097","\042\047\042"))assert(not P("\097","\042\047\042\047\042"))assert(not P("\097","\042\047\042\047\042\047\042"))assert(not P("\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097","\047\042"))assert(not P("\097","\047\042\047"))assert(not P("\097","\097\047\042"))assert(not P("\097","\097\047\042\047\042"))assert(not P("\097","\097\047\042\047\042\047\042"))assert(not P("\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097","\097\047\042\047\097"))assert(not P("\097","\097\047\042\047\098"))assert(not P("\097\047","\042",{strictSlashes=true}))assert(not P("\097\047","\042\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\042\047\042\047\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\042\047\042\047\042\047\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\047\042",{strictSlashes=true}))assert(not P("\097\047","\047\042\047",{strictSlashes=true}))assert(not P("\097\047","\097\047\042",{strictSlashes=true}))assert(not P("\097\047","\097\047\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\097\047\042\047\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\097\047\042\047\042\047\042\047\042",{strictSlashes=true}))assert(not P("\097\047","\097\047\042\047\097",{strictSlashes=true}))assert(not P("\097\047","\097\047\042\047\098",{strictSlashes=true}))assert(not P("\097\047\097","\042"))assert(not P("\097\047\097","\042\047"))assert(not P("\097\047\097","\042\047\042\047\042"))assert(not P("\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\047\042"))assert(not P("\097\047\097","\047\042\047"))assert(not P("\097\047\097","\097\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\097","\042\047\042"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\047\042"))assert(not P("\097\047\097\047\097","\047\042\047"))assert(not P("\097\047\097\047\097","\097\047\042"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\047\042"))assert(not P("\097\047\097\047\097\047\097","\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\097\047\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\097"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\098"))assert(not P("\097\047\097\047\098","\042"))assert(not P("\097\047\097\047\098","\042\047"))assert(not P("\097\047\097\047\098","\042\047\042"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\047\042"))assert(not P("\097\047\097\047\098","\047\042\047"))assert(not P("\097\047\097\047\098","\097\047\042"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\097\047\098","\097\047\042\047\097"))assert(not P("\097\047\098","\042"))assert(not P("\097\047\098","\042\047"))assert(not P("\097\047\098","\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\047\042"))assert(not P("\097\047\098","\047\042\047"))assert(not P("\097\047\098","\097\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\098","\097\047\042\047\097"))assert(not P("\097\047\098","\097\047\042\047\098"))assert(not P("\097\047\099","\042"))assert(not P("\097\047\099","\042\047"))assert(not P("\097\047\099","\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\047\042"))assert(not P("\097\047\099","\047\042\047"))assert(not P("\097\047\099","\097\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\099","\097\047\042\047\097"))assert(not P("\097\047\099","\097\047\042\047\098"))assert(not P("\097\047\120","\042"))assert(not P("\097\047\120","\042\047"))assert(not P("\097\047\120","\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\042\047\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\047\042"))assert(not P("\097\047\120","\047\042\047"))assert(not P("\097\047\120","\097\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\042\047\042\047\042"))assert(not P("\097\047\120","\097\047\042\047\097"))assert(not P("\097\047\120","\097\047\042\047\098"))assert(not P("\098","\042\047"))assert(not P("\098","\042\047\042"))assert(not P("\098","\042\047\042\047\042\047\042"))assert(not P("\098","\042\047\042\047\042\047\042\047\042"))assert(not P("\098","\047\042"))assert(not P("\098","\047\042\047"))assert(not P("\098","\097\047\042"))assert(not P("\098","\097\047\042\047\042"))assert(not P("\098","\097\047\042\047\042\047\042"))assert(not P("\098","\097\047\042\047\042\047\042\047\042"))assert(not P("\098","\097\047\042\047\097"))assert(not P("\098","\097\047\042\047\098"))assert(not P("\120\047\121","\042"))assert(not P("\120\047\121","\042\047"))assert(not P("\120\047\121","\042\047\042\047\042"))assert(not P("\120\047\121","\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\042\047\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\047\042"))assert(not P("\120\047\121","\047\042\047"))assert(not P("\120\047\121","\097\047\042"))assert(not P("\120\047\121","\097\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\042\047\042\047\042"))assert(not P("\120\047\121","\097\047\042\047\097"))assert(not P("\120\047\121","\097\047\042\047\098"))assert(not P("\122\047\122","\042"))assert(not P("\122\047\122","\042\047"))assert(not P("\122\047\122","\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\042\047\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\047\042"))assert(not P("\122\047\122","\047\042\047"))assert(not P("\122\047\122","\097\047\042"))assert(not P("\122\047\122","\097\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\042\047\042\047\042"))assert(not P("\122\047\122","\097\047\042\047\097"))assert(not P("\122\047\122","\097\047\042\047\098"))assert(P("\047\097","\042\042\047\042"))assert(P("\047\097","\042\047\042"))assert(P("\047\097","\047\042"))assert(P("\047\097\047","\042\042\047\042\123\044\047\125"))assert(P("\047\097\047","\042\047\042"))assert(P("\047\097\047","\042\047\042\123\044\047\125"))assert(P("\047\097\047","\047\042"))assert(P("\047\097\047","\047\042\047"))assert(P("\047\097\047","\047\042\123\044\047\125"))assert(P("\047\098","\042\042\047\042"))assert(P("\047\098","\042\047\042"))assert(P("\047\098","\047\042"))assert(P("\097","\042"))assert(P("\097","\042\042\047\042"))assert(P("\097\047","\042\042\047\042\123\044\047\125"))assert(P("\097\047","\042\047"))assert(P("\097\047","\042\123\044\047\125"))assert(P("\097\047\097","\042\042\047\042"))assert(P("\097\047\097","\042\047\042"))assert(P("\097\047\097","\097\047\042"))assert(P("\097\047\097\047\097","\042\042\047\042"))assert(P("\097\047\097\047\097","\042\047\042\047\042"))assert(P("\097\047\097\047\097","\097\047\042\047\042"))assert(P("\097\047\097\047\097","\097\047\042\047\097"))assert(P("\097\047\097\047\097\047\097","\042\042\047\042"))assert(P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097\047\097","\042\042\047\042"))assert(P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042"))assert(P("\097\047\097\047\098","\042\042\047\042"))assert(P("\097\047\097\047\098","\097\047\042\047\042"))assert(P("\097\047\097\047\098","\097\047\042\047\098"))assert(P("\097\047\098","\042\042\047\042"))assert(P("\097\047\098","\042\047\042"))assert(P("\097\047\098","\097\047\042"))assert(P("\097\047\099","\042\042\047\042"))assert(P("\097\047\099","\042\047\042"))assert(P("\097\047\099","\097\047\042"))assert(P("\097\047\120","\042\042\047\042"))assert(P("\097\047\120","\042\047\042"))assert(P("\097\047\120","\097\047\042"))assert(P("\098","\042"))assert(P("\098","\042\042\047\042"))assert(P("\120\047\121","\042\042\047\042"))assert(P("\120\047\121","\042\047\042"))assert(P("\122\047\122","\042\042\047\042"))assert(P("\122\047\122","\042\047\042"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \111\110\101 \111\114 \109\111\114\101 \100\105\114\101\099\116\111\114\105\101\115 \119\105\116\104 \097 \103\108\111\098\115\116\097\114",function()assert(not P("\097\047","\042\042\047\097"))assert(not P("\047\097\047","\042\042\047\097"))assert(not P("\097\047\097\047","\042\042\047\097"))assert(not P("\047\097\047\097\047","\042\042\047\097"))assert(not P("\097\047\097\047\097\047","\042\042\047\097"))assert(P("\097","\042\042\047\097"))assert(P("\097\047\097","\042\042\047\097"))assert(P("\097\047\097\047\097","\042\042\047\097"))assert(P("\047\097","\042\042\047\097"))assert(P("\097\047\097\047","\042\042\047\097\047\042\123\044\047\125"))assert(not P("\097\047\097\047","\042\042\047\097\047\042",{strictSlashes=true}))assert(P("\047\097\047\097","\042\042\047\097"))assert(P("\097","\097\047\042\042"))assert(not P("\047\097","\097\047\042\042"))assert(not P("\047\097\047","\097\047\042\042"))assert(not P("\047\097\047\097","\097\047\042\042"))assert(not P("\047\097\047\097\047","\097\047\042\042"))assert(P("\047\097","\047\097\047\042\042"))assert(P("\047\097\047","\047\097\047\042\042"))assert(P("\047\097\047\097","\047\097\047\042\042"))assert(P("\047\097\047\097\047","\047\097\047\042\042"))assert(P("\097\047","\097\047\042\042"))assert(P("\097\047\097","\097\047\042\042"))assert(P("\097\047\097\047","\097\047\042\042"))assert(P("\097\047\097\047\097","\097\047\042\042"))assert(P("\097\047\097\047\097\047","\097\047\042\042"))assert(P("\097","\042\042\047\097\047\042\042"))assert(P("\047\097","\042\042\047\097\047\042\042"))assert(P("\047\097\047","\042\042\047\097\047\042\042"))assert(P("\047\097\047\097","\042\042\047\097\047\042\042"))assert(P("\047\097\047\097\047","\042\042\047\097\047\042\042"))assert(P("\097\047","\042\042\047\097\047\042\042"))assert(P("\097\047\097","\042\042\047\097\047\042\042"))assert(P("\097\047\097\047","\042\042\047\097\047\042\042"))assert(P("\097\047\097\047\097","\042\042\047\097\047\042\042"))assert(P("\097\047\097\047\097\047","\042\042\047\097\047\042\042"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \111\110\101 \111\114 \109\111\114\101 \099\104\097\114\097\099\116\101\114\115",function()assert(P("\097","\042"))assert(P("\097\097","\042"))assert(P("\097\097\097","\042"))assert(P("\097\097\097\097","\042"))assert(P("\097\098","\042"))assert(P("\098","\042"))assert(P("\098\098","\042"))assert(P("\099","\042"))assert(P("\099\099","\042"))assert(P("\099\097\099","\042"))assert(not P("\097\047\097","\042"))assert(not P("\097\047\098","\042"))assert(not P("\097\047\099","\042"))assert(not P("\097\047\120","\042"))assert(not P("\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\098","\042"))assert(not P("\097\047\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042"))assert(not P("\120\047\121","\042"))assert(not P("\122\047\122","\042"))assert(P("\097","\097\042"))assert(P("\097\097","\097\042"))assert(P("\097\097\097","\097\042"))assert(P("\097\097\097\097","\097\042"))assert(P("\097\098","\097\042"))assert(not P("\098","\097\042"))assert(not P("\098\098","\097\042"))assert(not P("\099","\097\042"))assert(not P("\099\099","\097\042"))assert(not P("\099\097\099","\097\042"))assert(not P("\097\047\097","\097\042"))assert(not P("\097\047\098","\097\042"))assert(not P("\097\047\099","\097\042"))assert(not P("\097\047\120","\097\042"))assert(not P("\097\047\097\047\097","\097\042"))assert(not P("\097\047\097\047\098","\097\042"))assert(not P("\097\047\097\047\097\047\097","\097\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\042"))assert(not P("\120\047\121","\097\042"))assert(not P("\122\047\122","\097\042"))assert(not P("\097","\042\098"))assert(not P("\097\097","\042\098"))assert(not P("\097\097\097","\042\098"))assert(not P("\097\097\097\097","\042\098"))assert(P("\097\098","\042\098"))assert(P("\098","\042\098"))assert(P("\098\098","\042\098"))assert(not P("\099","\042\098"))assert(not P("\099\099","\042\098"))assert(not P("\099\097\099","\042\098"))assert(not P("\097\047\097","\042\098"))assert(not P("\097\047\098","\042\098"))assert(not P("\097\047\099","\042\098"))assert(not P("\097\047\120","\042\098"))assert(not P("\097\047\097\047\097","\042\098"))assert(not P("\097\047\097\047\098","\042\098"))assert(not P("\097\047\097\047\097\047\097","\042\098"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\098"))assert(not P("\120\047\121","\042\098"))assert(not P("\122\047\122","\042\098"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \111\110\101 \111\114 \122\101\114\111 \099\104\097\114\097\099\116\101\114\115",function()assert(P("\097","\042"))assert(P("\097\097","\042"))assert(P("\097\097\097","\042"))assert(P("\097\097\097\097","\042"))assert(P("\097\098","\042"))assert(P("\098","\042"))assert(P("\098\098","\042"))assert(P("\099","\042"))assert(P("\099\099","\042"))assert(P("\099\097\099","\042"))assert(not P("\097\047\097","\042"))assert(not P("\097\047\098","\042"))assert(not P("\097\047\099","\042"))assert(not P("\097\047\120","\042"))assert(not P("\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\098","\042"))assert(not P("\097\047\097\047\097\047\097","\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042"))assert(not P("\120\047\121","\042"))assert(not P("\122\047\122","\042"))assert(P("\097","\042\097\042"))assert(P("\097\097","\042\097\042"))assert(P("\097\097\097","\042\097\042"))assert(P("\097\097\097\097","\042\097\042"))assert(P("\097\098","\042\097\042"))assert(not P("\098","\042\097\042"))assert(not P("\098\098","\042\097\042"))assert(not P("\099","\042\097\042"))assert(not P("\099\099","\042\097\042"))assert(P("\099\097\099","\042\097\042"))assert(not P("\097\047\097","\042\097\042"))assert(not P("\097\047\098","\042\097\042"))assert(not P("\097\047\099","\042\097\042"))assert(not P("\097\047\120","\042\097\042"))assert(not P("\097\047\097\047\097","\042\097\042"))assert(not P("\097\047\097\047\098","\042\097\042"))assert(not P("\097\047\097\047\097\047\097","\042\097\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\097\042"))assert(not P("\120\047\121","\042\097\042"))assert(not P("\122\047\122","\042\097\042"))assert(not P("\097","\042\098\042"))assert(not P("\097\097","\042\098\042"))assert(not P("\097\097\097","\042\098\042"))assert(not P("\097\097\097\097","\042\098\042"))assert(P("\097\098","\042\098\042"))assert(P("\098","\042\098\042"))assert(P("\098\098","\042\098\042"))assert(not P("\099","\042\098\042"))assert(not P("\099\099","\042\098\042"))assert(not P("\099\097\099","\042\098\042"))assert(not P("\097\047\097","\042\098\042"))assert(not P("\097\047\098","\042\098\042"))assert(not P("\097\047\099","\042\098\042"))assert(not P("\097\047\120","\042\098\042"))assert(not P("\097\047\097\047\097","\042\098\042"))assert(not P("\097\047\097\047\098","\042\098\042"))assert(not P("\097\047\097\047\097\047\097","\042\098\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\098\042"))assert(not P("\120\047\121","\042\098\042"))assert(not P("\122\047\122","\042\098\042"))assert(not P("\097","\042\099\042"))assert(not P("\097\097","\042\099\042"))assert(not P("\097\097\097","\042\099\042"))assert(not P("\097\097\097\097","\042\099\042"))assert(not P("\097\098","\042\099\042"))assert(not P("\098","\042\099\042"))assert(not P("\098\098","\042\099\042"))assert(P("\099","\042\099\042"))assert(P("\099\099","\042\099\042"))assert(P("\099\097\099","\042\099\042"))assert(not P("\097\047\097","\042\099\042"))assert(not P("\097\047\098","\042\099\042"))assert(not P("\097\047\099","\042\099\042"))assert(not P("\097\047\120","\042\099\042"))assert(not P("\097\047\097\047\097","\042\099\042"))assert(not P("\097\047\097\047\098","\042\099\042"))assert(not P("\097\047\097\047\097\047\097","\042\099\042"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\099\042"))assert(not P("\120\047\121","\042\099\042"))assert(not P("\122\047\122","\042\099\042"))end)it("\115\104\111\117\108\100 \114\101\115\112\101\099\116 \116\114\097\105\108\105\110\103 \115\108\097\115\104\101\115 \111\110 \112\097\116\101\114\110\115",function()assert(not P("\097","\042\047"))assert(P("\097\047","\042\047"))assert(not P("\098","\042\047"))assert(P("\098\047","\042\047"))assert(not P("\097\047\097","\042\047"))assert(not P("\097\047\097\047","\042\047"))assert(not P("\097\047\098","\042\047"))assert(not P("\097\047\098\047","\042\047"))assert(not P("\097\047\099","\042\047"))assert(not P("\097\047\099\047","\042\047"))assert(not P("\097\047\120","\042\047"))assert(not P("\097\047\120\047","\042\047"))assert(not P("\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\098","\042\047"))assert(not P("\097\047\097\047\098\047","\042\047"))assert(not P("\097\047\097\047\097\047","\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\042\047"))assert(not P("\120\047\121","\042\047"))assert(not P("\122\047\122","\042\047"))assert(not P("\120\047\121\047","\042\047"))assert(not P("\122\047\122\047","\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\042\047"))assert(not P("\097","\042\047\042\047"))assert(not P("\097\047","\042\047\042\047"))assert(not P("\098","\042\047\042\047"))assert(not P("\098\047","\042\047\042\047"))assert(not P("\097\047\097","\042\047\042\047"))assert(P("\097\047\097\047","\042\047\042\047"))assert(not P("\097\047\098","\042\047\042\047"))assert(P("\097\047\098\047","\042\047\042\047"))assert(not P("\097\047\099","\042\047\042\047"))assert(P("\097\047\099\047","\042\047\042\047"))assert(not P("\097\047\120","\042\047\042\047"))assert(P("\097\047\120\047","\042\047\042\047"))assert(not P("\097\047\097\047\097","\042\047\042\047"))assert(not P("\097\047\097\047\098","\042\047\042\047"))assert(not P("\097\047\097\047\098\047","\042\047\042\047"))assert(not P("\097\047\097\047\097\047","\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\042\047\042\047"))assert(not P("\120\047\121","\042\047\042\047"))assert(not P("\122\047\122","\042\047\042\047"))assert(P("\120\047\121\047","\042\047\042\047"))assert(P("\122\047\122\047","\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\042\047\042\047"))assert(not P("\097","\042\047\042\047\042\047"))assert(not P("\097\047","\042\047\042\047\042\047"))assert(not P("\098","\042\047\042\047\042\047"))assert(not P("\098\047","\042\047\042\047\042\047"))assert(not P("\097\047\097","\042\047\042\047\042\047"))assert(not P("\097\047\097\047","\042\047\042\047\042\047"))assert(not P("\097\047\098","\042\047\042\047\042\047"))assert(not P("\097\047\098\047","\042\047\042\047\042\047"))assert(not P("\097\047\099","\042\047\042\047\042\047"))assert(not P("\097\047\099\047","\042\047\042\047\042\047"))assert(not P("\097\047\120","\042\047\042\047\042\047"))assert(not P("\097\047\120\047","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047"))assert(P("\097\047\097\047\098\047","\042\047\042\047\042\047"))assert(P("\097\047\097\047\097\047","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\042\047\042\047\042\047"))assert(not P("\120\047\121","\042\047\042\047\042\047"))assert(not P("\122\047\122","\042\047\042\047\042\047"))assert(not P("\120\047\121\047","\042\047\042\047\042\047"))assert(not P("\122\047\122\047","\042\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\042\047\042\047\042\047"))assert(not P("\097","\042\047\042\047\042\047\042\047"))assert(not P("\097\047","\042\047\042\047\042\047\042\047"))assert(not P("\098","\042\047\042\047\042\047\042\047"))assert(not P("\098\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047"))assert(P("\097\047\097\047\097\047\097\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121","\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122","\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121\047","\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122\047","\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\042\047\042\047\042\047\042\047"))assert(not P("\097","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\098","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\098\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\042\047\042\047\042\047\042\047\042\047"))assert(P("\097\047\097\047\097\047\097\047\097\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\042\047\042\047\042\047\042\047\042\047"))assert(not P("\097","\097\047\042\047"))assert(not P("\097\047","\097\047\042\047"))assert(not P("\098","\097\047\042\047"))assert(not P("\098\047","\097\047\042\047"))assert(not P("\097\047\097","\097\047\042\047"))assert(P("\097\047\097\047","\097\047\042\047"))assert(not P("\097\047\098","\097\047\042\047"))assert(P("\097\047\098\047","\097\047\042\047"))assert(not P("\097\047\099","\097\047\042\047"))assert(P("\097\047\099\047","\097\047\042\047"))assert(not P("\097\047\120","\097\047\042\047"))assert(P("\097\047\120\047","\097\047\042\047"))assert(not P("\097\047\097\047\097","\097\047\042\047"))assert(not P("\097\047\097\047\098","\097\047\042\047"))assert(not P("\097\047\097\047\098\047","\097\047\042\047"))assert(not P("\097\047\097\047\097\047","\097\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\097\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047"))assert(not P("\120\047\121","\097\047\042\047"))assert(not P("\122\047\122","\097\047\042\047"))assert(not P("\120\047\121\047","\097\047\042\047"))assert(not P("\122\047\122\047","\097\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047"))assert(not P("\097","\097\047\042\047\042\047"))assert(not P("\097\047","\097\047\042\047\042\047"))assert(not P("\098","\097\047\042\047\042\047"))assert(not P("\098\047","\097\047\042\047\042\047"))assert(not P("\097\047\097","\097\047\042\047\042\047"))assert(not P("\097\047\097\047","\097\047\042\047\042\047"))assert(not P("\097\047\098","\097\047\042\047\042\047"))assert(not P("\097\047\098\047","\097\047\042\047\042\047"))assert(not P("\097\047\099","\097\047\042\047\042\047"))assert(not P("\097\047\099\047","\097\047\042\047\042\047"))assert(not P("\097\047\120","\097\047\042\047\042\047"))assert(not P("\097\047\120\047","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047"))assert(P("\097\047\097\047\098\047","\097\047\042\047\042\047"))assert(P("\097\047\097\047\097\047","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047\042\047"))assert(not P("\120\047\121","\097\047\042\047\042\047"))assert(not P("\122\047\122","\097\047\042\047\042\047"))assert(not P("\120\047\121\047","\097\047\042\047\042\047"))assert(not P("\122\047\122\047","\097\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047\042\047"))assert(not P("\097","\097\047\042\047\042\047\042\047"))assert(not P("\097\047","\097\047\042\047\042\047\042\047"))assert(not P("\098","\097\047\042\047\042\047\042\047"))assert(not P("\098\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\098","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\099","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\099\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\120","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\120\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047"))assert(P("\097\047\097\047\097\047\097\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047\042\047\042\047"))assert(not P("\120\047\121","\097\047\042\047\042\047\042\047"))assert(not P("\122\047\122","\097\047\042\047\042\047\042\047"))assert(not P("\120\047\121\047","\097\047\042\047\042\047\042\047"))assert(not P("\122\047\122\047","\097\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047\042\047\042\047"))assert(not P("\097","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\098","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\098\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\099\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\120\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\098\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\042\047\042\047\042\047"))assert(P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\120\047\121\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\122\047\122\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047\042\047\042\047\042\047"))assert(not P("\097","\097\047\042\047\097\047"))assert(not P("\097\047","\097\047\042\047\097\047"))assert(not P("\098","\097\047\042\047\097\047"))assert(not P("\098\047","\097\047\042\047\097\047"))assert(not P("\097\047\097","\097\047\042\047\097\047"))assert(not P("\097\047\097\047","\097\047\042\047\097\047"))assert(not P("\097\047\098","\097\047\042\047\097\047"))assert(not P("\097\047\098\047","\097\047\042\047\097\047"))assert(not P("\097\047\099","\097\047\042\047\097\047"))assert(not P("\097\047\099\047","\097\047\042\047\097\047"))assert(not P("\097\047\120","\097\047\042\047\097\047"))assert(not P("\097\047\120\047","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\097","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\098","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\098\047","\097\047\042\047\097\047"))assert(P("\097\047\097\047\097\047","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\097\047\097\047","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\097\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047\097\047"))assert(not P("\120\047\121","\097\047\042\047\097\047"))assert(not P("\122\047\122","\097\047\042\047\097\047"))assert(not P("\120\047\121\047","\097\047\042\047\097\047"))assert(not P("\122\047\122\047","\097\047\042\047\097\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047\097\047"))assert(not P("\097","\097\047\042\047\098\047"))assert(not P("\097\047","\097\047\042\047\098\047"))assert(not P("\098","\097\047\042\047\098\047"))assert(not P("\098\047","\097\047\042\047\098\047"))assert(not P("\097\047\097","\097\047\042\047\098\047"))assert(not P("\097\047\097\047","\097\047\042\047\098\047"))assert(not P("\097\047\098","\097\047\042\047\098\047"))assert(not P("\097\047\098\047","\097\047\042\047\098\047"))assert(not P("\097\047\099","\097\047\042\047\098\047"))assert(not P("\097\047\099\047","\097\047\042\047\098\047"))assert(not P("\097\047\120","\097\047\042\047\098\047"))assert(not P("\097\047\120\047","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\098","\097\047\042\047\098\047"))assert(P("\097\047\097\047\098\047","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097\047","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097\047\097","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097\047\097\047","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097\047\097\047\097","\097\047\042\047\098\047"))assert(not P("\097\047\097\047\097\047\097\047\097\047","\097\047\042\047\098\047"))assert(not P("\120\047\121","\097\047\042\047\098\047"))assert(not P("\122\047\122","\097\047\042\047\098\047"))assert(not P("\120\047\121\047","\097\047\042\047\098\047"))assert(not P("\122\047\122\047","\097\047\042\047\098\047"))assert(not P("\097\047\098\047\099\047\046\100\047\101\047","\097\047\042\047\098\047"))end)itFIXME("\115\104\111\117\108\100 \109\097\116\099\104 \097 \108\105\116\101\114\097\108 \115\116\097\114 \119\104\101\110 \101\115\099\097\112\101\100",function()assert(not P("\046\109\100","\092\042"))assert(not P("\097\042\042\097\046\109\100","\092\042"))assert(not P("\042\042\097\046\109\100","\092\042"))assert(not P("\042\042\047\097\046\109\100","\092\042"))assert(not P("\042\042\046\109\100","\092\042"))assert(not P("\046\109\100","\092\042"))assert(P("\042","\092\042"))assert(not P("\042\042","\092\042"))assert(not P("\042\046\109\100","\092\042"))assert(not P("\046\109\100","\092\042\046\109\100"))assert(not P("\097\042\042\097\046\109\100","\092\042\046\109\100"))assert(not P("\042\042\097\046\109\100","\092\042\046\109\100"))assert(not P("\042\042\047\097\046\109\100","\092\042\046\109\100"))assert(not P("\042\042\046\109\100","\092\042\046\109\100"))assert(not P("\046\109\100","\092\042\046\109\100"))assert(not P("\042","\092\042\046\109\100"))assert(not P("\042\042","\092\042\046\109\100"))assert(P("\042\046\109\100","\092\042\046\109\100"))assert(not P("\046\109\100","\092\042\042\046\109\100"))assert(not P("\097\042\042\097\046\109\100","\092\042\042\046\109\100"))assert(P("\042\042\097\046\109\100","\092\042\042\046\109\100"))assert(not P("\042\042\047\097\046\109\100","\092\042\042\046\109\100"))assert(P("\042\042\046\109\100","\092\042\042\046\109\100"))assert(not P("\046\109\100","\092\042\042\046\109\100"))assert(not P("\042","\092\042\042\046\109\100"))assert(not P("\042\042","\092\042\042\046\109\100"))assert(P("\042\046\109\100","\092\042\042\046\109\100"))assert(not P("\046\109\100","\097\092\042\042\046\109\100"))assert(P("\097\042\042\097\046\109\100","\097\092\042\042\046\109\100"))assert(not P("\042\042\097\046\109\100","\097\092\042\042\046\109\100"))assert(not P("\042\042\047\097\046\109\100","\097\092\042\042\046\109\100"))assert(not P("\042\042\046\109\100","\097\092\042\042\046\109\100"))assert(not P("\046\109\100","\097\092\042\042\046\109\100"))assert(not P("\042","\097\092\042\042\046\109\100"))assert(not P("\042\042","\097\092\042\042\046\109\100"))assert(not P("\042\046\109\100","\097\092\042\042\046\109\100"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \102\105\108\101 \112\097\116\104\115",function()assert(not P("\097\047\046\098","\097\047\042\042\047\122\047\042\046\109\100"))assert(not P("\097\047\098\047\099\047\106\047\101\047\122\047\099\046\116\120\116","\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100"))assert(not P("\097\047\098\047\122\047\046\097","\097\047\042\042\047\122\047\042\046\097"))assert(not P("\097\047\098\047\122\047\046\097","\097\047\042\047\122\047\042\046\097"))assert(not P("\102\111\111\046\116\120\116","\042\047\042\046\116\120\116"))assert(P("\097\047\046\098","\097\047\046\042"))assert(P("\097\047\098\047\099\047\100\047\101\047\106\047\110\047\112\047\111\047\122\047\099\046\109\100","\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100"))assert(P("\097\047\098\047\099\047\100\047\101\047\122\047\099\046\109\100","\097\047\042\042\047\122\047\042\046\109\100"))assert(P("\097\047\098\047\099\047\120\121\122\046\109\100","\097\047\098\047\099\047\042\046\109\100"))assert(P("\097\047\098\047\122\047\046\097","\097\047\042\047\122\047\046\097"))assert(P("\097\047\098\098\046\098\098\047\097\097\047\098\046\098\047\097\097\047\099\047\120\121\122\046\109\100","\097\047\042\042\047\099\047\042\046\109\100"))assert(P("\097\047\098\098\046\098\098\047\097\097\047\098\098\047\097\097\047\099\047\120\121\122\046\109\100","\097\047\042\042\047\099\047\042\046\109\100"))assert(P("\097\047\098\098\046\098\098\047\099\047\120\121\122\046\109\100","\097\047\042\047\099\047\042\046\109\100"))assert(P("\097\047\098\098\047\099\047\120\121\122\046\109\100","\097\047\042\047\099\047\042\046\109\100"))assert(P("\097\047\098\098\098\098\047\099\047\120\121\122\046\109\100","\097\047\042\047\099\047\042\046\109\100"))assert(P("\102\111\111\046\116\120\116","\042\042\047\102\111\111\046\116\120\116"))assert(P("\102\111\111\047\098\097\114\046\116\120\116","\042\042\047\042\046\116\120\116"))assert(P("\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\042\042\047\042\046\116\120\116"))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \112\097\116\104\115 \119\105\116\104 \108\101\097\100\105\110\103 \096\046\047\096 \119\104\101\110 \112\097\116\116\101\114\110 \104\097\115 \096\046\047\096",function()local function x(x)return x:gsub("\094\037\046\047","")end assert(not P("\046\047\097\047\098\047\099\047\100\047\101\047\122\047\099\046\109\100","\046\047\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100",{format=x}))assert(not P("\046\047\097\047\098\047\099\047\106\047\101\047\122\047\099\046\116\120\116","\046\047\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100",{format=x}))assert(P("\046\047\097\047\098\047\099\047\100\047\101\047\106\047\110\047\112\047\111\047\122\047\099\046\109\100","\046\047\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100",{format=x}))assert(P("\046\047\097\047\098\047\099\047\100\047\101\047\122\047\099\046\109\100","\046\047\097\047\042\042\047\122\047\042\046\109\100",{format=x}))assert(P("\046\047\097\047\098\047\099\047\106\047\101\047\122\047\099\046\109\100","\046\047\097\047\042\042\047\106\047\042\042\047\122\047\042\046\109\100",{format=x}))assert(P("\046\047\097\047\098\047\122\047\046\097","\046\047\097\047\042\042\047\122\047\046\097",{format=x}))end)itFIXME("\115\104\111\117\108\100 \109\097\116\099\104 \108\101\097\100\105\110\103 \115\108\097\115\104\101\115",function()assert(not P("\101\102","\047\042"))assert(P("\047\101\102","\047\042"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\042"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\042\047\042\042\047\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\042\047\042\042\047\098\097\114\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\042\047\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\042\047\098\097\114\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\046\116\120\116","\047\102\111\111\047\042\047\098\097\114\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\042"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\042"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\042\047\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\042\047\042\047\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\042\047\042\047\098\097\122\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\047\042\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\042\047\042\047\098\097\122\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\046\116\120\116","\047\102\111\111\047\098\097\114\042\042"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\042\042\047\042\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\042\042\047\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\042\047\042\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\047\102\111\111\047\042\042\046\116\120\116"))assert(P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\047\102\111\111\047\042\042\047\042\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\047\102\111\111\047\042\047\042\046\116\120\116"))assert(not P("\047\102\111\111\047\098\097\114\047\098\097\122\047\113\117\120\046\116\120\116","\047\102\111\111\047\098\097\114\042\042\047\042\046\116\120\116"))assert(not P("\047\046\116\120\116","\042\046\116\120\116"))assert(not P("\047\046\116\120\116","\047\042\046\116\120\116"))assert(not P("\047\046\116\120\116","\042\047\042\046\116\120\116"))assert(not P("\047\046\116\120\116","\042\042\047\042\046\116\120\116"))assert(not P("\047\046\116\120\116","\042\046\116\120\116",{dot=true}))assert(P("\047\046\116\120\116","\047\042\046\116\120\116",{dot=true}))assert(P("\047\046\116\120\116","\042\047\042\046\116\120\116",{dot=true}))assert(P("\047\046\116\120\116","\042\042\047\042\046\116\120\116",{dot=true}))end)it("\115\104\111\117\108\100 \109\097\116\099\104 \100\111\117\098\108\101 \115\108\097\115\104\101\115",function()assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042"))assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042"))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042"))assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042",{noglobstar=true}))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042"))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042\047\097\112\112\046\109\105\110\046\106\115"))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\047\042\047\097\112\112\046\109\105\110\046\106\115"))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\047\042\047\097\112\112\046\109\105\110\046\106\115",{noglobstar=true}))assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\047\097\112\112\046\109\105\110\046\106\115"))assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\047\097\112\112\046\109\105\110\046\106\115"))assert(P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042\047\097\112\112\046\109\105\110\046\106\115"))assert(not P("\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\098\097\114\047\098\097\122\047\097\112\112\046\109\105\110\046\106\115","\104\116\116\112\115\058\047\047\102\111\111\046\099\111\109\047\042\042\047\097\112\112\046\109\105\110\046\106\115",{noglobstar=true}))end)end)end
-- ROBLOX upstream: https://github.com/micromatch/picomatch/tree/2.3.1/test/slashes-poxix.js

return function()
	local CurrentModule = script.Parent
	local PicomatchModule = CurrentModule.Parent

	local support = require(CurrentModule.support)
	local isMatch = require(PicomatchModule).isMatch
	describe("slash handling - posix", function()
		beforeAll(function()
			return support.resetPathSep()
		end)
		afterAll(function()
			return support.resetPathSep()
		end)
		afterEach(function()
			return support.resetPathSep()
		end)

		it("should match a literal string", function()
			assert(not isMatch("a/a", "(a/b)"))
			assert(isMatch("a/b", "(a/b)"))
			assert(not isMatch("a/c", "(a/b)"))
			assert(not isMatch("b/a", "(a/b)"))
			assert(not isMatch("b/b", "(a/b)"))
			assert(not isMatch("b/c", "(a/b)"))
			assert(not isMatch("a/a", "a/b"))
			assert(isMatch("a/b", "a/b"))
			assert(not isMatch("a/c", "a/b"))
			assert(not isMatch("b/a", "a/b"))
			assert(not isMatch("b/b", "a/b"))
			assert(not isMatch("b/c", "a/b"))
		end)

		it("should match an array of literal strings", function()
			assert(not isMatch("a/a", "a/b"))
			assert(isMatch("a/b", "a/b"))
			assert(not isMatch("a/c", "a/b"))
			assert(not isMatch("b/a", "a/b"))
			assert(not isMatch("b/b", "a/b"))
			assert(isMatch("b/b", "b/b"))
			assert(not isMatch("b/c", "a/b"))
		end)

		it("should support regex logical or", function()
			assert(isMatch("a/a", "a/(a|c)"))
			assert(not isMatch("a/b", "a/(a|c)"))
			assert(isMatch("a/c", "a/(a|c)"))
			assert(isMatch("a/a", "a/(a|b|c)"))
			assert(isMatch("a/b", "a/(a|b|c)"))
			assert(isMatch("a/c", "a/(a|b|c)"))
		end)

		itFIXME("should support regex ranges", function()
			assert(not isMatch("a/a", "a/[b-c]"))
			assert(isMatch("a/b", "a/[b-c]"))
			assert(isMatch("a/c", "a/[b-c]"))
			assert(isMatch("a/a", "a/[a-z]"))
			assert(isMatch("a/b", "a/[a-z]"))
			assert(isMatch("a/c", "a/[a-z]"))
			assert(not isMatch("a/x/y", "a/[a-z]"))
			assert(isMatch("a/x", "a/[a-z]"))
		end)

		it("should support single globs (*)", function()
			assert(isMatch("a", "*"))
			assert(isMatch("b", "*"))
			assert(not isMatch("a/a", "*"))
			assert(not isMatch("a/b", "*"))
			assert(not isMatch("a/c", "*"))
			assert(not isMatch("a/x", "*"))
			assert(not isMatch("a/a/a", "*"))
			assert(not isMatch("a/a/b", "*"))
			assert(not isMatch("a/a/a/a", "*"))
			assert(not isMatch("a/a/a/a/a", "*"))
			assert(not isMatch("x/y", "*"))
			assert(not isMatch("z/z", "*"))
			assert(not isMatch("a", "*/*"))
			assert(not isMatch("b", "*/*"))
			assert(isMatch("a/a", "*/*"))
			assert(isMatch("a/b", "*/*"))
			assert(isMatch("a/c", "*/*"))
			assert(isMatch("a/x", "*/*"))
			assert(not isMatch("a/a/a", "*/*"))
			assert(not isMatch("a/a/b", "*/*"))
			assert(not isMatch("a/a/a/a", "*/*"))
			assert(not isMatch("a/a/a/a/a", "*/*"))
			assert(isMatch("x/y", "*/*"))
			assert(isMatch("z/z", "*/*"))
			assert(not isMatch("a", "*/*/*"))
			assert(not isMatch("b", "*/*/*"))
			assert(not isMatch("a/a", "*/*/*"))
			assert(not isMatch("a/b", "*/*/*"))
			assert(not isMatch("a/c", "*/*/*"))
			assert(not isMatch("a/x", "*/*/*"))
			assert(isMatch("a/a/a", "*/*/*"))
			assert(isMatch("a/a/b", "*/*/*"))
			assert(not isMatch("a/a/a/a", "*/*/*"))
			assert(not isMatch("a/a/a/a/a", "*/*/*"))
			assert(not isMatch("x/y", "*/*/*"))
			assert(not isMatch("z/z", "*/*/*"))
			assert(not isMatch("a", "*/*/*/*"))
			assert(not isMatch("b", "*/*/*/*"))
			assert(not isMatch("a/a", "*/*/*/*"))
			assert(not isMatch("a/b", "*/*/*/*"))
			assert(not isMatch("a/c", "*/*/*/*"))
			assert(not isMatch("a/x", "*/*/*/*"))
			assert(not isMatch("a/a/a", "*/*/*/*"))
			assert(not isMatch("a/a/b", "*/*/*/*"))
			assert(isMatch("a/a/a/a", "*/*/*/*"))
			assert(not isMatch("a/a/a/a/a", "*/*/*/*"))
			assert(not isMatch("x/y", "*/*/*/*"))
			assert(not isMatch("z/z", "*/*/*/*"))
			assert(not isMatch("a", "*/*/*/*/*"))
			assert(not isMatch("b", "*/*/*/*/*"))
			assert(not isMatch("a/a", "*/*/*/*/*"))
			assert(not isMatch("a/b", "*/*/*/*/*"))
			assert(not isMatch("a/c", "*/*/*/*/*"))
			assert(not isMatch("a/x", "*/*/*/*/*"))
			assert(not isMatch("a/a/a", "*/*/*/*/*"))
			assert(not isMatch("a/a/b", "*/*/*/*/*"))
			assert(not isMatch("a/a/a/a", "*/*/*/*/*"))
			assert(isMatch("a/a/a/a/a", "*/*/*/*/*"))
			assert(not isMatch("x/y", "*/*/*/*/*"))
			assert(not isMatch("z/z", "*/*/*/*/*"))
			assert(not isMatch("a", "a/*"))
			assert(not isMatch("b", "a/*"))
			assert(isMatch("a/a", "a/*"))
			assert(isMatch("a/b", "a/*"))
			assert(isMatch("a/c", "a/*"))
			assert(isMatch("a/x", "a/*"))
			assert(not isMatch("a/a/a", "a/*"))
			assert(not isMatch("a/a/b", "a/*"))
			assert(not isMatch("a/a/a/a", "a/*"))
			assert(not isMatch("a/a/a/a/a", "a/*"))
			assert(not isMatch("x/y", "a/*"))
			assert(not isMatch("z/z", "a/*"))
			assert(not isMatch("a", "a/*/*"))
			assert(not isMatch("b", "a/*/*"))
			assert(not isMatch("a/a", "a/*/*"))
			assert(not isMatch("a/b", "a/*/*"))
			assert(not isMatch("a/c", "a/*/*"))
			assert(not isMatch("a/x", "a/*/*"))
			assert(isMatch("a/a/a", "a/*/*"))
			assert(isMatch("a/a/b", "a/*/*"))
			assert(not isMatch("a/a/a/a", "a/*/*"))
			assert(not isMatch("a/a/a/a/a", "a/*/*"))
			assert(not isMatch("x/y", "a/*/*"))
			assert(not isMatch("z/z", "a/*/*"))
			assert(not isMatch("a", "a/*/*/*"))
			assert(not isMatch("b", "a/*/*/*"))
			assert(not isMatch("a/a", "a/*/*/*"))
			assert(not isMatch("a/b", "a/*/*/*"))
			assert(not isMatch("a/c", "a/*/*/*"))
			assert(not isMatch("a/x", "a/*/*/*"))
			assert(not isMatch("a/a/a", "a/*/*/*"))
			assert(not isMatch("a/a/b", "a/*/*/*"))
			assert(isMatch("a/a/a/a", "a/*/*/*"))
			assert(not isMatch("a/a/a/a/a", "a/*/*/*"))
			assert(not isMatch("x/y", "a/*/*/*"))
			assert(not isMatch("z/z", "a/*/*/*"))
			assert(not isMatch("a", "a/*/*/*/*"))
			assert(not isMatch("b", "a/*/*/*/*"))
			assert(not isMatch("a/a", "a/*/*/*/*"))
			assert(not isMatch("a/b", "a/*/*/*/*"))
			assert(not isMatch("a/c", "a/*/*/*/*"))
			assert(not isMatch("a/x", "a/*/*/*/*"))
			assert(not isMatch("a/a/a", "a/*/*/*/*"))
			assert(not isMatch("a/a/b", "a/*/*/*/*"))
			assert(not isMatch("a/a/a/a", "a/*/*/*/*"))
			assert(isMatch("a/a/a/a/a", "a/*/*/*/*"))
			assert(not isMatch("x/y", "a/*/*/*/*"))
			assert(not isMatch("z/z", "a/*/*/*/*"))
			assert(not isMatch("a", "a/*/a"))
			assert(not isMatch("b", "a/*/a"))
			assert(not isMatch("a/a", "a/*/a"))
			assert(not isMatch("a/b", "a/*/a"))
			assert(not isMatch("a/c", "a/*/a"))
			assert(not isMatch("a/x", "a/*/a"))
			assert(isMatch("a/a/a", "a/*/a"))
			assert(not isMatch("a/a/b", "a/*/a"))
			assert(not isMatch("a/a/a/a", "a/*/a"))
			assert(not isMatch("a/a/a/a/a", "a/*/a"))
			assert(not isMatch("x/y", "a/*/a"))
			assert(not isMatch("z/z", "a/*/a"))
			assert(not isMatch("a", "a/*/b"))
			assert(not isMatch("b", "a/*/b"))
			assert(not isMatch("a/a", "a/*/b"))
			assert(not isMatch("a/b", "a/*/b"))
			assert(not isMatch("a/c", "a/*/b"))
			assert(not isMatch("a/x", "a/*/b"))
			assert(not isMatch("a/a/a", "a/*/b"))
			assert(isMatch("a/a/b", "a/*/b"))
			assert(not isMatch("a/a/a/a", "a/*/b"))
			assert(not isMatch("a/a/a/a/a", "a/*/b"))
			assert(not isMatch("x/y", "a/*/b"))
			assert(not isMatch("z/z", "a/*/b"))
		end)

		it("should support globstars (**)", function()
			assert(isMatch("a", "a"))
			assert(not isMatch("a/", "a"))
			assert(not isMatch("a/a", "a"))
			assert(not isMatch("a/b", "a"))
			assert(not isMatch("a/c", "a"))
			assert(not isMatch("a/x", "a"))
			assert(not isMatch("a/x/y", "a"))
			assert(not isMatch("a/x/y/z", "a"))
			assert(isMatch("a", "*"))
			assert(isMatch("a/", "*", { relaxSlashes = true }))
			assert(isMatch("a/", "*{,/}"))
			assert(not isMatch("a/a", "*"))
			assert(not isMatch("a/b", "*"))
			assert(not isMatch("a/c", "*"))
			assert(not isMatch("a/x", "*"))
			assert(not isMatch("a/x/y", "*"))
			assert(not isMatch("a/x/y/z", "*"))
			assert(not isMatch("a", "*/"))
			assert(isMatch("a/", "*/"))
			assert(not isMatch("a/a", "*/"))
			assert(not isMatch("a/b", "*/"))
			assert(not isMatch("a/c", "*/"))
			assert(not isMatch("a/x", "*/"))
			assert(not isMatch("a/x/y", "*/"))
			assert(not isMatch("a/x/y/z", "*/"))
			assert(not isMatch("a", "*/*"))
			assert(not isMatch("a/", "*/*"))
			assert(isMatch("a/a", "*/*"))
			assert(isMatch("a/b", "*/*"))
			assert(isMatch("a/c", "*/*"))
			assert(isMatch("a/x", "*/*"))
			assert(not isMatch("a/x/y", "*/*"))
			assert(not isMatch("a/x/y/z", "*/*"))
			assert(isMatch("a", "**"))
			assert(isMatch("a/", "**"))
			assert(isMatch("a/a", "**"))
			assert(isMatch("a/b", "**"))
			assert(isMatch("a/c", "**"))
			assert(isMatch("a/x", "**"))
			assert(isMatch("a/x/y", "**"))
			assert(isMatch("a/x/y/z", "**"))
			assert(not isMatch("a/", "**/a"))
			assert(not isMatch("a/b", "**/a"))
			assert(not isMatch("a/c", "**/a"))
			assert(not isMatch("a/x", "**/a"))
			assert(not isMatch("a/x/y/z", "**/a"))
			assert(isMatch("a/x/y/z/a", "**/a"))
			assert(isMatch("a", "**/a"))
			assert(isMatch("a/a", "**/a"))
			assert(not isMatch("a", "a/*"))
			assert(not isMatch("a/", "a/*"))
			assert(isMatch("a/a", "a/*"))
			assert(isMatch("a/b", "a/*"))
			assert(isMatch("a/c", "a/*"))
			assert(isMatch("a/x", "a/*"))
			assert(not isMatch("a/x/y", "a/*"))
			assert(not isMatch("a/x/y/z", "a/*"))
			assert(isMatch("a", "a/**"))
			assert(isMatch("a/", "a/**"))
			assert(isMatch("a/a", "a/**"))
			assert(isMatch("a/b", "a/**"))
			assert(isMatch("a/c", "a/**"))
			assert(isMatch("a/x", "a/**"))
			assert(isMatch("a/x/y", "a/**"))
			assert(isMatch("a/x/y/z", "a/**"))
			assert(not isMatch("a", "a/**/*"))
			assert(not isMatch("a/", "a/**/*"))
			assert(isMatch("a/a", "a/**/*"))
			assert(isMatch("a/b", "a/**/*"))
			assert(isMatch("a/c", "a/**/*"))
			assert(isMatch("a/x", "a/**/*"))
			assert(isMatch("a/x/y", "a/**/*"))
			assert(isMatch("a/x/y/z", "a/**/*"))
			assert(not isMatch("a", "a/**/**/*"))
			assert(not isMatch("a/", "a/**/**/*"))
			assert(isMatch("a/a", "a/**/**/*"))
			assert(isMatch("a/b", "a/**/**/*"))
			assert(isMatch("a/c", "a/**/**/*"))
			assert(isMatch("a/x", "a/**/**/*"))
			assert(isMatch("a/x/y", "a/**/**/*"))
			assert(isMatch("a/x/y/z", "a/**/**/*"))
			assert(isMatch("a/b/foo/bar/baz.qux", "a/b/**/bar/**/*.*"))
			assert(isMatch("a/b/bar/baz.qux", "a/b/**/bar/**/*.*"))
		end)

		it("should support negation patterns", function()
			assert(isMatch("a/a", "!a/b"))
			assert(not isMatch("a/b", "!a/b"))
			assert(isMatch("a/c", "!a/b"))
			assert(isMatch("b/a", "!a/b"))
			assert(isMatch("b/b", "!a/b"))
			assert(isMatch("b/c", "!a/b"))
			assert(isMatch("a/a", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("a/b", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("a/c", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("b/a", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("b/b", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("b/c", { "*/*", "!a/b", "!*/c" }))
			assert(isMatch("a/a", { "!a/b", "!*/c" }))
			assert(isMatch("a/b", { "!a/b", "!*/c" }))
			assert(isMatch("a/c", { "!a/b", "!*/c" }))
			assert(isMatch("b/a", { "!a/b", "!*/c" }))
			assert(isMatch("b/b", { "!a/b", "!*/c" }))
			assert(isMatch("b/c", { "!a/b", "!*/c" }))
			assert(isMatch("a/a", { "!a/b", "!a/c" }))
			assert(isMatch("a/b", { "!a/b", "!a/c" }))
			assert(isMatch("a/c", { "!a/b", "!a/c" }))
			assert(isMatch("b/a", { "!a/b", "!a/c" }))
			assert(isMatch("b/b", { "!a/b", "!a/c" }))
			assert(isMatch("b/c", { "!a/b", "!a/c" }))
			assert(isMatch("a/a", "!a/(b)"))
			assert(not isMatch("a/b", "!a/(b)"))
			assert(isMatch("a/c", "!a/(b)"))
			assert(isMatch("b/a", "!a/(b)"))
			assert(isMatch("b/b", "!a/(b)"))
			assert(isMatch("b/c", "!a/(b)"))
			assert(isMatch("a/a", "!(a/b)"))
			assert(not isMatch("a/b", "!(a/b)"))
			assert(isMatch("a/c", "!(a/b)"))
			assert(isMatch("b/a", "!(a/b)"))
			assert(isMatch("b/b", "!(a/b)"))
			assert(isMatch("b/c", "!(a/b)"))
		end)

		it("should work with file extensions", function()
			assert(not isMatch("a.txt", "a/**/*.txt"))
			assert(isMatch("a/b.txt", "a/**/*.txt"))
			assert(isMatch("a/x/y.txt", "a/**/*.txt"))
			assert(not isMatch("a/x/y/z", { "a/**/*.txt" }))
			assert(not isMatch("a.txt", "a/*.txt"))
			assert(isMatch("a/b.txt", "a/*.txt"))
			assert(not isMatch("a/x/y.txt", "a/*.txt"))
			assert(not isMatch("a/x/y/z", "a/*.txt"))
			assert(isMatch("a.txt", "a*.txt"))
			assert(not isMatch("a/b.txt", "a*.txt"))
			assert(not isMatch("a/x/y.txt", "a*.txt"))
			assert(not isMatch("a/x/y/z", "a*.txt"))
			assert(isMatch("a.txt", "*.txt"))
			assert(not isMatch("a/b.txt", "*.txt"))
			assert(not isMatch("a/x/y.txt", "*.txt"))
			assert(not isMatch("a/x/y/z", "*.txt"))
		end)

		it("should match one directory level with a single star (*)", function()
			assert(not isMatch("/a", "*/"))
			assert(not isMatch("/a", "*/*/*"))
			assert(not isMatch("/a", "*/*/*/*"))
			assert(not isMatch("/a", "*/*/*/*/*"))
			assert(not isMatch("/a", "/*/"))
			assert(not isMatch("/a", "a/*"))
			assert(not isMatch("/a", "a/*/*"))
			assert(not isMatch("/a", "a/*/*/*"))
			assert(not isMatch("/a", "a/*/*/*/*"))
			assert(not isMatch("/a", "a/*/a"))
			assert(not isMatch("/a", "a/*/b"))
			assert(not isMatch("/a/", "*"))
			assert(not isMatch("/a/", "**/*", { strictSlashes = true }))
			assert(not isMatch("/a/", "*/"))
			assert(not isMatch("/a/", "*/*", { strictSlashes = true }))
			assert(not isMatch("/a/", "*/*/*"))
			assert(not isMatch("/a/", "*/*/*/*"))
			assert(not isMatch("/a/", "*/*/*/*/*"))
			assert(not isMatch("/a/", "/*", { strictSlashes = true }))
			assert(not isMatch("/a/", "a/*"))
			assert(not isMatch("/a/", "a/*/*"))
			assert(not isMatch("/a/", "a/*/*/*"))
			assert(not isMatch("/a/", "a/*/*/*/*"))
			assert(not isMatch("/a/", "a/*/a"))
			assert(not isMatch("/a/", "a/*/b"))
			assert(not isMatch("/ab", "*"))
			assert(not isMatch("/abc", "*"))
			assert(not isMatch("/b", "*"))
			assert(not isMatch("/b", "*/"))
			assert(not isMatch("/b", "*/*/*"))
			assert(not isMatch("/b", "*/*/*/*"))
			assert(not isMatch("/b", "*/*/*/*/*"))
			assert(not isMatch("/b", "/*/"))
			assert(not isMatch("/b", "a/*"))
			assert(not isMatch("/b", "a/*/*"))
			assert(not isMatch("/b", "a/*/*/*"))
			assert(not isMatch("/b", "a/*/*/*/*"))
			assert(not isMatch("/b", "a/*/a"))
			assert(not isMatch("/b", "a/*/b"))
			assert(not isMatch("a", "*/"))
			assert(not isMatch("a", "*/*"))
			assert(not isMatch("a", "*/*/*"))
			assert(not isMatch("a", "*/*/*/*"))
			assert(not isMatch("a", "*/*/*/*/*"))
			assert(not isMatch("a", "/*"))
			assert(not isMatch("a", "/*/"))
			assert(not isMatch("a", "a/*"))
			assert(not isMatch("a", "a/*/*"))
			assert(not isMatch("a", "a/*/*/*"))
			assert(not isMatch("a", "a/*/*/*/*"))
			assert(not isMatch("a", "a/*/a"))
			assert(not isMatch("a", "a/*/b"))
			assert(not isMatch("a/", "*", { strictSlashes = true }))
			assert(not isMatch("a/", "**/*", { strictSlashes = true }))
			assert(not isMatch("a/", "*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "*/*/*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "*/*/*/*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "/*", { strictSlashes = true }))
			assert(not isMatch("a/", "/*/", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*/*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*/*/*/*", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*/a", { strictSlashes = true }))
			assert(not isMatch("a/", "a/*/b", { strictSlashes = true }))
			assert(not isMatch("a/a", "*"))
			assert(not isMatch("a/a", "*/"))
			assert(not isMatch("a/a", "*/*/*"))
			assert(not isMatch("a/a", "*/*/*/*"))
			assert(not isMatch("a/a", "*/*/*/*/*"))
			assert(not isMatch("a/a", "/*"))
			assert(not isMatch("a/a", "/*/"))
			assert(not isMatch("a/a", "a/*/*"))
			assert(not isMatch("a/a", "a/*/*/*"))
			assert(not isMatch("a/a", "a/*/*/*/*"))
			assert(not isMatch("a/a", "a/*/a"))
			assert(not isMatch("a/a", "a/*/b"))
			assert(not isMatch("a/a/a", "*"))
			assert(not isMatch("a/a/a", "*/"))
			assert(not isMatch("a/a/a", "*/*"))
			assert(not isMatch("a/a/a", "*/*/*/*"))
			assert(not isMatch("a/a/a", "*/*/*/*/*"))
			assert(not isMatch("a/a/a", "/*"))
			assert(not isMatch("a/a/a", "/*/"))
			assert(not isMatch("a/a/a", "a/*"))
			assert(not isMatch("a/a/a", "a/*/*/*"))
			assert(not isMatch("a/a/a", "a/*/*/*/*"))
			assert(not isMatch("a/a/a", "a/*/b"))
			assert(not isMatch("a/a/a/a", "*"))
			assert(not isMatch("a/a/a/a", "*/"))
			assert(not isMatch("a/a/a/a", "*/*"))
			assert(not isMatch("a/a/a/a", "*/*/*"))
			assert(not isMatch("a/a/a/a", "*/*/*/*/*"))
			assert(not isMatch("a/a/a/a", "/*"))
			assert(not isMatch("a/a/a/a", "/*/"))
			assert(not isMatch("a/a/a/a", "a/*"))
			assert(not isMatch("a/a/a/a", "a/*/*"))
			assert(not isMatch("a/a/a/a", "a/*/*/*/*"))
			assert(not isMatch("a/a/a/a", "a/*/a"))
			assert(not isMatch("a/a/a/a", "a/*/b"))
			assert(not isMatch("a/a/a/a/a", "*"))
			assert(not isMatch("a/a/a/a/a", "*/"))
			assert(not isMatch("a/a/a/a/a", "*/*"))
			assert(not isMatch("a/a/a/a/a", "*/*/*"))
			assert(not isMatch("a/a/a/a/a", "*/*/*/*"))
			assert(not isMatch("a/a/a/a/a", "/*"))
			assert(not isMatch("a/a/a/a/a", "/*/"))
			assert(not isMatch("a/a/a/a/a", "a/*"))
			assert(not isMatch("a/a/a/a/a", "a/*/*"))
			assert(not isMatch("a/a/a/a/a", "a/*/*/*"))
			assert(not isMatch("a/a/a/a/a", "a/*/a"))
			assert(not isMatch("a/a/a/a/a", "a/*/b"))
			assert(not isMatch("a/a/b", "*"))
			assert(not isMatch("a/a/b", "*/"))
			assert(not isMatch("a/a/b", "*/*"))
			assert(not isMatch("a/a/b", "*/*/*/*"))
			assert(not isMatch("a/a/b", "*/*/*/*/*"))
			assert(not isMatch("a/a/b", "/*"))
			assert(not isMatch("a/a/b", "/*/"))
			assert(not isMatch("a/a/b", "a/*"))
			assert(not isMatch("a/a/b", "a/*/*/*"))
			assert(not isMatch("a/a/b", "a/*/*/*/*"))
			assert(not isMatch("a/a/b", "a/*/a"))
			assert(not isMatch("a/b", "*"))
			assert(not isMatch("a/b", "*/"))
			assert(not isMatch("a/b", "*/*/*/*"))
			assert(not isMatch("a/b", "*/*/*/*/*"))
			assert(not isMatch("a/b", "/*"))
			assert(not isMatch("a/b", "/*/"))
			assert(not isMatch("a/b", "a/*/*"))
			assert(not isMatch("a/b", "a/*/*/*"))
			assert(not isMatch("a/b", "a/*/*/*/*"))
			assert(not isMatch("a/b", "a/*/a"))
			assert(not isMatch("a/b", "a/*/b"))
			assert(not isMatch("a/c", "*"))
			assert(not isMatch("a/c", "*/"))
			assert(not isMatch("a/c", "*/*/*/*"))
			assert(not isMatch("a/c", "*/*/*/*/*"))
			assert(not isMatch("a/c", "/*"))
			assert(not isMatch("a/c", "/*/"))
			assert(not isMatch("a/c", "a/*/*"))
			assert(not isMatch("a/c", "a/*/*/*"))
			assert(not isMatch("a/c", "a/*/*/*/*"))
			assert(not isMatch("a/c", "a/*/a"))
			assert(not isMatch("a/c", "a/*/b"))
			assert(not isMatch("a/x", "*"))
			assert(not isMatch("a/x", "*/"))
			assert(not isMatch("a/x", "*/*/*/*"))
			assert(not isMatch("a/x", "*/*/*/*/*"))
			assert(not isMatch("a/x", "/*"))
			assert(not isMatch("a/x", "/*/"))
			assert(not isMatch("a/x", "a/*/*"))
			assert(not isMatch("a/x", "a/*/*/*"))
			assert(not isMatch("a/x", "a/*/*/*/*"))
			assert(not isMatch("a/x", "a/*/a"))
			assert(not isMatch("a/x", "a/*/b"))
			assert(not isMatch("b", "*/"))
			assert(not isMatch("b", "*/*"))
			assert(not isMatch("b", "*/*/*/*"))
			assert(not isMatch("b", "*/*/*/*/*"))
			assert(not isMatch("b", "/*"))
			assert(not isMatch("b", "/*/"))
			assert(not isMatch("b", "a/*"))
			assert(not isMatch("b", "a/*/*"))
			assert(not isMatch("b", "a/*/*/*"))
			assert(not isMatch("b", "a/*/*/*/*"))
			assert(not isMatch("b", "a/*/a"))
			assert(not isMatch("b", "a/*/b"))
			assert(not isMatch("x/y", "*"))
			assert(not isMatch("x/y", "*/"))
			assert(not isMatch("x/y", "*/*/*"))
			assert(not isMatch("x/y", "*/*/*/*"))
			assert(not isMatch("x/y", "*/*/*/*/*"))
			assert(not isMatch("x/y", "/*"))
			assert(not isMatch("x/y", "/*/"))
			assert(not isMatch("x/y", "a/*"))
			assert(not isMatch("x/y", "a/*/*"))
			assert(not isMatch("x/y", "a/*/*/*"))
			assert(not isMatch("x/y", "a/*/*/*/*"))
			assert(not isMatch("x/y", "a/*/a"))
			assert(not isMatch("x/y", "a/*/b"))
			assert(not isMatch("z/z", "*"))
			assert(not isMatch("z/z", "*/"))
			assert(not isMatch("z/z", "*/*/*/*"))
			assert(not isMatch("z/z", "*/*/*/*/*"))
			assert(not isMatch("z/z", "/*"))
			assert(not isMatch("z/z", "/*/"))
			assert(not isMatch("z/z", "a/*"))
			assert(not isMatch("z/z", "a/*/*"))
			assert(not isMatch("z/z", "a/*/*/*"))
			assert(not isMatch("z/z", "a/*/*/*/*"))
			assert(not isMatch("z/z", "a/*/a"))
			assert(not isMatch("z/z", "a/*/b"))
			assert(isMatch("/a", "**/*"))
			assert(isMatch("/a", "*/*"))
			assert(isMatch("/a", "/*"))
			assert(isMatch("/a/", "**/*{,/}"))
			assert(isMatch("/a/", "*/*"))
			assert(isMatch("/a/", "*/*{,/}"))
			assert(isMatch("/a/", "/*"))
			assert(isMatch("/a/", "/*/"))
			assert(isMatch("/a/", "/*{,/}"))
			assert(isMatch("/b", "**/*"))
			assert(isMatch("/b", "*/*"))
			assert(isMatch("/b", "/*"))
			assert(isMatch("a", "*"))
			assert(isMatch("a", "**/*"))
			assert(isMatch("a/", "**/*{,/}"))
			assert(isMatch("a/", "*/"))
			assert(isMatch("a/", "*{,/}"))
			assert(isMatch("a/a", "**/*"))
			assert(isMatch("a/a", "*/*"))
			assert(isMatch("a/a", "a/*"))
			assert(isMatch("a/a/a", "**/*"))
			assert(isMatch("a/a/a", "*/*/*"))
			assert(isMatch("a/a/a", "a/*/*"))
			assert(isMatch("a/a/a", "a/*/a"))
			assert(isMatch("a/a/a/a", "**/*"))
			assert(isMatch("a/a/a/a", "*/*/*/*"))
			assert(isMatch("a/a/a/a", "a/*/*/*"))
			assert(isMatch("a/a/a/a/a", "**/*"))
			assert(isMatch("a/a/a/a/a", "*/*/*/*/*"))
			assert(isMatch("a/a/a/a/a", "a/*/*/*/*"))
			assert(isMatch("a/a/b", "**/*"))
			assert(isMatch("a/a/b", "a/*/*"))
			assert(isMatch("a/a/b", "a/*/b"))
			assert(isMatch("a/b", "**/*"))
			assert(isMatch("a/b", "*/*"))
			assert(isMatch("a/b", "a/*"))
			assert(isMatch("a/c", "**/*"))
			assert(isMatch("a/c", "*/*"))
			assert(isMatch("a/c", "a/*"))
			assert(isMatch("a/x", "**/*"))
			assert(isMatch("a/x", "*/*"))
			assert(isMatch("a/x", "a/*"))
			assert(isMatch("b", "*"))
			assert(isMatch("b", "**/*"))
			assert(isMatch("x/y", "**/*"))
			assert(isMatch("x/y", "*/*"))
			assert(isMatch("z/z", "**/*"))
			assert(isMatch("z/z", "*/*"))
		end)

		it("should match one or more directories with a globstar", function()
			assert(not isMatch("a/", "**/a"))
			assert(not isMatch("/a/", "**/a"))
			assert(not isMatch("a/a/", "**/a"))
			assert(not isMatch("/a/a/", "**/a"))
			assert(not isMatch("a/a/a/", "**/a"))
			assert(isMatch("a", "**/a"))
			assert(isMatch("a/a", "**/a"))
			assert(isMatch("a/a/a", "**/a"))
			assert(isMatch("/a", "**/a"))
			assert(isMatch("a/a/", "**/a/*{,/}"))
			assert(not isMatch("a/a/", "**/a/*", { strictSlashes = true }))
			assert(isMatch("/a/a", "**/a"))
			assert(isMatch("a", "a/**"))
			assert(not isMatch("/a", "a/**"))
			assert(not isMatch("/a/", "a/**"))
			assert(not isMatch("/a/a", "a/**"))
			assert(not isMatch("/a/a/", "a/**"))
			assert(isMatch("/a", "/a/**"))
			assert(isMatch("/a/", "/a/**"))
			assert(isMatch("/a/a", "/a/**"))
			assert(isMatch("/a/a/", "/a/**"))
			assert(isMatch("a/", "a/**"))
			assert(isMatch("a/a", "a/**"))
			assert(isMatch("a/a/", "a/**"))
			assert(isMatch("a/a/a", "a/**"))
			assert(isMatch("a/a/a/", "a/**"))
			assert(isMatch("a", "**/a/**"))
			assert(isMatch("/a", "**/a/**"))
			assert(isMatch("/a/", "**/a/**"))
			assert(isMatch("/a/a", "**/a/**"))
			assert(isMatch("/a/a/", "**/a/**"))
			assert(isMatch("a/", "**/a/**"))
			assert(isMatch("a/a", "**/a/**"))
			assert(isMatch("a/a/", "**/a/**"))
			assert(isMatch("a/a/a", "**/a/**"))
			assert(isMatch("a/a/a/", "**/a/**"))
		end)

		it("should match one or more characters", function()
			assert(isMatch("a", "*"))
			assert(isMatch("aa", "*"))
			assert(isMatch("aaa", "*"))
			assert(isMatch("aaaa", "*"))
			assert(isMatch("ab", "*"))
			assert(isMatch("b", "*"))
			assert(isMatch("bb", "*"))
			assert(isMatch("c", "*"))
			assert(isMatch("cc", "*"))
			assert(isMatch("cac", "*"))
			assert(not isMatch("a/a", "*"))
			assert(not isMatch("a/b", "*"))
			assert(not isMatch("a/c", "*"))
			assert(not isMatch("a/x", "*"))
			assert(not isMatch("a/a/a", "*"))
			assert(not isMatch("a/a/b", "*"))
			assert(not isMatch("a/a/a/a", "*"))
			assert(not isMatch("a/a/a/a/a", "*"))
			assert(not isMatch("x/y", "*"))
			assert(not isMatch("z/z", "*"))
			assert(isMatch("a", "a*"))
			assert(isMatch("aa", "a*"))
			assert(isMatch("aaa", "a*"))
			assert(isMatch("aaaa", "a*"))
			assert(isMatch("ab", "a*"))
			assert(not isMatch("b", "a*"))
			assert(not isMatch("bb", "a*"))
			assert(not isMatch("c", "a*"))
			assert(not isMatch("cc", "a*"))
			assert(not isMatch("cac", "a*"))
			assert(not isMatch("a/a", "a*"))
			assert(not isMatch("a/b", "a*"))
			assert(not isMatch("a/c", "a*"))
			assert(not isMatch("a/x", "a*"))
			assert(not isMatch("a/a/a", "a*"))
			assert(not isMatch("a/a/b", "a*"))
			assert(not isMatch("a/a/a/a", "a*"))
			assert(not isMatch("a/a/a/a/a", "a*"))
			assert(not isMatch("x/y", "a*"))
			assert(not isMatch("z/z", "a*"))
			assert(not isMatch("a", "*b"))
			assert(not isMatch("aa", "*b"))
			assert(not isMatch("aaa", "*b"))
			assert(not isMatch("aaaa", "*b"))
			assert(isMatch("ab", "*b"))
			assert(isMatch("b", "*b"))
			assert(isMatch("bb", "*b"))
			assert(not isMatch("c", "*b"))
			assert(not isMatch("cc", "*b"))
			assert(not isMatch("cac", "*b"))
			assert(not isMatch("a/a", "*b"))
			assert(not isMatch("a/b", "*b"))
			assert(not isMatch("a/c", "*b"))
			assert(not isMatch("a/x", "*b"))
			assert(not isMatch("a/a/a", "*b"))
			assert(not isMatch("a/a/b", "*b"))
			assert(not isMatch("a/a/a/a", "*b"))
			assert(not isMatch("a/a/a/a/a", "*b"))
			assert(not isMatch("x/y", "*b"))
			assert(not isMatch("z/z", "*b"))
		end)

		it("should match one or zero characters", function()
			assert(isMatch("a", "*"))
			assert(isMatch("aa", "*"))
			assert(isMatch("aaa", "*"))
			assert(isMatch("aaaa", "*"))
			assert(isMatch("ab", "*"))
			assert(isMatch("b", "*"))
			assert(isMatch("bb", "*"))
			assert(isMatch("c", "*"))
			assert(isMatch("cc", "*"))
			assert(isMatch("cac", "*"))
			assert(not isMatch("a/a", "*"))
			assert(not isMatch("a/b", "*"))
			assert(not isMatch("a/c", "*"))
			assert(not isMatch("a/x", "*"))
			assert(not isMatch("a/a/a", "*"))
			assert(not isMatch("a/a/b", "*"))
			assert(not isMatch("a/a/a/a", "*"))
			assert(not isMatch("a/a/a/a/a", "*"))
			assert(not isMatch("x/y", "*"))
			assert(not isMatch("z/z", "*"))
			assert(isMatch("a", "*a*"))
			assert(isMatch("aa", "*a*"))
			assert(isMatch("aaa", "*a*"))
			assert(isMatch("aaaa", "*a*"))
			assert(isMatch("ab", "*a*"))
			assert(not isMatch("b", "*a*"))
			assert(not isMatch("bb", "*a*"))
			assert(not isMatch("c", "*a*"))
			assert(not isMatch("cc", "*a*"))
			assert(isMatch("cac", "*a*"))
			assert(not isMatch("a/a", "*a*"))
			assert(not isMatch("a/b", "*a*"))
			assert(not isMatch("a/c", "*a*"))
			assert(not isMatch("a/x", "*a*"))
			assert(not isMatch("a/a/a", "*a*"))
			assert(not isMatch("a/a/b", "*a*"))
			assert(not isMatch("a/a/a/a", "*a*"))
			assert(not isMatch("a/a/a/a/a", "*a*"))
			assert(not isMatch("x/y", "*a*"))
			assert(not isMatch("z/z", "*a*"))
			assert(not isMatch("a", "*b*"))
			assert(not isMatch("aa", "*b*"))
			assert(not isMatch("aaa", "*b*"))
			assert(not isMatch("aaaa", "*b*"))
			assert(isMatch("ab", "*b*"))
			assert(isMatch("b", "*b*"))
			assert(isMatch("bb", "*b*"))
			assert(not isMatch("c", "*b*"))
			assert(not isMatch("cc", "*b*"))
			assert(not isMatch("cac", "*b*"))
			assert(not isMatch("a/a", "*b*"))
			assert(not isMatch("a/b", "*b*"))
			assert(not isMatch("a/c", "*b*"))
			assert(not isMatch("a/x", "*b*"))
			assert(not isMatch("a/a/a", "*b*"))
			assert(not isMatch("a/a/b", "*b*"))
			assert(not isMatch("a/a/a/a", "*b*"))
			assert(not isMatch("a/a/a/a/a", "*b*"))
			assert(not isMatch("x/y", "*b*"))
			assert(not isMatch("z/z", "*b*"))
			assert(not isMatch("a", "*c*"))
			assert(not isMatch("aa", "*c*"))
			assert(not isMatch("aaa", "*c*"))
			assert(not isMatch("aaaa", "*c*"))
			assert(not isMatch("ab", "*c*"))
			assert(not isMatch("b", "*c*"))
			assert(not isMatch("bb", "*c*"))
			assert(isMatch("c", "*c*"))
			assert(isMatch("cc", "*c*"))
			assert(isMatch("cac", "*c*"))
			assert(not isMatch("a/a", "*c*"))
			assert(not isMatch("a/b", "*c*"))
			assert(not isMatch("a/c", "*c*"))
			assert(not isMatch("a/x", "*c*"))
			assert(not isMatch("a/a/a", "*c*"))
			assert(not isMatch("a/a/b", "*c*"))
			assert(not isMatch("a/a/a/a", "*c*"))
			assert(not isMatch("a/a/a/a/a", "*c*"))
			assert(not isMatch("x/y", "*c*"))
			assert(not isMatch("z/z", "*c*"))
		end)

		it("should respect trailing slashes on paterns", function()
			assert(not isMatch("a", "*/"))
			assert(isMatch("a/", "*/"))
			assert(not isMatch("b", "*/"))
			assert(isMatch("b/", "*/"))
			assert(not isMatch("a/a", "*/"))
			assert(not isMatch("a/a/", "*/"))
			assert(not isMatch("a/b", "*/"))
			assert(not isMatch("a/b/", "*/"))
			assert(not isMatch("a/c", "*/"))
			assert(not isMatch("a/c/", "*/"))
			assert(not isMatch("a/x", "*/"))
			assert(not isMatch("a/x/", "*/"))
			assert(not isMatch("a/a/a", "*/"))
			assert(not isMatch("a/a/b", "*/"))
			assert(not isMatch("a/a/b/", "*/"))
			assert(not isMatch("a/a/a/", "*/"))
			assert(not isMatch("a/a/a/a", "*/"))
			assert(not isMatch("a/a/a/a/", "*/"))
			assert(not isMatch("a/a/a/a/a", "*/"))
			assert(not isMatch("a/a/a/a/a/", "*/"))
			assert(not isMatch("x/y", "*/"))
			assert(not isMatch("z/z", "*/"))
			assert(not isMatch("x/y/", "*/"))
			assert(not isMatch("z/z/", "*/"))
			assert(not isMatch("a/b/c/.d/e/", "*/"))
			assert(not isMatch("a", "*/*/"))
			assert(not isMatch("a/", "*/*/"))
			assert(not isMatch("b", "*/*/"))
			assert(not isMatch("b/", "*/*/"))
			assert(not isMatch("a/a", "*/*/"))
			assert(isMatch("a/a/", "*/*/"))
			assert(not isMatch("a/b", "*/*/"))
			assert(isMatch("a/b/", "*/*/"))
			assert(not isMatch("a/c", "*/*/"))
			assert(isMatch("a/c/", "*/*/"))
			assert(not isMatch("a/x", "*/*/"))
			assert(isMatch("a/x/", "*/*/"))
			assert(not isMatch("a/a/a", "*/*/"))
			assert(not isMatch("a/a/b", "*/*/"))
			assert(not isMatch("a/a/b/", "*/*/"))
			assert(not isMatch("a/a/a/", "*/*/"))
			assert(not isMatch("a/a/a/a", "*/*/"))
			assert(not isMatch("a/a/a/a/", "*/*/"))
			assert(not isMatch("a/a/a/a/a", "*/*/"))
			assert(not isMatch("a/a/a/a/a/", "*/*/"))
			assert(not isMatch("x/y", "*/*/"))
			assert(not isMatch("z/z", "*/*/"))
			assert(isMatch("x/y/", "*/*/"))
			assert(isMatch("z/z/", "*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "*/*/"))
			assert(not isMatch("a", "*/*/*/"))
			assert(not isMatch("a/", "*/*/*/"))
			assert(not isMatch("b", "*/*/*/"))
			assert(not isMatch("b/", "*/*/*/"))
			assert(not isMatch("a/a", "*/*/*/"))
			assert(not isMatch("a/a/", "*/*/*/"))
			assert(not isMatch("a/b", "*/*/*/"))
			assert(not isMatch("a/b/", "*/*/*/"))
			assert(not isMatch("a/c", "*/*/*/"))
			assert(not isMatch("a/c/", "*/*/*/"))
			assert(not isMatch("a/x", "*/*/*/"))
			assert(not isMatch("a/x/", "*/*/*/"))
			assert(not isMatch("a/a/a", "*/*/*/"))
			assert(not isMatch("a/a/b", "*/*/*/"))
			assert(isMatch("a/a/b/", "*/*/*/"))
			assert(isMatch("a/a/a/", "*/*/*/"))
			assert(not isMatch("a/a/a/a", "*/*/*/"))
			assert(not isMatch("a/a/a/a/", "*/*/*/"))
			assert(not isMatch("a/a/a/a/a", "*/*/*/"))
			assert(not isMatch("a/a/a/a/a/", "*/*/*/"))
			assert(not isMatch("x/y", "*/*/*/"))
			assert(not isMatch("z/z", "*/*/*/"))
			assert(not isMatch("x/y/", "*/*/*/"))
			assert(not isMatch("z/z/", "*/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "*/*/*/"))
			assert(not isMatch("a", "*/*/*/*/"))
			assert(not isMatch("a/", "*/*/*/*/"))
			assert(not isMatch("b", "*/*/*/*/"))
			assert(not isMatch("b/", "*/*/*/*/"))
			assert(not isMatch("a/a", "*/*/*/*/"))
			assert(not isMatch("a/a/", "*/*/*/*/"))
			assert(not isMatch("a/b", "*/*/*/*/"))
			assert(not isMatch("a/b/", "*/*/*/*/"))
			assert(not isMatch("a/c", "*/*/*/*/"))
			assert(not isMatch("a/c/", "*/*/*/*/"))
			assert(not isMatch("a/x", "*/*/*/*/"))
			assert(not isMatch("a/x/", "*/*/*/*/"))
			assert(not isMatch("a/a/a", "*/*/*/*/"))
			assert(not isMatch("a/a/b", "*/*/*/*/"))
			assert(not isMatch("a/a/b/", "*/*/*/*/"))
			assert(not isMatch("a/a/a/", "*/*/*/*/"))
			assert(not isMatch("a/a/a/a", "*/*/*/*/"))
			assert(isMatch("a/a/a/a/", "*/*/*/*/"))
			assert(not isMatch("a/a/a/a/a", "*/*/*/*/"))
			assert(not isMatch("a/a/a/a/a/", "*/*/*/*/"))
			assert(not isMatch("x/y", "*/*/*/*/"))
			assert(not isMatch("z/z", "*/*/*/*/"))
			assert(not isMatch("x/y/", "*/*/*/*/"))
			assert(not isMatch("z/z/", "*/*/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "*/*/*/*/"))
			assert(not isMatch("a", "*/*/*/*/*/"))
			assert(not isMatch("a/", "*/*/*/*/*/"))
			assert(not isMatch("b", "*/*/*/*/*/"))
			assert(not isMatch("b/", "*/*/*/*/*/"))
			assert(not isMatch("a/a", "*/*/*/*/*/"))
			assert(not isMatch("a/a/", "*/*/*/*/*/"))
			assert(not isMatch("a/b", "*/*/*/*/*/"))
			assert(not isMatch("a/b/", "*/*/*/*/*/"))
			assert(not isMatch("a/c", "*/*/*/*/*/"))
			assert(not isMatch("a/c/", "*/*/*/*/*/"))
			assert(not isMatch("a/x", "*/*/*/*/*/"))
			assert(not isMatch("a/x/", "*/*/*/*/*/"))
			assert(not isMatch("a/a/a", "*/*/*/*/*/"))
			assert(not isMatch("a/a/b", "*/*/*/*/*/"))
			assert(not isMatch("a/a/b/", "*/*/*/*/*/"))
			assert(not isMatch("a/a/a/", "*/*/*/*/*/"))
			assert(not isMatch("a/a/a/a", "*/*/*/*/*/"))
			assert(not isMatch("a/a/a/a/", "*/*/*/*/*/"))
			assert(not isMatch("a/a/a/a/a", "*/*/*/*/*/"))
			assert(isMatch("a/a/a/a/a/", "*/*/*/*/*/"))
			assert(not isMatch("x/y", "*/*/*/*/*/"))
			assert(not isMatch("z/z", "*/*/*/*/*/"))
			assert(not isMatch("x/y/", "*/*/*/*/*/"))
			assert(not isMatch("z/z/", "*/*/*/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "*/*/*/*/*/"))
			assert(not isMatch("a", "a/*/"))
			assert(not isMatch("a/", "a/*/"))
			assert(not isMatch("b", "a/*/"))
			assert(not isMatch("b/", "a/*/"))
			assert(not isMatch("a/a", "a/*/"))
			assert(isMatch("a/a/", "a/*/"))
			assert(not isMatch("a/b", "a/*/"))
			assert(isMatch("a/b/", "a/*/"))
			assert(not isMatch("a/c", "a/*/"))
			assert(isMatch("a/c/", "a/*/"))
			assert(not isMatch("a/x", "a/*/"))
			assert(isMatch("a/x/", "a/*/"))
			assert(not isMatch("a/a/a", "a/*/"))
			assert(not isMatch("a/a/b", "a/*/"))
			assert(not isMatch("a/a/b/", "a/*/"))
			assert(not isMatch("a/a/a/", "a/*/"))
			assert(not isMatch("a/a/a/a", "a/*/"))
			assert(not isMatch("a/a/a/a/", "a/*/"))
			assert(not isMatch("a/a/a/a/a", "a/*/"))
			assert(not isMatch("a/a/a/a/a/", "a/*/"))
			assert(not isMatch("x/y", "a/*/"))
			assert(not isMatch("z/z", "a/*/"))
			assert(not isMatch("x/y/", "a/*/"))
			assert(not isMatch("z/z/", "a/*/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/"))
			assert(not isMatch("a", "a/*/*/"))
			assert(not isMatch("a/", "a/*/*/"))
			assert(not isMatch("b", "a/*/*/"))
			assert(not isMatch("b/", "a/*/*/"))
			assert(not isMatch("a/a", "a/*/*/"))
			assert(not isMatch("a/a/", "a/*/*/"))
			assert(not isMatch("a/b", "a/*/*/"))
			assert(not isMatch("a/b/", "a/*/*/"))
			assert(not isMatch("a/c", "a/*/*/"))
			assert(not isMatch("a/c/", "a/*/*/"))
			assert(not isMatch("a/x", "a/*/*/"))
			assert(not isMatch("a/x/", "a/*/*/"))
			assert(not isMatch("a/a/a", "a/*/*/"))
			assert(not isMatch("a/a/b", "a/*/*/"))
			assert(isMatch("a/a/b/", "a/*/*/"))
			assert(isMatch("a/a/a/", "a/*/*/"))
			assert(not isMatch("a/a/a/a", "a/*/*/"))
			assert(not isMatch("a/a/a/a/", "a/*/*/"))
			assert(not isMatch("a/a/a/a/a", "a/*/*/"))
			assert(not isMatch("a/a/a/a/a/", "a/*/*/"))
			assert(not isMatch("x/y", "a/*/*/"))
			assert(not isMatch("z/z", "a/*/*/"))
			assert(not isMatch("x/y/", "a/*/*/"))
			assert(not isMatch("z/z/", "a/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/*/"))
			assert(not isMatch("a", "a/*/*/*/"))
			assert(not isMatch("a/", "a/*/*/*/"))
			assert(not isMatch("b", "a/*/*/*/"))
			assert(not isMatch("b/", "a/*/*/*/"))
			assert(not isMatch("a/a", "a/*/*/*/"))
			assert(not isMatch("a/a/", "a/*/*/*/"))
			assert(not isMatch("a/b", "a/*/*/*/"))
			assert(not isMatch("a/b/", "a/*/*/*/"))
			assert(not isMatch("a/c", "a/*/*/*/"))
			assert(not isMatch("a/c/", "a/*/*/*/"))
			assert(not isMatch("a/x", "a/*/*/*/"))
			assert(not isMatch("a/x/", "a/*/*/*/"))
			assert(not isMatch("a/a/a", "a/*/*/*/"))
			assert(not isMatch("a/a/b", "a/*/*/*/"))
			assert(not isMatch("a/a/b/", "a/*/*/*/"))
			assert(not isMatch("a/a/a/", "a/*/*/*/"))
			assert(not isMatch("a/a/a/a", "a/*/*/*/"))
			assert(isMatch("a/a/a/a/", "a/*/*/*/"))
			assert(not isMatch("a/a/a/a/a", "a/*/*/*/"))
			assert(not isMatch("a/a/a/a/a/", "a/*/*/*/"))
			assert(not isMatch("x/y", "a/*/*/*/"))
			assert(not isMatch("z/z", "a/*/*/*/"))
			assert(not isMatch("x/y/", "a/*/*/*/"))
			assert(not isMatch("z/z/", "a/*/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/*/*/"))
			assert(not isMatch("a", "a/*/*/*/*/"))
			assert(not isMatch("a/", "a/*/*/*/*/"))
			assert(not isMatch("b", "a/*/*/*/*/"))
			assert(not isMatch("b/", "a/*/*/*/*/"))
			assert(not isMatch("a/a", "a/*/*/*/*/"))
			assert(not isMatch("a/a/", "a/*/*/*/*/"))
			assert(not isMatch("a/b", "a/*/*/*/*/"))
			assert(not isMatch("a/b/", "a/*/*/*/*/"))
			assert(not isMatch("a/c", "a/*/*/*/*/"))
			assert(not isMatch("a/c/", "a/*/*/*/*/"))
			assert(not isMatch("a/x", "a/*/*/*/*/"))
			assert(not isMatch("a/x/", "a/*/*/*/*/"))
			assert(not isMatch("a/a/a", "a/*/*/*/*/"))
			assert(not isMatch("a/a/b", "a/*/*/*/*/"))
			assert(not isMatch("a/a/b/", "a/*/*/*/*/"))
			assert(not isMatch("a/a/a/", "a/*/*/*/*/"))
			assert(not isMatch("a/a/a/a", "a/*/*/*/*/"))
			assert(not isMatch("a/a/a/a/", "a/*/*/*/*/"))
			assert(not isMatch("a/a/a/a/a", "a/*/*/*/*/"))
			assert(isMatch("a/a/a/a/a/", "a/*/*/*/*/"))
			assert(not isMatch("x/y", "a/*/*/*/*/"))
			assert(not isMatch("z/z", "a/*/*/*/*/"))
			assert(not isMatch("x/y/", "a/*/*/*/*/"))
			assert(not isMatch("z/z/", "a/*/*/*/*/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/*/*/*/"))
			assert(not isMatch("a", "a/*/a/"))
			assert(not isMatch("a/", "a/*/a/"))
			assert(not isMatch("b", "a/*/a/"))
			assert(not isMatch("b/", "a/*/a/"))
			assert(not isMatch("a/a", "a/*/a/"))
			assert(not isMatch("a/a/", "a/*/a/"))
			assert(not isMatch("a/b", "a/*/a/"))
			assert(not isMatch("a/b/", "a/*/a/"))
			assert(not isMatch("a/c", "a/*/a/"))
			assert(not isMatch("a/c/", "a/*/a/"))
			assert(not isMatch("a/x", "a/*/a/"))
			assert(not isMatch("a/x/", "a/*/a/"))
			assert(not isMatch("a/a/a", "a/*/a/"))
			assert(not isMatch("a/a/b", "a/*/a/"))
			assert(not isMatch("a/a/b/", "a/*/a/"))
			assert(isMatch("a/a/a/", "a/*/a/"))
			assert(not isMatch("a/a/a/a", "a/*/a/"))
			assert(not isMatch("a/a/a/a/", "a/*/a/"))
			assert(not isMatch("a/a/a/a/a", "a/*/a/"))
			assert(not isMatch("a/a/a/a/a/", "a/*/a/"))
			assert(not isMatch("x/y", "a/*/a/"))
			assert(not isMatch("z/z", "a/*/a/"))
			assert(not isMatch("x/y/", "a/*/a/"))
			assert(not isMatch("z/z/", "a/*/a/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/a/"))
			assert(not isMatch("a", "a/*/b/"))
			assert(not isMatch("a/", "a/*/b/"))
			assert(not isMatch("b", "a/*/b/"))
			assert(not isMatch("b/", "a/*/b/"))
			assert(not isMatch("a/a", "a/*/b/"))
			assert(not isMatch("a/a/", "a/*/b/"))
			assert(not isMatch("a/b", "a/*/b/"))
			assert(not isMatch("a/b/", "a/*/b/"))
			assert(not isMatch("a/c", "a/*/b/"))
			assert(not isMatch("a/c/", "a/*/b/"))
			assert(not isMatch("a/x", "a/*/b/"))
			assert(not isMatch("a/x/", "a/*/b/"))
			assert(not isMatch("a/a/a", "a/*/b/"))
			assert(not isMatch("a/a/b", "a/*/b/"))
			assert(isMatch("a/a/b/", "a/*/b/"))
			assert(not isMatch("a/a/a/", "a/*/b/"))
			assert(not isMatch("a/a/a/a", "a/*/b/"))
			assert(not isMatch("a/a/a/a/", "a/*/b/"))
			assert(not isMatch("a/a/a/a/a", "a/*/b/"))
			assert(not isMatch("a/a/a/a/a/", "a/*/b/"))
			assert(not isMatch("x/y", "a/*/b/"))
			assert(not isMatch("z/z", "a/*/b/"))
			assert(not isMatch("x/y/", "a/*/b/"))
			assert(not isMatch("z/z/", "a/*/b/"))
			assert(not isMatch("a/b/c/.d/e/", "a/*/b/"))
		end)

		itFIXME("should match a literal star when escaped", function()
			assert(not isMatch(".md", "\\*"))
			assert(not isMatch("a**a.md", "\\*"))
			assert(not isMatch("**a.md", "\\*"))
			assert(not isMatch("**/a.md", "\\*"))
			assert(not isMatch("**.md", "\\*"))
			assert(not isMatch(".md", "\\*"))
			assert(isMatch("*", "\\*"))
			assert(not isMatch("**", "\\*"))
			assert(not isMatch("*.md", "\\*"))
			assert(not isMatch(".md", "\\*.md"))
			assert(not isMatch("a**a.md", "\\*.md"))
			assert(not isMatch("**a.md", "\\*.md"))
			assert(not isMatch("**/a.md", "\\*.md"))
			assert(not isMatch("**.md", "\\*.md"))
			assert(not isMatch(".md", "\\*.md"))
			assert(not isMatch("*", "\\*.md"))
			assert(not isMatch("**", "\\*.md"))
			assert(isMatch("*.md", "\\*.md"))
			assert(not isMatch(".md", "\\**.md"))
			assert(not isMatch("a**a.md", "\\**.md"))
			assert(isMatch("**a.md", "\\**.md"))
			assert(not isMatch("**/a.md", "\\**.md"))
			assert(isMatch("**.md", "\\**.md"))
			assert(not isMatch(".md", "\\**.md"))
			assert(not isMatch("*", "\\**.md"))
			assert(not isMatch("**", "\\**.md"))
			assert(isMatch("*.md", "\\**.md"))
			assert(not isMatch(".md", "a\\**.md"))
			assert(isMatch("a**a.md", "a\\**.md"))
			assert(not isMatch("**a.md", "a\\**.md"))
			assert(not isMatch("**/a.md", "a\\**.md"))
			assert(not isMatch("**.md", "a\\**.md"))
			assert(not isMatch(".md", "a\\**.md"))
			assert(not isMatch("*", "a\\**.md"))
			assert(not isMatch("**", "a\\**.md"))
			assert(not isMatch("*.md", "a\\**.md"))
		end)

		it("should match file paths", function()
			assert(not isMatch("a/.b", "a/**/z/*.md"))
			assert(not isMatch("a/b/c/j/e/z/c.txt", "a/**/j/**/z/*.md"))
			assert(not isMatch("a/b/z/.a", "a/**/z/*.a"))
			assert(not isMatch("a/b/z/.a", "a/*/z/*.a"))
			assert(not isMatch("foo.txt", "*/*.txt"))
			assert(isMatch("a/.b", "a/.*"))
			assert(isMatch("a/b/c/d/e/j/n/p/o/z/c.md", "a/**/j/**/z/*.md"))
			assert(isMatch("a/b/c/d/e/z/c.md", "a/**/z/*.md"))
			assert(isMatch("a/b/c/xyz.md", "a/b/c/*.md"))
			assert(isMatch("a/b/z/.a", "a/*/z/.a"))
			assert(isMatch("a/bb.bb/aa/b.b/aa/c/xyz.md", "a/**/c/*.md"))
			assert(isMatch("a/bb.bb/aa/bb/aa/c/xyz.md", "a/**/c/*.md"))
			assert(isMatch("a/bb.bb/c/xyz.md", "a/*/c/*.md"))
			assert(isMatch("a/bb/c/xyz.md", "a/*/c/*.md"))
			assert(isMatch("a/bbbb/c/xyz.md", "a/*/c/*.md"))
			assert(isMatch("foo.txt", "**/foo.txt"))
			assert(isMatch("foo/bar.txt", "**/*.txt"))
			assert(isMatch("foo/bar/baz.txt", "**/*.txt"))
		end)

		it("should match paths with leading `./` when pattern has `./`", function()
			local function format(str)
				return str:gsub("^%./", "")
			end
			assert(not isMatch("./a/b/c/d/e/z/c.md", "./a/**/j/**/z/*.md", { format = format }))
			assert(not isMatch("./a/b/c/j/e/z/c.txt", "./a/**/j/**/z/*.md", { format = format }))
			assert(isMatch("./a/b/c/d/e/j/n/p/o/z/c.md", "./a/**/j/**/z/*.md", { format = format }))
			assert(isMatch("./a/b/c/d/e/z/c.md", "./a/**/z/*.md", { format = format }))
			assert(isMatch("./a/b/c/j/e/z/c.md", "./a/**/j/**/z/*.md", { format = format }))
			assert(isMatch("./a/b/z/.a", "./a/**/z/.a", { format = format }))
		end)

		itFIXME("should match leading slashes", function()
			assert(not isMatch("ef", "/*"))
			assert(isMatch("/ef", "/*"))
			assert(isMatch("/foo/bar.txt", "/foo/*"))
			assert(isMatch("/foo/bar.txt", "/foo/**"))
			assert(isMatch("/foo/bar.txt", "/foo/**/**/*.txt"))
			assert(isMatch("/foo/bar.txt", "/foo/**/**/bar.txt"))
			assert(isMatch("/foo/bar.txt", "/foo/**/*.txt"))
			assert(isMatch("/foo/bar.txt", "/foo/**/bar.txt"))
			assert(not isMatch("/foo/bar.txt", "/foo/*/bar.txt"))
			assert(not isMatch("/foo/bar/baz.txt", "/foo/*"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/**"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/**"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/**/*.txt"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/**/*/*.txt"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/**/*/baz.txt"))
			assert(not isMatch("/foo/bar/baz.txt", "/foo/*.txt"))
			assert(isMatch("/foo/bar/baz.txt", "/foo/*/*.txt"))
			assert(not isMatch("/foo/bar/baz.txt", "/foo/*/*/baz.txt"))
			assert(not isMatch("/foo/bar/baz.txt", "/foo/bar**"))
			assert(isMatch("/foo/bar/baz/qux.txt", "**/*.txt"))
			assert(not isMatch("/foo/bar/baz/qux.txt", "**/.txt"))
			assert(not isMatch("/foo/bar/baz/qux.txt", "*/*.txt"))
			assert(not isMatch("/foo/bar/baz/qux.txt", "/foo/**.txt"))
			assert(isMatch("/foo/bar/baz/qux.txt", "/foo/**/*.txt"))
			assert(not isMatch("/foo/bar/baz/qux.txt", "/foo/*/*.txt"))
			assert(not isMatch("/foo/bar/baz/qux.txt", "/foo/bar**/*.txt"))
			assert(not isMatch("/.txt", "*.txt"))
			assert(not isMatch("/.txt", "/*.txt"))
			assert(not isMatch("/.txt", "*/*.txt"))
			assert(not isMatch("/.txt", "**/*.txt"))
			assert(not isMatch("/.txt", "*.txt", { dot = true }))
			assert(isMatch("/.txt", "/*.txt", { dot = true }))
			assert(isMatch("/.txt", "*/*.txt", { dot = true }))
			assert(isMatch("/.txt", "**/*.txt", { dot = true }))
		end)

		it("should match double slashes", function()
			assert(not isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*"))
			assert(not isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*"))
			assert(isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/**"))
			assert(not isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/**", { noglobstar = true }))
			assert(isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/**"))
			assert(isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/**/app.min.js"))
			assert(isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*/*/app.min.js"))
			assert(
				isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*/*/app.min.js", { noglobstar = true })
			)
			assert(not isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*/app.min.js"))
			assert(not isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/*/app.min.js"))
			assert(isMatch("https://foo.com/bar/baz/app.min.js", "https://foo.com/**/app.min.js"))
			assert(
				not isMatch(
					"https://foo.com/bar/baz/app.min.js",
					"https://foo.com/**/app.min.js",
					{ noglobstar = true }
				)
			)
		end)
	end)
end
