|
@@ -1921,5 +1921,217 @@ namespace Jint.Tests.Runtime
|
|
|
|
|
|
Assert.Equal(expected, result);
|
|
Assert.Equal(expected, result);
|
|
}
|
|
}
|
|
|
|
+
|
|
|
|
+ [Theory]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/empty-string.js
|
|
|
|
+ [InlineData("", "unescape('')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/four-ignore-bad-u.js
|
|
|
|
+ [InlineData("%U0000", "unescape('%U0000')")]
|
|
|
|
+ [InlineData("%t0000", "unescape('%t0000')")]
|
|
|
|
+ [InlineData("%v0000", "unescape('%v0000')")]
|
|
|
|
+ [InlineData("%" + "\x00" + "00", "unescape('%%0000')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/four-ignore-end-str.js
|
|
|
|
+ [InlineData("%u", "unescape('%u')")]
|
|
|
|
+ [InlineData("%u0", "unescape('%u0')")]
|
|
|
|
+ [InlineData("%u1", "unescape('%u1')")]
|
|
|
|
+ [InlineData("%u2", "unescape('%u2')")]
|
|
|
|
+ [InlineData("%u3", "unescape('%u3')")]
|
|
|
|
+ [InlineData("%u4", "unescape('%u4')")]
|
|
|
|
+ [InlineData("%u5", "unescape('%u5')")]
|
|
|
|
+ [InlineData("%u6", "unescape('%u6')")]
|
|
|
|
+ [InlineData("%u7", "unescape('%u7')")]
|
|
|
|
+ [InlineData("%u8", "unescape('%u8')")]
|
|
|
|
+ [InlineData("%u9", "unescape('%u9')")]
|
|
|
|
+ [InlineData("%ua", "unescape('%ua')")]
|
|
|
|
+ [InlineData("%uA", "unescape('%uA')")]
|
|
|
|
+ [InlineData("%ub", "unescape('%ub')")]
|
|
|
|
+ [InlineData("%uB", "unescape('%uB')")]
|
|
|
|
+ [InlineData("%uc", "unescape('%uc')")]
|
|
|
|
+ [InlineData("%uC", "unescape('%uC')")]
|
|
|
|
+ [InlineData("%ud", "unescape('%ud')")]
|
|
|
|
+ [InlineData("%uD", "unescape('%uD')")]
|
|
|
|
+ [InlineData("%ue", "unescape('%ue')")]
|
|
|
|
+ [InlineData("%uE", "unescape('%uE')")]
|
|
|
|
+ [InlineData("%uf", "unescape('%uf')")]
|
|
|
|
+ [InlineData("%uF", "unescape('%uF')")]
|
|
|
|
+ [InlineData("%u00", "unescape('%u00')")]
|
|
|
|
+ [InlineData("%u01", "unescape('%u01')")]
|
|
|
|
+ [InlineData("%u02", "unescape('%u02')")]
|
|
|
|
+ [InlineData("%u03", "unescape('%u03')")]
|
|
|
|
+ [InlineData("%u04", "unescape('%u04')")]
|
|
|
|
+ [InlineData("%u05", "unescape('%u05')")]
|
|
|
|
+ [InlineData("%u06", "unescape('%u06')")]
|
|
|
|
+ [InlineData("%u07", "unescape('%u07')")]
|
|
|
|
+ [InlineData("%u08", "unescape('%u08')")]
|
|
|
|
+ [InlineData("%u09", "unescape('%u09')")]
|
|
|
|
+ [InlineData("%u0a", "unescape('%u0a')")]
|
|
|
|
+ [InlineData("%u0A", "unescape('%u0A')")]
|
|
|
|
+ [InlineData("%u0b", "unescape('%u0b')")]
|
|
|
|
+ [InlineData("%u0B", "unescape('%u0B')")]
|
|
|
|
+ [InlineData("%u0c", "unescape('%u0c')")]
|
|
|
|
+ [InlineData("%u0C", "unescape('%u0C')")]
|
|
|
|
+ [InlineData("%u0d", "unescape('%u0d')")]
|
|
|
|
+ [InlineData("%u0D", "unescape('%u0D')")]
|
|
|
|
+ [InlineData("%u0e", "unescape('%u0e')")]
|
|
|
|
+ [InlineData("%u0E", "unescape('%u0E')")]
|
|
|
|
+ [InlineData("%u0f", "unescape('%u0f')")]
|
|
|
|
+ [InlineData("%u0F", "unescape('%u0F')")]
|
|
|
|
+ [InlineData("%u000", "unescape('%u000')")]
|
|
|
|
+ [InlineData("%u001", "unescape('%u001')")]
|
|
|
|
+ [InlineData("%u002", "unescape('%u002')")]
|
|
|
|
+ [InlineData("%u003", "unescape('%u003')")]
|
|
|
|
+ [InlineData("%u004", "unescape('%u004')")]
|
|
|
|
+ [InlineData("%u005", "unescape('%u005')")]
|
|
|
|
+ [InlineData("%u006", "unescape('%u006')")]
|
|
|
|
+ [InlineData("%u007", "unescape('%u007')")]
|
|
|
|
+ [InlineData("%u008", "unescape('%u008')")]
|
|
|
|
+ [InlineData("%u009", "unescape('%u009')")]
|
|
|
|
+ [InlineData("%u00a", "unescape('%u00a')")]
|
|
|
|
+ [InlineData("%u00A", "unescape('%u00A')")]
|
|
|
|
+ [InlineData("%u00b", "unescape('%u00b')")]
|
|
|
|
+ [InlineData("%u00B", "unescape('%u00B')")]
|
|
|
|
+ [InlineData("%u00c", "unescape('%u00c')")]
|
|
|
|
+ [InlineData("%u00C", "unescape('%u00C')")]
|
|
|
|
+ [InlineData("%u00d", "unescape('%u00d')")]
|
|
|
|
+ [InlineData("%u00D", "unescape('%u00D')")]
|
|
|
|
+ [InlineData("%u00e", "unescape('%u00e')")]
|
|
|
|
+ [InlineData("%u00E", "unescape('%u00E')")]
|
|
|
|
+ [InlineData("%u00f", "unescape('%u00f')")]
|
|
|
|
+ [InlineData("%u00F", "unescape('%u00F')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/four-ignore-non-hex.js
|
|
|
|
+ [InlineData("%u000%0", "unescape('%u000%0')")]
|
|
|
|
+ [InlineData("%u000g0", "unescape('%u000g0')")]
|
|
|
|
+ [InlineData("%u000G0", "unescape('%u000G0')")]
|
|
|
|
+ [InlineData("%u00g00", "unescape('%u00g00')")]
|
|
|
|
+ [InlineData("%u00G00", "unescape('%u00G00')")]
|
|
|
|
+ [InlineData("%u0g000", "unescape('%u0g000')")]
|
|
|
|
+ [InlineData("%u0G000", "unescape('%u0G000')")]
|
|
|
|
+ [InlineData("%ug0000", "unescape('%ug0000')")]
|
|
|
|
+ [InlineData("%uG0000", "unescape('%uG0000')")]
|
|
|
|
+ [InlineData("%u000u0", "unescape('%u000u0')")]
|
|
|
|
+ [InlineData("%u000U0", "unescape('%u000U0')")]
|
|
|
|
+ [InlineData("%u00u00", "unescape('%u00u00')")]
|
|
|
|
+ [InlineData("%u00U00", "unescape('%u00U00')")]
|
|
|
|
+ [InlineData("%u0u000", "unescape('%u0u000')")]
|
|
|
|
+ [InlineData("%u0U000", "unescape('%u0U000')")]
|
|
|
|
+ [InlineData("%uu0000", "unescape('%uu0000')")]
|
|
|
|
+ [InlineData("%uU0000", "unescape('%uU0000')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/four.js
|
|
|
|
+ [InlineData("%0" + "\x00" + "0", "unescape('%0%u00000')")]
|
|
|
|
+ [InlineData("%0" + "\x01" + "0", "unescape('%0%u00010')")]
|
|
|
|
+ [InlineData("%0)0", "unescape('%0%u00290')")]
|
|
|
|
+ [InlineData("%0*0", "unescape('%0%u002a0')")]
|
|
|
|
+ [InlineData("%0*0", "unescape('%0%u002A0')")]
|
|
|
|
+ [InlineData("%0+0", "unescape('%0%u002b0')")]
|
|
|
|
+ [InlineData("%0+0", "unescape('%0%u002B0')")]
|
|
|
|
+ [InlineData("%0,0", "unescape('%0%u002c0')")]
|
|
|
|
+ [InlineData("%0,0", "unescape('%0%u002C0')")]
|
|
|
|
+ [InlineData("%0-0", "unescape('%0%u002d0')")]
|
|
|
|
+ [InlineData("%0-0", "unescape('%0%u002D0')")]
|
|
|
|
+ [InlineData("%090", "unescape('%0%u00390')")]
|
|
|
|
+ [InlineData("%0:0", "unescape('%0%u003a0')")]
|
|
|
|
+ [InlineData("%0:0", "unescape('%0%u003A0')")]
|
|
|
|
+ [InlineData("%0?0", "unescape('%0%u003f0')")]
|
|
|
|
+ [InlineData("%0?0", "unescape('%0%u003F0')")]
|
|
|
|
+ [InlineData("%0@0", "unescape('%0%u00400')")]
|
|
|
|
+ [InlineData("%0Z0", "unescape('%0%u005a0')")]
|
|
|
|
+ [InlineData("%0Z0", "unescape('%0%u005A0')")]
|
|
|
|
+ [InlineData("%0[0", "unescape('%0%u005b0')")]
|
|
|
|
+ [InlineData("%0[0", "unescape('%0%u005B0')")]
|
|
|
|
+ [InlineData("%0^0", "unescape('%0%u005e0')")]
|
|
|
|
+ [InlineData("%0^0", "unescape('%0%u005E0')")]
|
|
|
|
+ [InlineData("%0_0", "unescape('%0%u005f0')")]
|
|
|
|
+ [InlineData("%0_0", "unescape('%0%u005F0')")]
|
|
|
|
+ [InlineData("%0`0", "unescape('%0%u00600')")]
|
|
|
|
+ [InlineData("%0a0", "unescape('%0%u00610')")]
|
|
|
|
+ [InlineData("%0z0", "unescape('%0%u007a0')")]
|
|
|
|
+ [InlineData("%0z0", "unescape('%0%u007A0')")]
|
|
|
|
+ [InlineData("%0{0", "unescape('%0%u007b0')")]
|
|
|
|
+ [InlineData("%0{0", "unescape('%0%u007B0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%ufffe0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%uFffe0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%ufFfe0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%uffFe0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%ufffE0')")]
|
|
|
|
+ [InlineData("%0" + "\ufffe" + "0", "unescape('%0%uFFFE0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%uffff0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%uFfff0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%ufFff0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%uffFf0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%ufffF0')")]
|
|
|
|
+ [InlineData("%0" + "\uffff" + "0", "unescape('%0%uFFFF0')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/two-ignore-end-str.js
|
|
|
|
+ [InlineData("%", "unescape('%')")]
|
|
|
|
+ [InlineData("%0", "unescape('%0')")]
|
|
|
|
+ [InlineData("%1", "unescape('%1')")]
|
|
|
|
+ [InlineData("%2", "unescape('%2')")]
|
|
|
|
+ [InlineData("%3", "unescape('%3')")]
|
|
|
|
+ [InlineData("%4", "unescape('%4')")]
|
|
|
|
+ [InlineData("%5", "unescape('%5')")]
|
|
|
|
+ [InlineData("%6", "unescape('%6')")]
|
|
|
|
+ [InlineData("%7", "unescape('%7')")]
|
|
|
|
+ [InlineData("%8", "unescape('%8')")]
|
|
|
|
+ [InlineData("%9", "unescape('%9')")]
|
|
|
|
+ [InlineData("%a", "unescape('%a')")]
|
|
|
|
+ [InlineData("%A", "unescape('%A')")]
|
|
|
|
+ [InlineData("%b", "unescape('%b')")]
|
|
|
|
+ [InlineData("%B", "unescape('%B')")]
|
|
|
|
+ [InlineData("%c", "unescape('%c')")]
|
|
|
|
+ [InlineData("%C", "unescape('%C')")]
|
|
|
|
+ [InlineData("%d", "unescape('%d')")]
|
|
|
|
+ [InlineData("%D", "unescape('%D')")]
|
|
|
|
+ [InlineData("%e", "unescape('%e')")]
|
|
|
|
+ [InlineData("%E", "unescape('%E')")]
|
|
|
|
+ [InlineData("%f", "unescape('%f')")]
|
|
|
|
+ [InlineData("%F", "unescape('%F')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/two-ignore-non-hex.js
|
|
|
|
+ [InlineData("%0%0", "unescape('%0%0')")]
|
|
|
|
+ [InlineData("%0g0", "unescape('%0g0')")]
|
|
|
|
+ [InlineData("%0G0", "unescape('%0G0')")]
|
|
|
|
+ [InlineData("%g00", "unescape('%g00')")]
|
|
|
|
+ [InlineData("%G00", "unescape('%G00')")]
|
|
|
|
+ [InlineData("%0u0", "unescape('%0u0')")]
|
|
|
|
+ [InlineData("%0U0", "unescape('%0U0')")]
|
|
|
|
+ [InlineData("%u00", "unescape('%u00')")]
|
|
|
|
+ [InlineData("%U00", "unescape('%U00')")]
|
|
|
|
+ //https://github.com/tc39/test262/blob/master/test/annexB/built-ins/unescape/two.js
|
|
|
|
+ [InlineData("%0" + "\x00" + "00", "unescape('%0%0000')")]
|
|
|
|
+ [InlineData("%0" + "\x01" + "00", "unescape('%0%0100')")]
|
|
|
|
+ [InlineData("%0)00", "unescape('%0%2900')")]
|
|
|
|
+ [InlineData("%0*00", "unescape('%0%2a00')")]
|
|
|
|
+ [InlineData("%0*00", "unescape('%0%2A00')")]
|
|
|
|
+ [InlineData("%0+00", "unescape('%0%2b00')")]
|
|
|
|
+ [InlineData("%0+00", "unescape('%0%2B00')")]
|
|
|
|
+ [InlineData("%0,00", "unescape('%0%2c00')")]
|
|
|
|
+ [InlineData("%0,00", "unescape('%0%2C00')")]
|
|
|
|
+ [InlineData("%0-00", "unescape('%0%2d00')")]
|
|
|
|
+ [InlineData("%0-00", "unescape('%0%2D00')")]
|
|
|
|
+ [InlineData("%0900", "unescape('%0%3900')")]
|
|
|
|
+ [InlineData("%0:00", "unescape('%0%3a00')")]
|
|
|
|
+ [InlineData("%0:00", "unescape('%0%3A00')")]
|
|
|
|
+ [InlineData("%0?00", "unescape('%0%3f00')")]
|
|
|
|
+ [InlineData("%0?00", "unescape('%0%3F00')")]
|
|
|
|
+ [InlineData("%0@00", "unescape('%0%4000')")]
|
|
|
|
+ [InlineData("%0Z00", "unescape('%0%5a00')")]
|
|
|
|
+ [InlineData("%0Z00", "unescape('%0%5A00')")]
|
|
|
|
+ [InlineData("%0[00", "unescape('%0%5b00')")]
|
|
|
|
+ [InlineData("%0[00", "unescape('%0%5B00')")]
|
|
|
|
+ [InlineData("%0^00", "unescape('%0%5e00')")]
|
|
|
|
+ [InlineData("%0^00", "unescape('%0%5E00')")]
|
|
|
|
+ [InlineData("%0_00", "unescape('%0%5f00')")]
|
|
|
|
+ [InlineData("%0_00", "unescape('%0%5F00')")]
|
|
|
|
+ [InlineData("%0`00", "unescape('%0%6000')")]
|
|
|
|
+ [InlineData("%0a00", "unescape('%0%6100')")]
|
|
|
|
+ [InlineData("%0z00", "unescape('%0%7a00')")]
|
|
|
|
+ [InlineData("%0z00", "unescape('%0%7A00')")]
|
|
|
|
+ [InlineData("%0{00", "unescape('%0%7b00')")]
|
|
|
|
+ [InlineData("%0{00", "unescape('%0%7B00')")]
|
|
|
|
+ public void ShouldEvaluateUnescape(object expected, string source)
|
|
|
|
+ {
|
|
|
|
+ var engine = new Engine();
|
|
|
|
+ var result = engine.Execute(source).GetCompletionValue().ToObject();
|
|
|
|
+
|
|
|
|
+ Assert.Equal(expected, result);
|
|
|
|
+ }
|
|
}
|
|
}
|
|
}
|
|
}
|