normalize.js 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. //-------------------------------------------------------------------------------------------------------
  2. // Copyright (C) Microsoft. All rights reserved.
  3. // Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
  4. //-------------------------------------------------------------------------------------------------------
  5. Object.defineProperty(Object.getPrototypeOf({}), "echo", { value: function () { WScript.Echo(this); } });
  6. function AssertEqual(actual, expected, msg) { ((actual === expected ? "Passed! " : "Failed (actual: " + actual + ", expected: " + expected + "). Message: ") + msg).echo(); };
  7. Object.defineProperty(Object.getPrototypeOf({}), "equalTo", { value: function (other, msg) { AssertEqual(this.constructor(this), other, msg); } });
  8. try {
  9. String.prototype.normalize.call("", "asd");
  10. } catch (e) {
  11. e.echo();
  12. }
  13. try {
  14. String.prototype.normalize.call();
  15. } catch (e) {
  16. e.echo();
  17. }
  18. try {
  19. String.prototype.normalize.call(null);
  20. } catch (e) {
  21. e.echo();
  22. }
  23. try {
  24. String.prototype.normalize.call(undefined);
  25. } catch (e) {
  26. e.echo();
  27. }
  28. try {
  29. new String.prototype.normalize();
  30. } catch (e) {
  31. e.echo();
  32. }
  33. "".normalize().equalTo("", "Empty string noramlized to empty string.");
  34. "\u00C4ffin".normalize("NFD").equalTo("A\u0308ffin", "NFD normalization test.");
  35. "\u00C4\uFB03n".normalize("NFD").equalTo("A\u0308\uFB03n", "NFD normalization test.");
  36. "Henry IV".normalize("NFD").equalTo("Henry IV", "NFD normalization test.");
  37. "Henry \u2163".normalize("NFD").equalTo("Henry \u2163", "NFD normalization test.");
  38. "\u00C4ffin".normalize("NFC").equalTo("\u00C4ffin", "NFC normalization test.");
  39. "\u00C4\uFB03n".normalize("NFC").equalTo("\u00C4\uFB03n", "NFC normalization test.");
  40. "Henry IV".normalize("NFC").equalTo("Henry IV", "NFC normalization test.");
  41. "Henry \u2163".normalize("NFC").equalTo("Henry \u2163", "NFC normalization test.");
  42. "\u00C4ffin".normalize("NFKD").equalTo("A\u0308ffin", "NFKD normalization test.");
  43. "\u00C4\uFB03n".normalize("NFKD").equalTo("A\u0308ffin", "NFKD normalization test.");
  44. "Henry IV".normalize("NFKD").equalTo("Henry IV", "NFKD normalization test.");
  45. "Henry \u2163".normalize("NFKD").equalTo("Henry IV", "NFKD normalization test.");
  46. "\u00C4ffin".normalize("NFKC").equalTo("\u00C4ffin", "NFKC normalization test.");
  47. "\u00C4\uFB03n".normalize("NFKC").equalTo("\u00C4ffin", "NFKC normalization test.");
  48. "Henry IV".normalize("NFKC").equalTo("Henry IV", "NFKC normalization test.");
  49. "Henry \u2163".normalize("NFKC").equalTo("Henry IV", "NFKC normalization test.");
  50. try {
  51. "a\uDC00b".normalize();
  52. } catch (e) {
  53. e.echo();
  54. }
  55. try {
  56. "a\uD800b".normalize();
  57. } catch (e) {
  58. e.echo();
  59. }
  60. String.prototype.normalize.call(5).equalTo("5", "Calling on a number object instead of string object.");