summaryrefslogtreecommitdiff
path: root/src/node_modules/is-generator-function/test/index.js
diff options
context:
space:
mode:
authorMinteck <contact@minteck.org>2021-12-21 16:52:28 +0100
committerMinteck <contact@minteck.org>2021-12-21 16:52:28 +0100
commit46e43f4bde4a35785b4997b81e86cd19f046b69b (patch)
treec53c2f826f777f9d6b2d249dab556feb72a6c3a6 /src/node_modules/is-generator-function/test/index.js
downloadlangdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.gz
langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.tar.bz2
langdetect-46e43f4bde4a35785b4997b81e86cd19f046b69b.zip
Commit
Diffstat (limited to 'src/node_modules/is-generator-function/test/index.js')
-rw-r--r--src/node_modules/is-generator-function/test/index.js83
1 files changed, 83 insertions, 0 deletions
diff --git a/src/node_modules/is-generator-function/test/index.js b/src/node_modules/is-generator-function/test/index.js
new file mode 100644
index 0000000..a7fab25
--- /dev/null
+++ b/src/node_modules/is-generator-function/test/index.js
@@ -0,0 +1,83 @@
+'use strict';
+
+/* globals window */
+
+var test = require('tape');
+var isGeneratorFunction = require('../index');
+var generatorFuncs = require('make-generator-function')();
+var hasToStringTag = typeof Symbol === 'function' && typeof Symbol.toStringTag === 'symbol';
+
+var forEach = function (arr, func) {
+ var i;
+ for (i = 0; i < arr.length; ++i) {
+ func(arr[i], i, arr);
+ }
+};
+
+test('returns false for non-functions', function (t) {
+ var nonFuncs = [
+ true,
+ false,
+ null,
+ undefined,
+ {},
+ [],
+ /a/g,
+ 'string',
+ 42,
+ new Date()
+ ];
+ t.plan(nonFuncs.length);
+ forEach(nonFuncs, function (nonFunc) {
+ t.notOk(isGeneratorFunction(nonFunc), nonFunc + ' is not a function');
+ });
+ t.end();
+});
+
+test('returns false for non-generator functions', function (t) {
+ var func = function () {};
+ t.notOk(isGeneratorFunction(func), 'anonymous function is not an generator function');
+
+ var namedFunc = function foo() {};
+ t.notOk(isGeneratorFunction(namedFunc), 'named function is not an generator function');
+
+ if (typeof window === 'undefined') {
+ t.skip('window.alert is not an generator function');
+ } else {
+ t.notOk(isGeneratorFunction(window.alert), 'window.alert is not an generator function');
+ }
+ t.end();
+});
+
+var fakeToString = function () { return 'function* () { return "TOTALLY REAL I SWEAR!"; }'; };
+
+test('returns false for non-generator function with faked toString', function (t) {
+ var func = function () {};
+ func.toString = fakeToString;
+
+ t.notEqual(String(func), Function.prototype.toString.apply(func), 'faked toString is not real toString');
+ t.notOk(isGeneratorFunction(func), 'anonymous function with faked toString is not a generator function');
+ t.end();
+});
+
+test('returns false for non-generator function with faked @@toStringTag', { skip: !hasToStringTag || generatorFuncs.length === 0 }, function (t) {
+ var generatorFunc = generatorFuncs[0];
+ var fakeGenFunction = {
+ toString: function () { return String(generatorFunc); },
+ valueOf: function () { return generatorFunc; }
+ };
+ fakeGenFunction[Symbol.toStringTag] = 'GeneratorFunction';
+ t.notOk(isGeneratorFunction(fakeGenFunction), 'fake GeneratorFunction with @@toStringTag "GeneratorFunction" is not a generator function');
+ t.end();
+});
+
+test('returns true for generator functions', function (t) {
+ if (generatorFuncs.length > 0) {
+ forEach(generatorFuncs, function (generatorFunc) {
+ t.ok(isGeneratorFunction(generatorFunc), generatorFunc + ' is generator function');
+ });
+ } else {
+ t.skip('generator function is generator function - this environment does not support ES6 generator functions. Please run `node --harmony`, or use a supporting browser.');
+ }
+ t.end();
+});