aboutsummaryrefslogtreecommitdiff
path: root/node_modules/is-generator-function/test
diff options
context:
space:
mode:
authorruki <waruqi@gmail.com>2018-11-08 00:38:48 +0800
committerruki <waruqi@gmail.com>2018-11-07 21:53:09 +0800
commit26105034da4fcce7ac883c899d781f016559310d (patch)
treec459a5dc4e3aa0972d9919033ece511ce76dd129 /node_modules/is-generator-function/test
parent2c77f00f1a7ecb6c8192f9c16d3b2001b254a107 (diff)
downloadxmake-docs-26105034da4fcce7ac883c899d781f016559310d.tar.gz
xmake-docs-26105034da4fcce7ac883c899d781f016559310d.zip
switch to vuepress
Diffstat (limited to 'node_modules/is-generator-function/test')
-rw-r--r--node_modules/is-generator-function/test/.eslintrc5
-rw-r--r--node_modules/is-generator-function/test/corejs.js5
-rw-r--r--node_modules/is-generator-function/test/index.js94
-rw-r--r--node_modules/is-generator-function/test/uglified.js8
4 files changed, 112 insertions, 0 deletions
diff --git a/node_modules/is-generator-function/test/.eslintrc b/node_modules/is-generator-function/test/.eslintrc
new file mode 100644
index 00000000..168cdf85
--- /dev/null
+++ b/node_modules/is-generator-function/test/.eslintrc
@@ -0,0 +1,5 @@
+{
+ "rules": {
+ "max-statements-per-line": [2, { "max": 2 }]
+ }
+}
diff --git a/node_modules/is-generator-function/test/corejs.js b/node_modules/is-generator-function/test/corejs.js
new file mode 100644
index 00000000..73f0c89c
--- /dev/null
+++ b/node_modules/is-generator-function/test/corejs.js
@@ -0,0 +1,5 @@
+'use strict';
+
+require('core-js');
+
+require('./');
diff --git a/node_modules/is-generator-function/test/index.js b/node_modules/is-generator-function/test/index.js
new file mode 100644
index 00000000..a33cc2b7
--- /dev/null
+++ b/node_modules/is-generator-function/test/index.js
@@ -0,0 +1,94 @@
+'use strict';
+
+/* globals window */
+
+var test = require('tape');
+var isGeneratorFunction = require('../index');
+var generatorFunc = 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();
+});
+
+test('returns false for non-generator function with faked toString', function (t) {
+ var func = function () {};
+ func.toString = function () { return 'function* () { return "TOTALLY REAL I SWEAR!"; }'; };
+
+ 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 }, function (t) {
+ 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 (generatorFunc) {
+ t.ok(isGeneratorFunction(generatorFunc), 'generator function 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();
+});
+
+test('concise methods', { skip: !generatorFunc || !generatorFunc.concise }, function (t) {
+ t.test('returns true for concise generator methods', function (st) {
+ st.ok(isGeneratorFunction(generatorFunc.concise), 'concise generator method is generator function');
+ st.end();
+ });
+
+ t.test('returns false for concise non-generator methods', function (st) {
+ var conciseMethod = Function('return { concise() {} }.concise;')();
+ st.equal(typeof conciseMethod, 'function', 'assert: concise method exists');
+ st.notOk(isGeneratorFunction(conciseMethod), 'concise non-generator method is not generator function');
+ st.end();
+ });
+
+ t.end();
+});
diff --git a/node_modules/is-generator-function/test/uglified.js b/node_modules/is-generator-function/test/uglified.js
new file mode 100644
index 00000000..fd82b553
--- /dev/null
+++ b/node_modules/is-generator-function/test/uglified.js
@@ -0,0 +1,8 @@
+'use strict';
+
+require('uglify-register/api').register({
+ exclude: [/\/node_modules\//, /\/test\//],
+ uglify: { mangle: true }
+});
+
+require('./');