dromaeo-object-string-modern.js 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186
  1. startTest("dromaeo-object-string", 'ef8605c3');
  2. // Try to force real results
  3. let ret;
  4. const num = 80000;
  5. // TESTS: String concatenation
  6. test("Concat String", () => {
  7. let str = "";
  8. for (let i = 0; i < num; i++)
  9. str += "a";
  10. ret = str;
  11. });
  12. test("Concat String Object", () => {
  13. let str = new String();
  14. for (let i = 0; i < num; i++)
  15. str += "a";
  16. ret = str;
  17. });
  18. test("Concat String from charCode", () => {
  19. let str = "";
  20. for (let i = 0; i < num / 2; i++)
  21. str += String.fromCharCode(97);
  22. ret = str;
  23. });
  24. test("Array String Join", () => {
  25. const str = [];
  26. for (let i = 0; i < num / 2; i++)
  27. str.push("a");
  28. ret = str.join("");
  29. });
  30. let ostr = [], tmp, tmp2, tmpstr;
  31. for (let i = 0; i < 16384; i++)
  32. ostr.push(String.fromCharCode((25 * Math.random()) + 97));
  33. ostr = ostr.join("");
  34. ostr += ostr;
  35. ostr += ostr;
  36. let str;
  37. let i = 52288;
  38. prep(() => str = new String(ostr));
  39. // TESTS: split
  40. test("String Split", () => ret = str.split(""));
  41. prep(() => {
  42. tmpstr = str;
  43. tmpstr += tmpstr;
  44. tmpstr += tmpstr;
  45. tmpstr += tmpstr;
  46. tmpstr += tmpstr;
  47. });
  48. test("String Split on Char", () => ret = tmpstr.split("a"));
  49. prep(() => str += str);
  50. // TESTS: characters
  51. test("charAt", () => {
  52. for (let j = 0; j < num; j++) {
  53. ret = str.charAt(0);
  54. ret = str.charAt(str.length - 1);
  55. ret = str.charAt(15000);
  56. ret = str.charAt(12000);
  57. }
  58. });
  59. test("[Number]", () => {
  60. for (let j = 0; j < num; j++) {
  61. ret = str[0];
  62. ret = str[str.length - 1];
  63. ret = str[15000];
  64. ret = str[10000];
  65. ret = str[5000];
  66. }
  67. });
  68. test("charCodeAt", () => {
  69. for (let j = 0; j < num; j++) {
  70. ret = str.charCodeAt(0);
  71. ret = str.charCodeAt(str.length - 1);
  72. ret = str.charCodeAt(15000);
  73. ret = str.charCodeAt(10000);
  74. ret = str.charCodeAt(5000);
  75. }
  76. });
  77. // TESTS: indexOf
  78. test("indexOf", () => {
  79. for (let j = 0; j < num; j++) {
  80. ret = str.indexOf("a");
  81. ret = str.indexOf("b");
  82. ret = str.indexOf("c");
  83. ret = str.indexOf("d");
  84. }
  85. });
  86. test("lastIndexOf", () => {
  87. for (let j = 0; j < num; j++) {
  88. ret = str.lastIndexOf("a");
  89. ret = str.lastIndexOf("b");
  90. ret = str.lastIndexOf("c");
  91. ret = str.lastIndexOf("d");
  92. }
  93. });
  94. // TESTS: slice
  95. test("slice", () => {
  96. for (let j = 0; j < num; j++) {
  97. ret = str.slice(0);
  98. ret = str.slice(0, 5);
  99. ret = str.slice(-1);
  100. ret = str.slice(-6, -1);
  101. ret = str.slice(15000, 15005);
  102. ret = str.slice(12000, -1);
  103. }
  104. });
  105. // TESTS: substr
  106. test("substr", () => {
  107. for (let j = 0; j < num; j++) {
  108. ret = str.substr(0);
  109. ret = str.substr(0, 5);
  110. ret = str.substr(-1);
  111. ret = str.substr(-6, 1);
  112. ret = str.substr(15000, 5);
  113. ret = str.substr(12000, 5);
  114. }
  115. });
  116. // TESTS: substring
  117. test("substring", () => {
  118. for (let j = 0; j < num; j++) {
  119. ret = str.substring(0);
  120. ret = str.substring(0, 5);
  121. ret = str.substring(-1);
  122. ret = str.substring(-6, -1);
  123. ret = str.substring(15000, 15005);
  124. ret = str.substring(12000, -1);
  125. }
  126. });
  127. // TESTS: toLower/UpperCase
  128. test("toLowerCase", () => {
  129. for (let j = 0; j < num / 1000; j++) {
  130. ret = str.toLowerCase();
  131. }
  132. });
  133. test("toUpperCase", () => {
  134. for (let j = 0; j < num / 1000; j++) {
  135. ret = str.toUpperCase();
  136. }
  137. });
  138. // TESTS: comparing
  139. prep(() => {
  140. tmp = str;
  141. tmp2 = str;
  142. });
  143. test("comparing", () => {
  144. tmp = "a" + tmp + "a";
  145. tmp2 = "a" + tmp2 + "a";
  146. for (let j = 0; j < num / 1000; j++) {
  147. ret = tmp == tmp2;
  148. ret = tmp < tmp2;
  149. ret = tmp > tmp2;
  150. }
  151. });
  152. endTest();