Version 1
[yaffs-website] / node_modules / es5-shim / tests / spec / s-error.js
1 /* global describe, it, xit, expect */
2
3 describe('Error', function () {
4     'use strict';
5
6     var supportsDescriptors = Object.defineProperty && (function () {
7         try {
8             var obj = {};
9             Object.defineProperty(obj, 'x', { enumerable: false, value: obj });
10             for (var _ in obj) { return false; } // jscs:ignore disallowUnusedVariables
11             return obj.x === obj;
12         } catch (e) { /* this is ES3 */
13             return false;
14         }
15     }());
16     var ifSupportsDescriptorsIt = supportsDescriptors ? it : xit;
17
18     describe('#toString()', function () {
19         it('stringifies a newed error properly', function () {
20             var msg = 'test';
21             var error = new RangeError(msg);
22             expect(error.name).toBe('RangeError');
23             expect(error.message).toBe(msg);
24             expect(String(error)).toBe(error.name + ': ' + msg);
25         });
26
27         it('stringifies a thrown error properly', function () {
28             var msg = 'test';
29             var error;
30             try {
31                 throw new RangeError(msg);
32             } catch (e) {
33                 error = e;
34             }
35             expect(error.name).toBe('RangeError');
36             expect(error.message).toBe(msg);
37             expect(String(error)).toBe(error.name + ': ' + msg);
38         });
39     });
40
41     describe('enumerability of prototype properties', function () {
42         ifSupportsDescriptorsIt('#message', function () {
43             expect(Object.prototype.propertyIsEnumerable.call(Error.prototype, 'message')).toBe(false);
44         });
45
46         ifSupportsDescriptorsIt('#name', function () {
47             expect(Object.prototype.propertyIsEnumerable.call(Error.prototype, 'name')).toBe(false);
48         });
49     });
50 });