aboutsummaryrefslogtreecommitdiff
path: root/node_modules/es6-set/test
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/es6-set/test')
-rw-r--r--node_modules/es6-set/test/ext/copy.js12
-rw-r--r--node_modules/es6-set/test/ext/every.js9
-rw-r--r--node_modules/es6-set/test/ext/filter.js12
-rw-r--r--node_modules/es6-set/test/ext/get-first.js12
-rw-r--r--node_modules/es6-set/test/ext/get-last.js12
-rw-r--r--node_modules/es6-set/test/ext/some.js10
-rw-r--r--node_modules/es6-set/test/implement.js3
-rw-r--r--node_modules/es6-set/test/index.js3
-rw-r--r--node_modules/es6-set/test/is-implemented.js14
-rw-r--r--node_modules/es6-set/test/is-native-implemented.js3
-rw-r--r--node_modules/es6-set/test/is-set.js16
-rw-r--r--node_modules/es6-set/test/lib/iterator.js13
-rw-r--r--node_modules/es6-set/test/lib/primitive-iterator.js113
-rw-r--r--node_modules/es6-set/test/polyfill.js50
-rw-r--r--node_modules/es6-set/test/primitive/index.js50
-rw-r--r--node_modules/es6-set/test/valid-set.js19
16 files changed, 351 insertions, 0 deletions
diff --git a/node_modules/es6-set/test/ext/copy.js b/node_modules/es6-set/test/ext/copy.js
new file mode 100644
index 000000000..84fe912a3
--- /dev/null
+++ b/node_modules/es6-set/test/ext/copy.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var toArray = require('es5-ext/array/to-array')
+ , Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content), copy;
+
+ copy = t.call(set);
+ a.not(copy, set, "Copy");
+ a.deep(toArray(copy), content, "Content");
+};
diff --git a/node_modules/es6-set/test/ext/every.js b/node_modules/es6-set/test/ext/every.js
new file mode 100644
index 000000000..f56ca385f
--- /dev/null
+++ b/node_modules/es6-set/test/ext/every.js
@@ -0,0 +1,9 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ a(t.call(new Set(), Boolean), true, "Empty set");
+ a(t.call(new Set([2, 3, 4]), Boolean), true, "Truthy");
+ a(t.call(new Set([2, 0, 4]), Boolean), false, "Falsy");
+};
diff --git a/node_modules/es6-set/test/ext/filter.js b/node_modules/es6-set/test/ext/filter.js
new file mode 100644
index 000000000..46981859b
--- /dev/null
+++ b/node_modules/es6-set/test/ext/filter.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+
+ , Set = require('../../');
+
+module.exports = function (t, a) {
+ a.deep(aFrom(t.call(new Set(), Boolean)), [], "Empty set");
+ a.deep(aFrom(t.call(new Set([2, 3, 4]), Boolean)), [2, 3, 4], "All true");
+ a.deep(aFrom(t.call(new Set([0, false, 4]), Boolean)), [4], "Some false");
+ a.deep(aFrom(t.call(new Set([0, false, null]), Boolean)), [], "All false");
+};
diff --git a/node_modules/es6-set/test/ext/get-first.js b/node_modules/es6-set/test/ext/get-first.js
new file mode 100644
index 000000000..f99829e5a
--- /dev/null
+++ b/node_modules/es6-set/test/ext/get-first.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content);
+
+ a(t.call(set), 'raz');
+
+ set = new Set();
+ a(t.call(set), undefined);
+};
diff --git a/node_modules/es6-set/test/ext/get-last.js b/node_modules/es6-set/test/ext/get-last.js
new file mode 100644
index 000000000..1dcc993ed
--- /dev/null
+++ b/node_modules/es6-set/test/ext/get-last.js
@@ -0,0 +1,12 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ var content = ['raz', 2, true], set = new Set(content);
+
+ a(t.call(set), true);
+
+ set = new Set();
+ a(t.call(set), undefined);
+};
diff --git a/node_modules/es6-set/test/ext/some.js b/node_modules/es6-set/test/ext/some.js
new file mode 100644
index 000000000..84ce11916
--- /dev/null
+++ b/node_modules/es6-set/test/ext/some.js
@@ -0,0 +1,10 @@
+'use strict';
+
+var Set = require('../../');
+
+module.exports = function (t, a) {
+ a(t.call(new Set(), Boolean), false, "Empty set");
+ a(t.call(new Set([2, 3, 4]), Boolean), true, "All true");
+ a(t.call(new Set([0, false, 4]), Boolean), true, "Some false");
+ a(t.call(new Set([0, false, null]), Boolean), false, "All false");
+};
diff --git a/node_modules/es6-set/test/implement.js b/node_modules/es6-set/test/implement.js
new file mode 100644
index 000000000..4882d3786
--- /dev/null
+++ b/node_modules/es6-set/test/implement.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof Set, 'function'); };
diff --git a/node_modules/es6-set/test/index.js b/node_modules/es6-set/test/index.js
new file mode 100644
index 000000000..19c648650
--- /dev/null
+++ b/node_modules/es6-set/test/index.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (T, a) { a((new T(['raz', 'dwa'])).size, 2); };
diff --git a/node_modules/es6-set/test/is-implemented.js b/node_modules/es6-set/test/is-implemented.js
new file mode 100644
index 000000000..124793e73
--- /dev/null
+++ b/node_modules/es6-set/test/is-implemented.js
@@ -0,0 +1,14 @@
+'use strict';
+
+var global = require('es5-ext/global')
+ , polyfill = require('../polyfill');
+
+module.exports = function (t, a) {
+ var cache;
+ a(typeof t(), 'boolean');
+ cache = global.Set;
+ global.Set = polyfill;
+ a(t(), true);
+ if (cache === undefined) delete global.Set;
+ else global.Set = cache;
+};
diff --git a/node_modules/es6-set/test/is-native-implemented.js b/node_modules/es6-set/test/is-native-implemented.js
new file mode 100644
index 000000000..df8ba0323
--- /dev/null
+++ b/node_modules/es6-set/test/is-native-implemented.js
@@ -0,0 +1,3 @@
+'use strict';
+
+module.exports = function (t, a) { a(typeof t, 'boolean'); };
diff --git a/node_modules/es6-set/test/is-set.js b/node_modules/es6-set/test/is-set.js
new file mode 100644
index 000000000..c969cce23
--- /dev/null
+++ b/node_modules/es6-set/test/is-set.js
@@ -0,0 +1,16 @@
+'use strict';
+
+var SetPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ a(t(undefined), false, "Undefined");
+ a(t(null), false, "Null");
+ a(t(true), false, "Primitive");
+ a(t('raz'), false, "String");
+ a(t({}), false, "Object");
+ a(t([]), false, "Array");
+ if (typeof Set !== 'undefined') {
+ a(t(new Set()), true, "Native");
+ }
+ a(t(new SetPoly()), true, "Polyfill");
+};
diff --git a/node_modules/es6-set/test/lib/iterator.js b/node_modules/es6-set/test/lib/iterator.js
new file mode 100644
index 000000000..9e5cfb91b
--- /dev/null
+++ b/node_modules/es6-set/test/lib/iterator.js
@@ -0,0 +1,13 @@
+'use strict';
+
+var Set = require('../../polyfill')
+ , toArray = require('es5-ext/array/to-array');
+
+module.exports = function (T, a) {
+ var set = new Set(['raz', 'dwa']);
+
+ a.deep(toArray(new T(set)), ['raz', 'dwa'], "Default");
+ a.deep(toArray(new T(set, 'key+value')), [['raz', 'raz'], ['dwa', 'dwa']],
+ "Key & Value");
+ a.deep(toArray(new T(set, 'value')), ['raz', 'dwa'], "Other");
+};
diff --git a/node_modules/es6-set/test/lib/primitive-iterator.js b/node_modules/es6-set/test/lib/primitive-iterator.js
new file mode 100644
index 000000000..2a4956b80
--- /dev/null
+++ b/node_modules/es6-set/test/lib/primitive-iterator.js
@@ -0,0 +1,113 @@
+'use strict';
+
+var Set = require('../../primitive')
+ , toArray = require('es5-ext/array/to-array')
+ , iteratorSymbol = require('es6-symbol').iterator
+
+ , compare, map;
+
+compare = function (a, b) {
+ if (!a.value) return -1;
+ if (!b.value) return 1;
+ return a.value.localeCompare(b.value);
+};
+
+map = function (arr) {
+ return arr.sort().map(function (value) {
+ return { done: false, value: value };
+ });
+};
+
+module.exports = function (T) {
+ return {
+ "": function (a) {
+ var arr = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], it, y, z
+ , set = new Set(arr), result = [];
+
+ it = new T(set);
+ a(it[iteratorSymbol](), it, "@@iterator");
+ y = it.next();
+ result.push(y);
+ z = it.next();
+ a.not(y, z, "Recreate result");
+ result.push(z);
+ result.push(it.next());
+ result.push(it.next());
+ result.push(it.next());
+ a.deep(result.sort(compare), map(arr));
+ a.deep(y = it.next(), { done: true, value: undefined }, "End");
+ a.not(y, it.next(), "Recreate result on dead");
+ },
+ Emited: function (a) {
+ var arr = ['raz', 'dwa', 'trzy', 'cztery', 'pięć'], it
+ , set = new Set(arr), result = [];
+
+ it = new T(set);
+ result.push(it.next());
+ result.push(it.next());
+ set.add('sześć');
+ arr.push('sześć');
+ result.push(it.next());
+ set.delete('pięć');
+ arr.splice(4, 1);
+ result.push(it.next());
+ result.push(it.next());
+ a.deep(result.sort(compare), map(arr));
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited #2": function (a) {
+ var arr = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it
+ , set = new Set(arr), result = [];
+
+ it = new T(set);
+ result.push(it.next());
+ result.push(it.next());
+ set.add('siedem');
+ set.delete('siedem');
+ result.push(it.next());
+ result.push(it.next());
+ set.delete('pięć');
+ arr.splice(4, 1);
+ result.push(it.next());
+ a.deep(result.sort(compare), map(arr));
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited: Clear #1": function (a) {
+ var arr = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it
+ , set = new Set(arr), result = [];
+
+ it = new T(set);
+ result.push(it.next());
+ result.push(it.next());
+ arr = ['raz', 'dwa'];
+ set.clear();
+ a.deep(result.sort(compare), map(arr));
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ "Emited: Clear #2": function (a) {
+ var arr = ['raz', 'dwa', 'trzy', 'cztery', 'pięć', 'sześć'], it
+ , set = new Set(arr), result = [];
+
+ it = new T(set);
+ result.push(it.next());
+ result.push(it.next());
+ set.clear();
+ set.add('foo');
+ set.add('bar');
+ arr = ['raz', 'dwa', 'foo', 'bar'];
+ result.push(it.next());
+ result.push(it.next());
+ a.deep(result.sort(compare), map(arr));
+ a.deep(it.next(), { done: true, value: undefined }, "End");
+ },
+ Kinds: function (a) {
+ var set = new Set(['raz', 'dwa']);
+
+ a.deep(toArray(new T(set)).sort(), ['raz', 'dwa'].sort(), "Default");
+ a.deep(toArray(new T(set, 'key+value')).sort(),
+ [['raz', 'raz'], ['dwa', 'dwa']].sort(), "Key & Value");
+ a.deep(toArray(new T(set, 'value')).sort(), ['raz', 'dwa'].sort(),
+ "Other");
+ }
+ };
+};
diff --git a/node_modules/es6-set/test/polyfill.js b/node_modules/es6-set/test/polyfill.js
new file mode 100644
index 000000000..94ae3e6e6
--- /dev/null
+++ b/node_modules/es6-set/test/polyfill.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+ , toArray = require('es5-ext/array/to-array');
+
+module.exports = function (T, a) {
+ var arr = ['raz', 'dwa', 'trzy'], set = new T(arr), x = {}, y = {}, i = 0;
+
+ a(set instanceof T, true, "Set");
+ a(set.size, 3, "Size");
+ a(set.has('raz'), true, "Has: true");
+ a(set.has(x), false, "Has: false");
+ a(set.add(x), set, "Add: return");
+ a(set.has(x), true, "Add");
+ a(set.size, 4, "Add: Size");
+ a(set.delete({}), false, "Delete: false");
+
+ arr.push(x);
+ set.forEach(function () {
+ a.deep(aFrom(arguments), [arr[i], arr[i], set],
+ "ForEach: Arguments: #" + i);
+ a(this, y, "ForEach: Context: #" + i);
+ if (i === 0) {
+ a(set.delete('raz'), true, "Delete: true");
+ a(set.has('raz'), false, "Delete");
+ a(set.size, 3, "Delete: size");
+ set.add('cztery');
+ arr.push('cztery');
+ }
+ i++;
+ }, y);
+ arr.splice(0, 1);
+
+ a.deep(toArray(set.entries()), [['dwa', 'dwa'], ['trzy', 'trzy'], [x, x],
+ ['cztery', 'cztery']], "Entries");
+ a.deep(toArray(set.keys()), ['dwa', 'trzy', x, 'cztery'], "Keys");
+ a.deep(toArray(set.values()), ['dwa', 'trzy', x, 'cztery'], "Values");
+ a.deep(toArray(set), ['dwa', 'trzy', x, 'cztery'], "Iterator");
+
+ set.clear();
+ a(set.size, 0, "Clear: size");
+ a(set.has('trzy'), false, "Clear: has");
+ a.deep(toArray(set), [], "Clear: Values");
+
+ a.h1("Empty initialization");
+ set = new T();
+ set.add('foo');
+ a(set.size, 1);
+ a(set.has('foo'), true);
+};
diff --git a/node_modules/es6-set/test/primitive/index.js b/node_modules/es6-set/test/primitive/index.js
new file mode 100644
index 000000000..88f9502fd
--- /dev/null
+++ b/node_modules/es6-set/test/primitive/index.js
@@ -0,0 +1,50 @@
+'use strict';
+
+var aFrom = require('es5-ext/array/from')
+ , getIterator = require('es6-iterator/get')
+ , toArray = require('es5-ext/array/to-array');
+
+module.exports = function (T, a) {
+ var arr = ['raz', 'dwa', 'trzy'], set = new T(arr), x = 'other', y = 'other2'
+ , i = 0, result = [];
+
+ a(set instanceof T, true, "Set");
+ a(set.size, 3, "Size");
+ a(set.has('raz'), true, "Has: true");
+ a(set.has(x), false, "Has: false");
+ a(set.add(x), set, "Add: return");
+ a(set.has(x), true, "Add");
+ a(set.size, 4, "Add: Size");
+ a(set.delete('else'), false, "Delete: false");
+ a(set.get('raz'), 'raz', "Get");
+
+ arr.push(x);
+ set.forEach(function () {
+ result.push(aFrom(arguments));
+ a(this, y, "ForEach: Context: #" + i);
+ }, y);
+
+ a.deep(result.sort(function (a, b) {
+ return a[0].localeCompare(b[0]);
+ }), arr.sort().map(function (val) { return [val, val, set]; }));
+
+ a.deep(toArray(set.entries()).sort(), [['dwa', 'dwa'], ['trzy', 'trzy'],
+ [x, x], ['raz', 'raz']].sort(), "Entries");
+ a.deep(toArray(set.keys()).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Keys");
+ a.deep(toArray(set.values()).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Values");
+ a.deep(toArray(getIterator(set)).sort(), ['dwa', 'trzy', x, 'raz'].sort(),
+ "Iterator");
+
+ set.clear();
+ a(set.size, 0, "Clear: size");
+ a(set.has('trzy'), false, "Clear: has");
+ a.deep(toArray(set.values()), [], "Clear: Values");
+
+ a.h1("Empty initialization");
+ set = new T();
+ set.add('foo');
+ a(set.size, 1);
+ a(set.has('foo'), true);
+};
diff --git a/node_modules/es6-set/test/valid-set.js b/node_modules/es6-set/test/valid-set.js
new file mode 100644
index 000000000..8c71f5f8c
--- /dev/null
+++ b/node_modules/es6-set/test/valid-set.js
@@ -0,0 +1,19 @@
+'use strict';
+
+var SetPoly = require('../polyfill');
+
+module.exports = function (t, a) {
+ var set;
+ a.throws(function () { t(undefined); }, TypeError, "Undefined");
+ a.throws(function () { t(null); }, TypeError, "Null");
+ a.throws(function () { t(true); }, TypeError, "Primitive");
+ a.throws(function () { t('raz'); }, TypeError, "String");
+ a.throws(function () { t({}); }, TypeError, "Object");
+ a.throws(function () { t([]); }, TypeError, "Array");
+ if (typeof Set !== 'undefined') {
+ set = new Set();
+ a(t(set), set, "Native");
+ }
+ set = new SetPoly();
+ a(t(set), set, "Polyfill");
+};