aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es5-ext/test/string
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es5-ext/test/string')
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/@@iterator/shim.js9
-rw-r--r--node_modules/es5-ext/test/string/#/at.js132
-rw-r--r--node_modules/es5-ext/test/string/#/camel-to-hyphen.js7
-rw-r--r--node_modules/es5-ext/test/string/#/capitalize.js9
-rw-r--r--node_modules/es5-ext/test/string/#/case-insensitive-compare.js7
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/implement.js8
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/code-point-at/shim.js119
-rw-r--r--node_modules/es5-ext/test/string/#/contains/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/contains/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/contains/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/contains/shim.js14
-rw-r--r--node_modules/es5-ext/test/string/#/count.js14
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/ends-with/shim.js16
-rw-r--r--node_modules/es5-ext/test/string/#/hyphen-to-camel.js7
-rw-r--r--node_modules/es5-ext/test/string/#/indent.js9
-rw-r--r--node_modules/es5-ext/test/string/#/last.js6
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/_data.js5
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/normalize/shim.js13
-rw-r--r--node_modules/es5-ext/test/string/#/pad.js24
-rw-r--r--node_modules/es5-ext/test/string/#/plain-replace-all.js11
-rw-r--r--node_modules/es5-ext/test/string/#/plain-replace.js7
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/repeat/shim.js11
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/index.js3
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/#/starts-with/shim.js14
-rw-r--r--node_modules/es5-ext/test/string/#/uncapitalize.js10
-rw-r--r--node_modules/es5-ext/test/string/format-method.js12
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/index.js3
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/from-code-point/shim.js73
-rw-r--r--node_modules/es5-ext/test/string/is-string.js11
-rw-r--r--node_modules/es5-ext/test/string/random-uniq.js14
-rw-r--r--node_modules/es5-ext/test/string/raw/implement.js7
-rw-r--r--node_modules/es5-ext/test/string/raw/index.js3
-rw-r--r--node_modules/es5-ext/test/string/raw/is-implemented.js5
-rw-r--r--node_modules/es5-ext/test/string/raw/shim.js15
52 files changed, 705 insertions, 0 deletions
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/implement.js b/node_modules/es5-ext/test/string/#/@@iterator/implement.js
new file mode 100644
index 000000000..c984fb268
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/@@iterator/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/index.js b/node_modules/es5-ext/test/string/#/@@iterator/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js b/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/@@iterator/shim.js b/node_modules/es5-ext/test/string/#/@@iterator/shim.js
new file mode 100644
index 000000000..467cdc355
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/@@iterator/shim.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ var it = t.call("r💩z");
+ a.deep(it.next(), { done: false, value: "r" }, "#1");
+ a.deep(it.next(), { done: false, value: "💩" }, "#2");
+ a.deep(it.next(), { done: false, value: "z" }, "#3");
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+};
diff --git a/node_modules/es5-ext/test/string/#/at.js b/node_modules/es5-ext/test/string/#/at.js
new file mode 100644
index 000000000..a614f938f
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/at.js
@@ -0,0 +1,132 @@
+/* eslint no-useless-call: "off" */
+// See tests at https://github.com/mathiasbynens/String.prototype.at
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ a.h1("BMP");
+ a(t.call("abc\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("abc\uD834\uDF06def", -1), "", "-1");
+ a(t.call("abc\uD834\uDF06def", -0), "a", "-0");
+ a(t.call("abc\uD834\uDF06def", +0), "a", "+0");
+ a(t.call("abc\uD834\uDF06def", 1), "b", "1");
+ a(t.call("abc\uD834\uDF06def", 3), "\uD834\uDF06", "3");
+ a(t.call("abc\uD834\uDF06def", 4), "\uDF06", "4");
+ a(t.call("abc\uD834\uDF06def", 5), "d", "5");
+ a(t.call("abc\uD834\uDF06def", 42), "", "42");
+ a(t.call("abc\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("abc\uD834\uDF06def", null), "a", "null");
+ a(t.call("abc\uD834\uDF06def", undefined), "a", "undefined");
+ a(t.call("abc\uD834\uDF06def"), "a", "No argument");
+ a(t.call("abc\uD834\uDF06def", false), "a", "false");
+ a(t.call("abc\uD834\uDF06def", NaN), "a", "NaN");
+ a(t.call("abc\uD834\uDF06def", ""), "a", "Empty string");
+ a(t.call("abc\uD834\uDF06def", "_"), "a", "_");
+ a(t.call("abc\uD834\uDF06def", "1"), "b", "'1'");
+ a(t.call("abc\uD834\uDF06def", []), "a", "[]");
+ a(t.call("abc\uD834\uDF06def", {}), "a", "{}");
+ a(t.call("abc\uD834\uDF06def", -0.9), "a", "-0.9");
+ a(t.call("abc\uD834\uDF06def", 1.9), "b", "1.9");
+ a(t.call("abc\uD834\uDF06def", 7.9), "f", "7.9");
+ a(t.call("abc\uD834\uDF06def", Math.pow(2, 32)), "", "Big number");
+
+ a.h1("Astral symbol");
+ a(t.call("\uD834\uDF06def", -Infinity), "", "-Infinity");
+ a(t.call("\uD834\uDF06def", -1), "", "-1");
+ a(t.call("\uD834\uDF06def", -0), "\uD834\uDF06", "-0");
+ a(t.call("\uD834\uDF06def", +0), "\uD834\uDF06", "+0");
+ a(t.call("\uD834\uDF06def", 1), "\uDF06", "1");
+ a(t.call("\uD834\uDF06def", 2), "d", "2");
+ a(t.call("\uD834\uDF06def", 3), "e", "3");
+ a(t.call("\uD834\uDF06def", 4), "f", "4");
+ a(t.call("\uD834\uDF06def", 42), "", "42");
+ a(t.call("\uD834\uDF06def", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uD834\uDF06def", null), "\uD834\uDF06", "null");
+ a(t.call("\uD834\uDF06def", undefined), "\uD834\uDF06", "undefined");
+ a(t.call("\uD834\uDF06def"), "\uD834\uDF06", "No arguments");
+ a(t.call("\uD834\uDF06def", false), "\uD834\uDF06", "false");
+ a(t.call("\uD834\uDF06def", NaN), "\uD834\uDF06", "NaN");
+ a(t.call("\uD834\uDF06def", ""), "\uD834\uDF06", "Empty string");
+ a(t.call("\uD834\uDF06def", "_"), "\uD834\uDF06", "_");
+ a(t.call("\uD834\uDF06def", "1"), "\uDF06", "'1'");
+
+ a.h1("Lone high surrogates");
+ a(t.call("\uD834abc", -Infinity), "", "-Infinity");
+ a(t.call("\uD834abc", -1), "", "-1");
+ a(t.call("\uD834abc", -0), "\uD834", "-0");
+ a(t.call("\uD834abc", +0), "\uD834", "+0");
+ a(t.call("\uD834abc", 1), "a", "1");
+ a(t.call("\uD834abc", 42), "", "42");
+ a(t.call("\uD834abc", Number(Infinity)), "", "Infinity");
+ a(t.call("\uD834abc", null), "\uD834", "null");
+ a(t.call("\uD834abc", undefined), "\uD834", "undefined");
+ a(t.call("\uD834abc"), "\uD834", "No arguments");
+ a(t.call("\uD834abc", false), "\uD834", "false");
+ a(t.call("\uD834abc", NaN), "\uD834", "NaN");
+ a(t.call("\uD834abc", ""), "\uD834", "Empty string");
+ a(t.call("\uD834abc", "_"), "\uD834", "_");
+ a(t.call("\uD834abc", "1"), "a", "'a'");
+
+ a.h1("Lone low surrogates");
+ a(t.call("\uDF06abc", -Infinity), "", "-Infinity");
+ a(t.call("\uDF06abc", -1), "", "-1");
+ a(t.call("\uDF06abc", -0), "\uDF06", "-0");
+ a(t.call("\uDF06abc", +0), "\uDF06", "+0");
+ a(t.call("\uDF06abc", 1), "a", "1");
+ a(t.call("\uDF06abc", 42), "", "42");
+ a(t.call("\uDF06abc", Number(Infinity)), "", "+Infinity");
+ a(t.call("\uDF06abc", null), "\uDF06", "null");
+ a(t.call("\uDF06abc", undefined), "\uDF06", "undefined");
+ a(t.call("\uDF06abc"), "\uDF06", "No arguments");
+ a(t.call("\uDF06abc", false), "\uDF06", "false");
+ a(t.call("\uDF06abc", NaN), "\uDF06", "NaN");
+ a(t.call("\uDF06abc", ""), "\uDF06", "Empty string");
+ a(t.call("\uDF06abc", "_"), "\uDF06", "_");
+ a(t.call("\uDF06abc", "1"), "a", "'1'");
+
+ a.h1("Context");
+ a.throws(
+ function () {
+ t.call(undefined);
+ },
+ TypeError,
+ "Undefined"
+ );
+ a.throws(
+ function () {
+ t.call(undefined, 4);
+ },
+ TypeError,
+ "Undefined + argument"
+ );
+ a.throws(
+ function () {
+ t.call(null);
+ },
+ TypeError,
+ "Null"
+ );
+ a.throws(
+ function () {
+ t.call(null, 4);
+ },
+ TypeError,
+ "Null + argument"
+ );
+ a(t.call(42, 0), "4", "Number #1");
+ a(t.call(42, 1), "2", "Number #2");
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ "c",
+ "Object"
+ );
+};
diff --git a/node_modules/es5-ext/test/string/#/camel-to-hyphen.js b/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
new file mode 100644
index 000000000..bbf9ae48a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/camel-to-hyphen.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razDwaTRzy4yFoo45My"), "raz-dwa-t-rzy4y-foo45-my");
+ a(t.call("razDwaTRzy4yFoo45My-"), "raz-dwa-t-rzy4y-foo45-my-");
+ a(t.call("razDwaTRzy4yFoo45My--"), "raz-dwa-t-rzy4y-foo45-my--");
+};
diff --git a/node_modules/es5-ext/test/string/#/capitalize.js b/node_modules/es5-ext/test/string/#/capitalize.js
new file mode 100644
index 000000000..884ae9cbb
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/capitalize.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "Raz", "Word");
+ a(t.call("BLA"), "BLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "A", "One letter");
+ a(t.call("this is a test"), "This is a test", "Sentence");
+};
diff --git a/node_modules/es5-ext/test/string/#/case-insensitive-compare.js b/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
new file mode 100644
index 000000000..8117f9205
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/case-insensitive-compare.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("AA", "aa"), 0, "Same");
+ a.ok(t.call("Amber", "zebra") < 0, "Less");
+ a.ok(t.call("Zebra", "amber") > 0, "Greater");
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/implement.js b/node_modules/es5-ext/test/string/#/code-point-at/implement.js
new file mode 100644
index 000000000..f966c5354
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/implement.js
@@ -0,0 +1,8 @@
+"use strict";
+
+var isImplemented =
+ require("../../../../string/#/code-point-at/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/index.js b/node_modules/es5-ext/test/string/#/code-point-at/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js b/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/code-point-at/shim.js b/node_modules/es5-ext/test/string/#/code-point-at/shim.js
new file mode 100644
index 000000000..40d62766e
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/code-point-at/shim.js
@@ -0,0 +1,119 @@
+/* eslint no-useless-call: "off" */
+
+// Taken from: https://github.com/mathiasbynens/String.prototype.codePointAt
+// /blob/master/tests/tests.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.length, 1, "Length");
+
+ // String that starts with a BMP symbol
+ a(t.call("abc\uD834\uDF06def", ""), 0x61);
+ a(t.call("abc\uD834\uDF06def", "_"), 0x61);
+ a(t.call("abc\uD834\uDF06def"), 0x61);
+ a(t.call("abc\uD834\uDF06def", -Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", -1), undefined);
+ a(t.call("abc\uD834\uDF06def", -0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 0), 0x61);
+ a(t.call("abc\uD834\uDF06def", 3), 0x1d306);
+ a(t.call("abc\uD834\uDF06def", 4), 0xdf06);
+ a(t.call("abc\uD834\uDF06def", 5), 0x64);
+ a(t.call("abc\uD834\uDF06def", 42), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", Infinity), undefined);
+ a(t.call("abc\uD834\uDF06def", NaN), 0x61);
+ a(t.call("abc\uD834\uDF06def", false), 0x61);
+ a(t.call("abc\uD834\uDF06def", null), 0x61);
+ a(t.call("abc\uD834\uDF06def", undefined), 0x61);
+
+ // String that starts with an astral symbol
+ a(t.call("\uD834\uDF06def", ""), 0x1d306);
+ a(t.call("\uD834\uDF06def", "1"), 0xdf06);
+ a(t.call("\uD834\uDF06def", "_"), 0x1d306);
+ a(t.call("\uD834\uDF06def"), 0x1d306);
+ a(t.call("\uD834\uDF06def", -1), undefined);
+ a(t.call("\uD834\uDF06def", -0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 0), 0x1d306);
+ a(t.call("\uD834\uDF06def", 1), 0xdf06);
+ a(t.call("\uD834\uDF06def", 42), undefined);
+ a(t.call("\uD834\uDF06def", false), 0x1d306);
+ a(t.call("\uD834\uDF06def", null), 0x1d306);
+ a(t.call("\uD834\uDF06def", undefined), 0x1d306);
+
+ // Lone high surrogates
+ a(t.call("\uD834abc", ""), 0xd834);
+ a(t.call("\uD834abc", "_"), 0xd834);
+ a(t.call("\uD834abc"), 0xd834);
+ a(t.call("\uD834abc", -1), undefined);
+ a(t.call("\uD834abc", -0), 0xd834);
+ a(t.call("\uD834abc", 0), 0xd834);
+ a(t.call("\uD834abc", false), 0xd834);
+ a(t.call("\uD834abc", NaN), 0xd834);
+ a(t.call("\uD834abc", null), 0xd834);
+ a(t.call("\uD834abc", undefined), 0xd834);
+
+ // Lone low surrogates
+ a(t.call("\uDF06abc", ""), 0xdf06);
+ a(t.call("\uDF06abc", "_"), 0xdf06);
+ a(t.call("\uDF06abc"), 0xdf06);
+ a(t.call("\uDF06abc", -1), undefined);
+ a(t.call("\uDF06abc", -0), 0xdf06);
+ a(t.call("\uDF06abc", 0), 0xdf06);
+ a(t.call("\uDF06abc", false), 0xdf06);
+ a(t.call("\uDF06abc", NaN), 0xdf06);
+ a(t.call("\uDF06abc", null), 0xdf06);
+ a(t.call("\uDF06abc", undefined), 0xdf06);
+
+ a.throws(function () {
+ t.call(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.call(undefined, 4);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null);
+ }, TypeError);
+ a.throws(function () {
+ t.call(null, 4);
+ }, TypeError);
+ a(t.call(42, 0), 0x34);
+ a(t.call(42, 1), 0x32);
+ a(
+ t.call(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ 2
+ ),
+ 0x63
+ );
+
+ a.throws(function () {
+ t.apply(undefined);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(undefined, [4]);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null);
+ }, TypeError);
+ a.throws(function () {
+ t.apply(null, [4]);
+ }, TypeError);
+ a(t.apply(42, [0]), 0x34);
+ a(t.apply(42, [1]), 0x32);
+ a(
+ t.apply(
+ {
+ toString: function () {
+ return "abc";
+ }
+ },
+ [2]
+ ),
+ 0x63
+ );
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/implement.js b/node_modules/es5-ext/test/string/#/contains/implement.js
new file mode 100644
index 000000000..297a832f9
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/contains/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/index.js b/node_modules/es5-ext/test/string/#/contains/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/contains/is-implemented.js b/node_modules/es5-ext/test/string/#/contains/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/contains/shim.js b/node_modules/es5-ext/test/string/#/contains/shim.js
new file mode 100644
index 000000000..0a73671d4
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/contains/shim.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz", ""), true, "Empty");
+ a(t.call("", ""), true, "Both Empty");
+ a(t.call("raz", "raz"), true, "Same");
+ a(t.call("razdwa", "raz"), true, "Starts with");
+ a(t.call("razdwa", "dwa"), true, "Ends with");
+ a(t.call("razdwa", "zdw"), true, "In middle");
+ a(t.call("", "raz"), false, "Something in empty");
+ a(t.call("az", "raz"), false, "Longer");
+ a(t.call("azasdfasdf", "azff"), false, "Not found");
+ a(t.call("razdwa", "raz", 1), false, "Position");
+};
diff --git a/node_modules/es5-ext/test/string/#/count.js b/node_modules/es5-ext/test/string/#/count.js
new file mode 100644
index 000000000..d259c9012
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/count.js
@@ -0,0 +1,14 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a.throws(function () {
+ t.call("", "");
+ });
+ a(t.call("x", "x"), 1);
+ a(t.call("xx", "x"), 2);
+ a(t.call("xxx", "xx"), 1);
+ a(t.call("xxxx", "xx"), 2);
+ a(t.call("xx", "xxx"), 0);
+ a(t.call("", "elo"), 0);
+ a(t.call("fooo", "foofooo"), 0);
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/implement.js b/node_modules/es5-ext/test/string/#/ends-with/implement.js
new file mode 100644
index 000000000..5a2ca3cc6
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/ends-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/index.js b/node_modules/es5-ext/test/string/#/ends-with/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js b/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/ends-with/shim.js b/node_modules/es5-ext/test/string/#/ends-with/shim.js
new file mode 100644
index 000000000..753988331
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/ends-with/shim.js
@@ -0,0 +1,16 @@
+// In some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog/
+// string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "cd"), true, "Ends with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "ab"), false, "Doesn't end with needle");
+ a(t.call("abc", "defg"), false, "Length trick");
+ a(t.call("razdwa", "zd", 3), false, "Position: false");
+ a(t.call("razdwa", "zd", 4), true, "Position: true");
+ a(t.call("razdwa", "zd", 5), false, "Position: false #2");
+};
diff --git a/node_modules/es5-ext/test/string/#/hyphen-to-camel.js b/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
new file mode 100644
index 000000000..89c8161c9
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/hyphen-to-camel.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa"), "razDwaTRzy4yRtr4Tiu45Pa");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa-"), "razDwaTRzy4yRtr4Tiu45Pa-");
+ a(t.call("raz-dwa-t-rzy-4y-rtr4-tiu-45-pa--"), "razDwaTRzy4yRtr4Tiu45Pa--");
+};
diff --git a/node_modules/es5-ext/test/string/#/indent.js b/node_modules/es5-ext/test/string/#/indent.js
new file mode 100644
index 000000000..6b1dd895d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/indent.js
@@ -0,0 +1,9 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("ra\nzz", ""), "ra\nzz", "Empty");
+ a(t.call("ra\nzz", "\t", 3), "\t\t\tra\n\t\t\tzz", "String repeat");
+ a(t.call("ra\nzz\nsss\nfff\n", "\t"), "\tra\n\tzz\n\tsss\n\tfff\n",
+ "Multi-line");
+ a(t.call("ra\n\nzz\n", "\t"), "\tra\n\n\tzz\n", "Don't touch empty lines");
+};
diff --git a/node_modules/es5-ext/test/string/#/last.js b/node_modules/es5-ext/test/string/#/last.js
new file mode 100644
index 000000000..fea798d6a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/last.js
@@ -0,0 +1,6 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call(""), null, "Null");
+ a(t.call("abcdef"), "f", "String");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/_data.js b/node_modules/es5-ext/test/string/#/normalize/_data.js
new file mode 100644
index 000000000..963121194
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/_data.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t[0], "object");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/implement.js b/node_modules/es5-ext/test/string/#/normalize/implement.js
new file mode 100644
index 000000000..b053aa892
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/normalize/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/index.js b/node_modules/es5-ext/test/string/#/normalize/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/normalize/is-implemented.js b/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/normalize/shim.js b/node_modules/es5-ext/test/string/#/normalize/shim.js
new file mode 100644
index 000000000..0c80aa409
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/normalize/shim.js
@@ -0,0 +1,13 @@
+// Taken from: https://github.com/walling/unorm/blob/master/test/es6-shim.js
+
+"use strict";
+
+var str = "äiti";
+
+module.exports = function (t, a) {
+ a(t.call(str), "\u00e4iti");
+ a(t.call(str, "NFC"), "\u00e4iti");
+ a(t.call(str, "NFD"), "a\u0308iti");
+ a(t.call(str, "NFKC"), "\u00e4iti");
+ a(t.call(str, "NFKD"), "a\u0308iti");
+};
diff --git a/node_modules/es5-ext/test/string/#/pad.js b/node_modules/es5-ext/test/string/#/pad.js
new file mode 100644
index 000000000..e573453fb
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/pad.js
@@ -0,0 +1,24 @@
+"use strict";
+
+var partial = require("../../../function/#/partial");
+
+module.exports = {
+ Left: function (t, a) {
+ t = partial.call(t, "x", 5);
+
+ a(t.call("yy"), "xxxyy");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ },
+ Right: function (t, a) {
+ t = partial.call(t, "x", -5);
+
+ a(t.call("yy"), "yyxxx");
+ a(t.call(""), "xxxxx", "Empty string");
+
+ a(t.call("yyyyy"), "yyyyy", "Equal length");
+ a(t.call("yyyyyyy"), "yyyyyyy", "Longer");
+ }
+};
diff --git a/node_modules/es5-ext/test/string/#/plain-replace-all.js b/node_modules/es5-ext/test/string/#/plain-replace-all.js
new file mode 100644
index 000000000..e5f801c62
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/plain-replace-all.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+
+ a(t.call("$raz$$dwa$trzy$", "$", "&&"), "&&raz&&&&dwa&&trzy&&", "Multi");
+ a(t.call("$raz$$dwa$$$$trzy$", "$$", "&"), "$raz&dwa&&trzy$",
+ "Multi many chars");
+};
diff --git a/node_modules/es5-ext/test/string/#/plain-replace.js b/node_modules/es5-ext/test/string/#/plain-replace.js
new file mode 100644
index 000000000..9f6c2beef
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/plain-replace.js
@@ -0,0 +1,7 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("razdwatrzy", "dwa", "olera"), "razoleratrzy", "Basic");
+ a(t.call("razdwatrzy", "dwa", "ole$&a"), "razole$&atrzy", "Inserts");
+ a(t.call("razdwa", "ola", "sdfs"), "razdwa", "No replace");
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/implement.js b/node_modules/es5-ext/test/string/#/repeat/implement.js
new file mode 100644
index 000000000..270962895
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/repeat/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/index.js b/node_modules/es5-ext/test/string/#/repeat/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/repeat/is-implemented.js b/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/repeat/shim.js b/node_modules/es5-ext/test/string/#/repeat/shim.js
new file mode 100644
index 000000000..4d328390a
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/repeat/shim.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("a", 0), "", "Empty");
+ a(t.call("a", 1), "a", "1");
+ a(t.call("a", 2), "aa", "2");
+ a(t.call("\t", 5), "\t\t\t\t\t", "Whitespace");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("raz", 3), "razrazraz", "Many chars");
+ a(t.call("razfoobar", 5), "razfoobarrazfoobarrazfoobarrazfoobarrazfoobar", "Many chars");
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/implement.js b/node_modules/es5-ext/test/string/#/starts-with/implement.js
new file mode 100644
index 000000000..d1f1ce252
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../../string/#/starts-with/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/index.js b/node_modules/es5-ext/test/string/#/starts-with/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js b/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/#/starts-with/shim.js b/node_modules/es5-ext/test/string/#/starts-with/shim.js
new file mode 100644
index 000000000..4b5e4e402
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/starts-with/shim.js
@@ -0,0 +1,14 @@
+// Inspired and in some parts copied from:
+// http://closure-library.googlecode.com/svn/trunk/closure/goog
+// /string/string_test.html
+
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("abc", ""), true, "Empty needle");
+ a(t.call("abcd", "ab"), true, "Starts with needle");
+ a(t.call("abcd", "abcd"), true, "Needle equals haystack");
+ a(t.call("abcd", "bcde", 1), false, "Needle larger than haystack");
+ a(!t.call("abcd", "cd"), true, "Doesn't start with needle");
+ a(t.call("abcd", "bc", 1), true, "Position");
+};
diff --git a/node_modules/es5-ext/test/string/#/uncapitalize.js b/node_modules/es5-ext/test/string/#/uncapitalize.js
new file mode 100644
index 000000000..cddd847ce
--- /dev/null
+++ b/node_modules/es5-ext/test/string/#/uncapitalize.js
@@ -0,0 +1,10 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t.call("raz"), "raz", "Word");
+ a(t.call("BLA"), "bLA", "Uppercase");
+ a(t.call(""), "", "Empty");
+ a(t.call("a"), "a", "One letter");
+ a(t.call("this is a test"), "this is a test", "Sentence");
+ a(t.call("This is a test"), "this is a test", "Capitalized sentence");
+};
diff --git a/node_modules/es5-ext/test/string/format-method.js b/node_modules/es5-ext/test/string/format-method.js
new file mode 100644
index 000000000..69e93de63
--- /dev/null
+++ b/node_modules/es5-ext/test/string/format-method.js
@@ -0,0 +1,12 @@
+"use strict";
+
+module.exports = function (t, a) {
+ t = t({ a: "A",
+aa: "B",
+ab: "C",
+b: "D",
+ c: function () {
+ return ++this.a;
+} });
+ a(t.call({ a: 0 }, " %a%aab%abb%b\\%aa%ab%c%c "), " ABbCbD%aaC12 ");
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/implement.js b/node_modules/es5-ext/test/string/from-code-point/implement.js
new file mode 100644
index 000000000..31ed7b5bd
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/from-code-point/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/index.js b/node_modules/es5-ext/test/string/from-code-point/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/from-code-point/is-implemented.js b/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/from-code-point/shim.js b/node_modules/es5-ext/test/string/from-code-point/shim.js
new file mode 100644
index 000000000..023931f13
--- /dev/null
+++ b/node_modules/es5-ext/test/string/from-code-point/shim.js
@@ -0,0 +1,73 @@
+// Taken from: https://github.com/mathiasbynens/String.fromCodePoint/blob/master
+// /tests/tests.js
+
+"use strict";
+
+var pow = Math.pow;
+
+module.exports = function (t, a) {
+ var counter, result;
+
+ a(t.length, 1, "Length");
+ a(String.propertyIsEnumerable("fromCodePoint"), false, "Not enumerable");
+
+ a(t(""), "\0", "Empty string");
+ a(t(), "", "No arguments");
+ a(t(-0), "\0", "-0");
+ a(t(0), "\0", "0");
+ a(t(0x1D306), "\uD834\uDF06", "Unicode");
+ a(t(0x1D306, 0x61, 0x1D307), "\uD834\uDF06a\uD834\uDF07", "Complex unicode");
+ a(t(0x61, 0x62, 0x1D307), "ab\uD834\uDF07", "Complex");
+ a(t(false), "\0", "false");
+ a(t(null), "\0", "null");
+
+ a.throws(function () {
+ t("_");
+}, RangeError, "_");
+ a.throws(function () {
+ t(Infinity);
+}, RangeError, "Infinity");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "-Infinity");
+ a.throws(function () {
+ t(-1);
+}, RangeError, "-1");
+ a.throws(function () {
+ t(0x10FFFF + 1);
+}, RangeError, "Range error #1");
+ a.throws(function () {
+ t(3.14);
+}, RangeError, "Range error #2");
+ a.throws(function () {
+ t(3e-2);
+}, RangeError, "Range error #3");
+ a.throws(function () {
+ t(-Infinity);
+}, RangeError, "Range error #4");
+ a.throws(function () {
+ t(Number(Infinity));
+}, RangeError, "Range error #5");
+ a.throws(function () {
+ t(NaN);
+}, RangeError, "Range error #6");
+ a.throws(function () {
+ t(undefined);
+}, RangeError, "Range error #7");
+ a.throws(function () {
+ t({});
+}, RangeError, "Range error #8");
+ a.throws(function () {
+ t(/re/);
+}, RangeError, "Range error #9");
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0); // One code unit per symbol
+ t.apply(null, result); // Must not throw
+
+ counter = pow(2, 15) * 3 / 2;
+ result = [];
+ while (--counter >= 0) result.push(0xFFFF + 1); // Two code units per symbol
+ t.apply(null, result); // Must not throw
+};
diff --git a/node_modules/es5-ext/test/string/is-string.js b/node_modules/es5-ext/test/string/is-string.js
new file mode 100644
index 000000000..0e831221d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/is-string.js
@@ -0,0 +1,11 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(t(null), false, "Null");
+ a(t(""), true, "Empty string");
+ a(t(12), false, "Number");
+ a(t(false), false, "Boolean");
+ a(t(new Date()), false, "Date");
+ a(t(new String("raz")), true, "String object");
+ a(t("asdfaf"), true, "String");
+};
diff --git a/node_modules/es5-ext/test/string/random-uniq.js b/node_modules/es5-ext/test/string/random-uniq.js
new file mode 100644
index 000000000..3b6d889ad
--- /dev/null
+++ b/node_modules/es5-ext/test/string/random-uniq.js
@@ -0,0 +1,14 @@
+"use strict";
+
+var isValidFormat = RegExp.prototype.test.bind(/^[a-z0-9]+$/);
+
+module.exports = function (t, a) {
+ a(typeof t(), "string");
+ a.ok(t().length > 7);
+ a.not(t(), t());
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+ a.ok(isValidFormat(t()));
+};
diff --git a/node_modules/es5-ext/test/string/raw/implement.js b/node_modules/es5-ext/test/string/raw/implement.js
new file mode 100644
index 000000000..25b624e8e
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/implement.js
@@ -0,0 +1,7 @@
+"use strict";
+
+var isImplemented = require("../../../string/raw/is-implemented");
+
+module.exports = function (a) {
+ a(isImplemented(), true);
+};
diff --git a/node_modules/es5-ext/test/string/raw/index.js b/node_modules/es5-ext/test/string/raw/index.js
new file mode 100644
index 000000000..10bb8f65d
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/index.js
@@ -0,0 +1,3 @@
+"use strict";
+
+module.exports = require("./shim");
diff --git a/node_modules/es5-ext/test/string/raw/is-implemented.js b/node_modules/es5-ext/test/string/raw/is-implemented.js
new file mode 100644
index 000000000..5003e7e93
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/is-implemented.js
@@ -0,0 +1,5 @@
+"use strict";
+
+module.exports = function (t, a) {
+ a(typeof t(), "boolean");
+};
diff --git a/node_modules/es5-ext/test/string/raw/shim.js b/node_modules/es5-ext/test/string/raw/shim.js
new file mode 100644
index 000000000..17a11ac52
--- /dev/null
+++ b/node_modules/es5-ext/test/string/raw/shim.js
@@ -0,0 +1,15 @@
+// Partially taken from:
+// https://github.com/paulmillr/es6-shim/blob/master/test/string.js
+
+"use strict";
+
+module.exports = function (t, a) {
+ var callSite = [];
+
+ callSite.raw = ["The total is ", " ($", " with tax)"];
+ a(t(callSite, "{total}", "{total * 1.01}"),
+ "The total is {total} (${total * 1.01} with tax)");
+
+ callSite.raw = [];
+ a(t(callSite, "{total}", "{total * 1.01}"), "");
+};