index.js 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import test from 'ava';
  2. import unescapeJs from '../dist/index.js';
  3. test('usual escape sequences', t => {
  4. t.is(unescapeJs('---\\0---'), '---\0---');
  5. t.is(unescapeJs('---\\b---'), '---\b---');
  6. t.is(unescapeJs('---\\f---'), '---\f---');
  7. t.is(unescapeJs('---\\n---'), '---\n---');
  8. t.is(unescapeJs('---\\r---'), '---\r---');
  9. t.is(unescapeJs('---\\t---'), '---\t---');
  10. t.is(unescapeJs('---\\v---'), '---\v---');
  11. t.is(unescapeJs("---\\'---"), '---\'---');
  12. t.is(unescapeJs('---\\"---'), '---\"---');
  13. t.is(unescapeJs('---\\\\---'), '---\\---');
  14. });
  15. test('octal escape sequences', t => {
  16. // '---S---' instead of '---\123---' because octal literals are prohibited in strict mode
  17. t.is(unescapeJs('---\\123---'), '---S---');
  18. t.is(unescapeJs('---\\040---'), '--- ---');
  19. t.is(unescapeJs('---\\54---'), '---,---');
  20. t.is(unescapeJs('---\\4---'), '---\u{4}---');
  21. });
  22. test('short hex escape sequences', t => {
  23. t.is(unescapeJs('---\\xAC---'), '---\xAC---');
  24. });
  25. test('long hex escape sequences', t => {
  26. t.is(unescapeJs('---\\u00A9---'), '---\u00A9---');
  27. });
  28. test('variable hex escape sequences', t => {
  29. t.is(unescapeJs('---\\u{A9}---'), '---\u{A9}---');
  30. t.is(unescapeJs('---\\u{2F804}---'), '---\u{2F804}---');
  31. });
  32. test('avoids double unescape cascade', t => {
  33. t.is(unescapeJs('---\\\\x41---'), '---\\x41---');
  34. t.is(unescapeJs('---\\x5cx41---'), '---\\x41---');
  35. });
  36. test('python hex escape sequences', t => {
  37. t.is(unescapeJs('---\\U000000A9---'), '---\u00A9---');
  38. t.is(unescapeJs('---\\U0001F3B5---'), '---\uD83C\uDFB5---');
  39. });