source: frontend/node_modules/@sinonjs/commons/lib/function-name.test.js

Last change on this file was 9af201e, checked in by MBK <marija.karapandzova@…>, 12 days ago

Fix frontend appearance

  • Property mode set to 100644
File size: 2.1 KB
Line 
1"use strict";
2
3var jsc = require("jsverify");
4var refute = require("@sinonjs/referee-sinon").refute;
5
6var functionName = require("./function-name");
7
8describe("function-name", function () {
9 it("should return empty string if func is falsy", function () {
10 jsc.assertForall("falsy", function (fn) {
11 return functionName(fn) === "";
12 });
13 });
14
15 it("should use displayName by default", function () {
16 jsc.assertForall("nestring", function (displayName) {
17 var fn = { displayName: displayName };
18
19 return functionName(fn) === fn.displayName;
20 });
21 });
22
23 it("should use name if displayName is not available", function () {
24 jsc.assertForall("nestring", function (name) {
25 var fn = { name: name };
26
27 return functionName(fn) === fn.name;
28 });
29 });
30
31 it("should fallback to string parsing", function () {
32 jsc.assertForall("nat", function (naturalNumber) {
33 var name = `fn${naturalNumber}`;
34 var fn = {
35 toString: function () {
36 return `\nfunction ${name}`;
37 },
38 };
39
40 return functionName(fn) === name;
41 });
42 });
43
44 it("should not fail when a name cannot be found", function () {
45 refute.exception(function () {
46 var fn = {
47 toString: function () {
48 return "\nfunction (";
49 },
50 };
51
52 functionName(fn);
53 });
54 });
55
56 it("should not fail when toString is undefined", function () {
57 refute.exception(function () {
58 functionName(Object.create(null));
59 });
60 });
61
62 it("should not fail when toString throws", function () {
63 refute.exception(function () {
64 var fn;
65 try {
66 // eslint-disable-next-line no-eval
67 fn = eval("(function*() {})")().constructor;
68 } catch (e) {
69 // env doesn't support generators
70 return;
71 }
72
73 functionName(fn);
74 });
75 });
76});
Note: See TracBrowser for help on using the repository browser.