enum.test.js
2.66 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
'use strict';
var Enum = require('../src/js/enum');
describe('module:Enum', function() {
var isModernBrowser = (function() {
try {
Object.defineProperty({}, 'x', {});
return true;
} catch (e) {
return false;
}
})();
var enumO;
beforeEach(function() {
enumO = new Enum();
});
describe('.set()', function() {
it('상수명을 입력받을수있다.', function() {
enumO.set('CONST1', 'CONST2');
expect(enumO.CONST1).toBeDefined();
expect(enumO.CONST2).toBeDefined();
});
it('배열로 상수를 지정할수있다', function() {
enumO.set(['CONST3', 'CONST4']);
expect(enumO.CONST3).toBeDefined();
expect(enumO.CONST4).toBeDefined();
});
it('상수들은 서로다른 값을 갖는다', function() {
enumO.set('CONST1', 'CONST2');
expect(enumO.CONST1).not.toEqual(enumO.CONST2);
});
it('한번정의된 상수는 재정의 될수없다', function() {
var originalValue;
enumO.set('CONST1', 'CONST2');
originalValue = enumO.CONST1;
enumO.set('CONST1');
expect(enumO.CONST1).toEqual(originalValue);
});
});
describe('.getName()', function() {
it('값을 입력해 상수명을 얻어올수있다', function() {
var result;
enumO.set('CONST1', 'CONST2');
result = enumO.getName(enumO.CONST1);
expect(result).toEqual('CONST1');
});
});
describe('생성자 옵션으로 상수들을 지정할수있다', function() {
it('상수들이 정상적으로 생성되었다', function() {
var enumO2 = new Enum('CONST1', 'CONST2');
expect(enumO2.CONST1).toBeDefined();
expect(enumO2.CONST2).toBeDefined();
});
it('배열로 상수들이 정상적으로 생성되었다', function() {
var enumO2 = new Enum(['CONST1', 'CONST2']);
expect(enumO2.CONST1).toBeDefined();
expect(enumO2.CONST2).toBeDefined();
});
});
if (isModernBrowser) {
describe('Modern Browser: 정의된 값은 변경할수없다', function() {
beforeEach(function() {
enumO.set('CONST1', 'CONST2');
});
it('상수의 값이 변경되지 않는다', function() {
var desc = Object.getOwnPropertyDescriptor(enumO, 'CONST1');
expect(desc.writable).toEqual(false);
expect(desc.configurable).toEqual(false);
});
});
}
});