UNPKG

raptor

Version:

RaptorJS provides an AMD module loader that works in Node, Rhino and the web browser. It also includes various sub-modules to support building optimized web applications.

146 lines (116 loc) 4.5 kB
require('./_helper.js'); var raptor = require('raptor'); var define = raptor.createDefine(module); define.Enum( 'test/enums/simple/Day', [ "SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT" ]); define.Enum( 'test/enums/complex/Day', { SUN: [false, "Sunday"], MON: [true, "Monday"], TUE: [true, "Tuesday"], WED: [true, "Wednesday"], THU: [true, "Thursday"], FRI: [true, "Friday"], SAT: [false, "Saturday"] }, function(require) { return { init: function(isWeekday, longName) { this._isWeekday = isWeekday; this._longName = longName; }, getLongName: function() { return this._longName; }, isWeekday: function() { return this._isWeekday; } }; }); define.Enum( 'test/enums/complex/Day2', { SUN: [false, "Sunday"], MON: [true, "Monday"], TUE: [true, "Tuesday"], WED: [true, "Wednesday"], THU: [true, "Thursday"], FRI: [true, "Friday"], SAT: [false, "Saturday"] }, function(require) { var Day2 = function(isWeekday, longName) { this._isWeekday = isWeekday; this._longName = longName; }; Day2.TEST_STATIC = true; Day2.prototype = { getLongName: function() { return this._longName; }, isWeekday: function() { return this._isWeekday; }, toString: function() { return this._longName; } }; return Day2; }); describe('enums', function() { it('should allow simple enums', function() { var Day = require('test/enums/simple/Day'); expect(Day.SUN).toNotEqual(null); }); it('should allow instanceof to be used with enum vales', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.SUN instanceof SimpleDay).toEqual(true); var ComplexDay = require('test/enums/complex/Day'); expect(ComplexDay.SUN instanceof ComplexDay).toEqual(true); expect(ComplexDay.SUN instanceof SimpleDay).toEqual(false); var ComplexDay2 = require('test/enums/complex/Day2'); expect(ComplexDay2.SUN instanceof ComplexDay2).toEqual(true); }); it('should allow enums to have static properties', function() { var ComplexDay2 = require('test/enums/complex/Day2'); expect(ComplexDay2.TEST_STATIC).toNotEqual(null); }); it('should support "valueOf" method for enum classes', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.valueOf("SUN")).toStrictlyEqual(SimpleDay.SUN); }); it('should support "ordinal" method for enum values', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.SUN.ordinal()).toEqual(0); expect(SimpleDay.MON.ordinal()).toEqual(1); expect(SimpleDay.TUE.ordinal()).toEqual(2); }); it('should support "name" method for enum values', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.SUN.name()).toEqual("SUN"); }); it('should support "toString" method for enum values', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.SUN.toString()).toEqual("SUN"); var ComplexDay2 = require('test/enums/complex/Day2'); expect(ComplexDay2.SUN.toString()).toEqual("Sunday"); }); it('should support "compareTo" method for enum values', function() { var SimpleDay = require('test/enums/simple/Day'); expect(SimpleDay.SUN.compareTo(SimpleDay.MON) < 0).toEqual(true); expect(SimpleDay.MON.compareTo(SimpleDay.SUN) > 0).toEqual(true); expect(SimpleDay.MON.compareTo(SimpleDay.MON) === 0).toEqual(true); expect(SimpleDay.MON.compareTo(SimpleDay.THU) < 0).toEqual(true); expect(SimpleDay.THU.compareTo(SimpleDay.MON) > 0).toEqual(true); }); });