'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);
|
|
});
|
|
});
|
|
}
|
|
});
|