gregorian-calendar
Advanced tools
Sorry, the diff of this file is not supported yet
| require('./specs/base'); | ||
| require('./specs/utils'); |
| stub |
| /** | ||
| * tests for gregorian gregorianCalendar | ||
| * @author yiminghe@gmail.com | ||
| */ | ||
| var GregorianCalendar = require('../../'); | ||
| var ONE_SECOND = 1000; | ||
| var ONE_MINUTE = 60 * ONE_SECOND; | ||
| var ONE_HOUR = 60 * ONE_MINUTE; | ||
| var ONE_DAY = 24 * ONE_HOUR; | ||
| var expect = require('expect.js'); | ||
| // var ONE_WEEK = 7 * ONE_DAY; | ||
| describe('GregorianCalendar', function () { | ||
| describe('simple case', function () { | ||
| var gregorianCalendar; | ||
| beforeEach(function () { | ||
| gregorianCalendar = new GregorianCalendar(require('../../lib/locale/zh-cn')); | ||
| gregorianCalendar.set(2013, | ||
| GregorianCalendar.JUNE, 8, 18, 0, 0, 0); | ||
| }); | ||
| it('time works', function () { | ||
| expect(gregorianCalendar.getYear()).to.be(2013); | ||
| expect(gregorianCalendar.getMonth()).to.be(5); | ||
| expect(gregorianCalendar.getDayOfMonth()).to.be(8); | ||
| expect(gregorianCalendar.getHourOfDay()).to.be(18); | ||
| expect(gregorianCalendar.getMinutes()).to.be(0); | ||
| expect(gregorianCalendar.getSeconds()).to.be(0); | ||
| expect(gregorianCalendar.getMilliseconds()).to.be(0); | ||
| }); | ||
| describe('WEEK_OF_YEAR works', function () { | ||
| it('works for zh-cn', function () { | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(23); | ||
| }); | ||
| it('works for start of year', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for start of year for setFirstDayOfWeek2', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.THURSDAY); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for start of year 2', function () { | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for end of year', function () { | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for end of year', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| expect(gregorianCalendar.getWeekYear()).to.be(2013); | ||
| }); | ||
| it('works for ISO 8601', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(52); | ||
| expect(gregorianCalendar.getWeekYear()).to.be(2011); | ||
| }); | ||
| }); | ||
| it('DAY_OF_WEEK works', function () { | ||
| expect(gregorianCalendar.getDayOfWeek()).to.be(GregorianCalendar.SATURDAY); | ||
| }); | ||
| describe('WEEK_OF_MONTH', function () { | ||
| it('simply works', function () { | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(2); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(1); | ||
| gregorianCalendar.setDayOfMonth(3); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(2); | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.MONDAY); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(5); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.THURSDAY); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(5); | ||
| }); | ||
| //For example, if getFirstDayOfWeek() is SUNDAY and getMinimalDaysInFirstWeek() is 4, | ||
| // then the first week of January 1998 is Sunday, January 4 through Saturday, January 10. | ||
| // These days have a WEEK_OF_MONTH of 1. | ||
| // Thursday, January 1 through Saturday, January 3 have a WEEK_OF_MONTH of 0. | ||
| // If getMinimalDaysInFirstWeek() is changed to 3, | ||
| // then January 1 through January 3 have a WEEK_OF_MONTH of 1. | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(0); | ||
| }); | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(3); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(1); | ||
| }); | ||
| }); | ||
| describe('DAY_OF_WEEK_IN_MONTH', function () { | ||
| it('simply works', function () { | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(2); | ||
| gregorianCalendar.set(2013, GregorianCalendar.APRIL, 7, 18, 0, 0); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| // does not affect DAY_OF_WEEK_IN_MONTH | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(3); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| }); | ||
| it('getTime works', function () { | ||
| var jsDate = new Date(2013, GregorianCalendar.JUNE, 8, 18, 0, 0, 0); | ||
| expect(jsDate.getTime() === gregorianCalendar.getTime()); | ||
| }); | ||
| it('DAY_OF_YEAR works', function () { | ||
| var jan1Date = new Date(2013, GregorianCalendar.JANUARY, 1, 0, 0, 0, 0); | ||
| var jsDate = new Date(gregorianCalendar.getTime()); | ||
| var expected = parseInt((jsDate.getTime() - jan1Date.getTime()) / ONE_DAY, 10) + 1; | ||
| expect(gregorianCalendar.getDayOfYear()).to.be(expected); | ||
| }); | ||
| it('WEEK_OF_YEAR works', function () { | ||
| var gregorianCalendar = new GregorianCalendar(); | ||
| gregorianCalendar.setYear(1); | ||
| gregorianCalendar.setDayOfWeek(GregorianCalendar.TUESDAY); | ||
| gregorianCalendar.setWeekOfYear(1); | ||
| expect(gregorianCalendar.getYear()).to.be(1); | ||
| expect(gregorianCalendar.getDayOfWeek()).to.be(GregorianCalendar.TUESDAY); | ||
| expect(gregorianCalendar.getDayOfMonth()).to.be(2); | ||
| }); | ||
| }); | ||
| describe('add works', function () { | ||
| it('can adjust DAY_OF_MONTH', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(2012, GregorianCalendar.JANUARY, 31); | ||
| d.addMonth(1); | ||
| expect(d.getYear()).to.be(2012); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.FEBRUARY); | ||
| expect(d.getDayOfMonth()).to.be(29); | ||
| // 2012-2-28 | ||
| }); | ||
| it('can adjust YEAR', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(2012, GregorianCalendar.JANUARY, 31); | ||
| d.addMonth(13); | ||
| expect(d.getYear()).to.be(2013); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.FEBRUARY); | ||
| expect(d.getDayOfMonth()).to.be(28); | ||
| // 2012-2-28 | ||
| }); | ||
| }); | ||
| describe('roll works', function () { | ||
| it('can adjust DAY_OF_MONTH', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(1999, GregorianCalendar.AUGUST, 31); | ||
| d.rollMonth(8); | ||
| expect(d.getYear()).to.be(1999); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.APRIL); | ||
| expect(d.getDayOfMonth()).to.be(30); | ||
| // 2012-2-28 | ||
| }); | ||
| it('can roll to begin', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(1999, GregorianCalendar.JUNE, 1); | ||
| d.rollWeekOfMonth(-1); | ||
| expect(d.getYear()).to.be(1999); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.JUNE); | ||
| expect(d.getDayOfMonth()).to.be(29); | ||
| // 2012-2-28 | ||
| }); | ||
| }); | ||
| }); |
| /** | ||
| * tests for gregorian gregorianCalendar | ||
| * @author yiminghe@gmail.com | ||
| */ | ||
| var GregorianCalendar = require('../../'); | ||
| var ONE_SECOND = 1000; | ||
| var ONE_MINUTE = 60 * ONE_SECOND; | ||
| var ONE_HOUR = 60 * ONE_MINUTE; | ||
| var ONE_DAY = 24 * ONE_HOUR; | ||
| var expect = require('expect.js'); | ||
| // var ONE_WEEK = 7 * ONE_DAY; | ||
| var Utils = GregorianCalendar.Utils; | ||
| var day1 = new Date(1, 0, 1); | ||
| day1.setFullYear(1); | ||
| function getDiffByDays(day2) { | ||
| return parseInt((day2.getTime() - day1.getTime()) / ONE_DAY, 10) + 1; | ||
| } | ||
| describe('GregorianCalendar Utils', function () { | ||
| it('mod works', function () { | ||
| expect(Utils.mod(8, 7)).to.be(1); | ||
| expect(Utils.mod(7, 7)).to.be(0); | ||
| expect(Utils.mod(-8, 7)).to.be(6); | ||
| expect(Utils.mod(-7, 7)).to.be(0); | ||
| }); | ||
| it('getFixedDate works', function () { | ||
| var d = new Date(2013, 0, 3, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(734869 + 2); | ||
| d = new Date(2013, 0, 1, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(734869); | ||
| expect(getDiffByDays(d)).to.be(Utils.getFixedDate(2013, 0, 1)); | ||
| d = new Date(3013, 4, 3, 0, 0, 0, 0); | ||
| // ipad is diff by 1.... | ||
| expect(getDiffByDays(d) - (Utils.getFixedDate(3013, 4, 3))).to.be.within(-5, 5); | ||
| d = new Date(-3013, 4, 3, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(Utils.getFixedDate(-3013, 4, 3)); | ||
| }); | ||
| it('getGregorianDateFromFixedDate works', function () { | ||
| var d = new Date(2013, 0, 3, 0, 0, 0, 0); | ||
| var d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(2013, 0, 3)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| d = new Date(2013, 0, 1, 0, 0, 0, 0); | ||
| d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(2013, 0, 1)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| d = new Date(3013, 3, 1, 0, 0, 0, 0); | ||
| d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(3013, 3, 1)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| }); | ||
| }); |
+7
-2
@@ -13,3 +13,8 @@ language: node_js | ||
| - npm test | ||
| - npm run-script browser-test | ||
| - npm run-script browser-test-cover | ||
| - npm run browser-test | ||
| - npm run browser-test-cover | ||
| - npm run saucelabs | ||
| env: | ||
| global: | ||
| - secure: ORfXs88tjwfCripZYnBUyy3IACFQZ1bBURMWBPgPajCL3wAgwHc+yHF83xpkEjrT6YxejnZT38kVy7oazMEI7h/5RkZn35wviqOKyfxfcY1jOCbF7RYlOvcJxXRfO1nzFO2eObX/Y1iN6/fllwGnvbpUOLtcUpoz6zK9luSX7hQ= | ||
| - secure: FbMIkXj1jdoxDkf0MDpSHB6UhuPSa1dqaLXCKtIYuYRqf7nhXVYvmxOJA50P+ZN2mRGNCWg0Tw1KbtV/uz14nZJ2dIr+BmN5PJkYC1gS9RK5ZE+x+9EQJA7Pj9rlp4ZYFtog0EXwm031qjyqfrI4BxDjRG4GrUqSQCcbFHaOg2A= |
@@ -17,37 +17,9 @@ /** | ||
| * in the default time zone with the default locale. | ||
| * - one argument timezoneOffset: | ||
| * Constructs a GregorianCalendar based on the current time | ||
| * in the given timezoneOffset with the default locale. | ||
| * - one argument locale: | ||
| * Constructs a GregorianCalendar | ||
| * based on the current time in the default time zone with the given locale. | ||
| * - two arguments | ||
| * Constructs a GregorianCalendar based on the current time in the given time zone with the given locale. | ||
| * - zone - the given time zone. | ||
| * - aLocale - the given locale. | ||
| * | ||
| * - 3 to 6 arguments: | ||
| * Constructs a GregorianCalendar with the given date and time set for the default time zone with the default locale. | ||
| * - year - the value used to set the YEAR calendar field in the calendar. | ||
| * - month - the value used to set the MONTH calendar field in the calendar. Month value is 0-based. e.g., | ||
| * 0 for January. | ||
| * - dayOfMonth - the value used to set the DAY_OF_MONTH calendar field in the calendar. | ||
| * - hourOfDay - the value used to set the HOUR_OF_DAY calendar field in the calendar. | ||
| * - minute - the value used to set the MINUTE calendar field in the calendar. | ||
| * - second - the value used to set the SECONDS calendar field in the calendar. | ||
| * | ||
| * | ||
| * @class Date.Gregorian | ||
| */ | ||
| function GregorianCalendar(timezoneOffset, locale) { | ||
| var args = [].slice.call(arguments, 0); | ||
| if (typeof timezoneOffset === 'object') { | ||
| locale = timezoneOffset; | ||
| timezoneOffset = locale.timezoneOffset; | ||
| } else if (args.length >= 3) { | ||
| timezoneOffset = locale = null; | ||
| } | ||
| function GregorianCalendar(locale) { | ||
| locale = locale || defaultLocale; | ||
@@ -70,7 +42,5 @@ | ||
| */ | ||
| if (typeof timezoneOffset !== 'number') { | ||
| timezoneOffset = locale.timezoneOffset; | ||
| } | ||
| this.timezoneOffset = timezoneOffset; | ||
| this.timezoneOffset = locale.timezoneOffset; | ||
| /** | ||
@@ -92,6 +62,2 @@ * The first day of the week | ||
| this.fieldsComputed = false; | ||
| if (arguments.length >= 3) { | ||
| this.set.apply(this, args); | ||
| } | ||
| } | ||
@@ -305,3 +271,5 @@ | ||
| if (field === WEEK_OF_MONTH) { | ||
| var cal = new GregorianCalendar(fields[YEAR], fields[MONTH], 1); | ||
| var cal = this.clone(); | ||
| cal.clear(); | ||
| cal.set(fields[YEAR], fields[MONTH], 1); | ||
| return cal.get(WEEK_OF_MONTH); | ||
@@ -334,3 +302,5 @@ } | ||
| case WEEK_OF_YEAR: | ||
| var endOfYear = new GregorianCalendar(fields[YEAR], GregorianCalendar.DECEMBER, 31); | ||
| var endOfYear = this.clone(); | ||
| endOfYear.clear(); | ||
| endOfYear.set(fields[YEAR], GregorianCalendar.DECEMBER, 31); | ||
| value = endOfYear.get(WEEK_OF_YEAR); | ||
@@ -343,3 +313,5 @@ if (value === 1) { | ||
| case WEEK_OF_MONTH: | ||
| var endOfMonth = new GregorianCalendar(fields[YEAR], fields[MONTH], getMonthLength(fields[YEAR], fields[MONTH])); | ||
| var endOfMonth = this.clone(); | ||
| endOfMonth.clear(); | ||
| endOfMonth.set(fields[YEAR], fields[MONTH], getMonthLength(fields[YEAR], fields[MONTH])); | ||
| value = endOfMonth.get(WEEK_OF_MONTH); | ||
@@ -1171,2 +1143,3 @@ break; | ||
| var gc = this.clone(); | ||
| gc.clear(); | ||
| gc.setWeekDate(weekYear, 2, this.get(DAY_OF_WEEK)); | ||
@@ -1244,3 +1217,6 @@ return gc.getActualMaximum(WEEK_OF_YEAR); | ||
| } | ||
| var cal = new GregorianCalendar(this.timezoneOffset, this.locale); | ||
| var cal = new GregorianCalendar(this.locale); | ||
| cal.setTimezoneOffset(cal.getTimezoneOffset()); | ||
| cal.setFirstDayOfWeek(cal.getFirstDayOfWeek()); | ||
| cal.setMinimalDaysInFirstWeek(cal.getMinimalDaysInFirstWeek()); | ||
| cal.setTime(this.time); | ||
@@ -1247,0 +1223,0 @@ return cal; |
+4
-18
@@ -7,20 +7,6 @@ /** | ||
| module.exports = { | ||
| // in minutes | ||
| timezoneOffset: -8 * 60, | ||
| firstDayOfWeek: 0, | ||
| minimalDaysInFirstWeek: 1, | ||
| // DateFormatSymbols | ||
| eras: ['BC', 'AD'], | ||
| months: ['January', 'February', 'March', 'April', 'May', 'June', 'July', | ||
| 'August', 'September', 'October', 'November', 'December'], | ||
| shortMonths: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', | ||
| 'Oct', 'Nov', 'Dec'], | ||
| weekdays: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', | ||
| 'Saturday'], | ||
| shortWeekdays: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'], | ||
| ampms: ['AM', 'PM'], | ||
| datePatterns: ['EEEE, MMMM d, yyyy', 'MMMM d, yyyy', 'MMM d, yyyy', 'M/d/yy'], | ||
| timePatterns: ['h:mm:ss a \'GMT\'Z', 'h:mm:ss a', 'h:mm:ss a', 'h:mm a'], | ||
| dateTimePattern: '{date} {time}' | ||
| // in minutes | ||
| timezoneOffset: -8 * 60, | ||
| firstDayOfWeek: 0, | ||
| minimalDaysInFirstWeek: 1 | ||
| }; |
+4
-20
@@ -7,22 +7,6 @@ /** | ||
| module.exports = { | ||
| // in minutes | ||
| timezoneOffset: 8 * 60, | ||
| firstDayOfWeek: 1, | ||
| minimalDaysInFirstWeek: 1, | ||
| // DateFormatSymbols | ||
| eras: ['公元前', '公元'], | ||
| months: ['一月', '二月', '三月', '四月', '五月', '六月', | ||
| '七月', '八月', '九月', '十月', '十一月', '十二月'], | ||
| shortMonths: ['一月', '二月', '三月', '四月', '五月', '六月', | ||
| '七月', '八月', '九月', '十月', '十一月', '十二月'], | ||
| weekdays: ['星期天', '星期一', '星期二', '星期三', '星期四', | ||
| '星期五', '星期六'], | ||
| shortWeekdays: ['周日', '周一', '周二', '周三', '周四', '周五', | ||
| '周六'], | ||
| ampms: ['上午', '下午'], | ||
| /*jshint quotmark: false*/ | ||
| datePatterns: ["yyyy'年'M'月'd'日' EEEE", "yyyy'年'M'月'd'日'", "yyyy-M-d", "yy-M-d"], | ||
| timePatterns: ["ahh'时'mm'分'ss'秒' 'GMT'Z", "ahh'时'mm'分'ss'秒'", "H:mm:ss", "ah:mm"], | ||
| dateTimePattern: '{date} {time}' | ||
| // in minutes | ||
| timezoneOffset: 8 * 60, | ||
| firstDayOfWeek: 1, | ||
| minimalDaysInFirstWeek: 1 | ||
| }; |
+21
-41
| { | ||
| "name": "gregorian-calendar", | ||
| "version": "2.0.5", | ||
| "version": "3.0.0", | ||
| "author": "yiminghe <yiminghe@gmail.com>", | ||
| "description": "date time utils like momentjs", | ||
| "keywords": [ | ||
| "date", | ||
| "time", | ||
| "momentjs" | ||
| ], | ||
| "engines": { | ||
| "node": "~0.11" | ||
| "node": ">=0.10" | ||
| }, | ||
@@ -14,36 +20,6 @@ "license": "MIT", | ||
| "devDependencies": { | ||
| "aggregate-bower": "^1.0.2", | ||
| "async": "^0.9.0", | ||
| "auto-deps": "^1.0.3", | ||
| "expect.js": "^0.3.1", | ||
| "gulp": "^3.8.7", | ||
| "gulp-clean": "^0.3.1", | ||
| "gulp-filter": "^1.0.0", | ||
| "gulp-footer": "^1.0.5", | ||
| "gulp-header": "^1.0.5", | ||
| "gulp-jscs": "^1.1.0", | ||
| "gulp-jshint": "^1.8.4", | ||
| "gulp-kclean": "~0.0.15", | ||
| "gulp-modulex": "^1.0.0", | ||
| "gulp-rename": "^1.2.0", | ||
| "gulp-replace": "^0.4.0", | ||
| "gulp-uglify": "^0.3.1", | ||
| "gulp-util": "^3.0.0", | ||
| "gulp-wrapper": "^0.1.5", | ||
| "jshint": "^2.5.5", | ||
| "jshint-stylish": "^0.4.0", | ||
| "koa": "^0.11.0", | ||
| "koa-body": "^0.2.0", | ||
| "koa-modularize": "^3.0.3", | ||
| "koa-mount": "^1.3.0", | ||
| "koa-node-jscover": "^1.1.1", | ||
| "koa-serve-index": "^1.0.1", | ||
| "koa-static": "^1.4.7", | ||
| "mocha": "^1.21.4", | ||
| "modulex": "^1.7.4", | ||
| "node-jscover": "^0.6.8", | ||
| "node-jscover-coveralls": "^1.0.10", | ||
| "node-jscover-handler": "^1.0.3", | ||
| "precommit-hook": "^1.0.7", | ||
| "through2": "^0.6.2" | ||
| "rc-server": "^2.0.4", | ||
| "rc-tools": "^1.2.6" | ||
| }, | ||
@@ -57,12 +33,16 @@ "precommit": [ | ||
| "scripts": { | ||
| "start": "node --harmony server", | ||
| "history": "rc-tools run history", | ||
| "start": "node --harmony node_modules/.bin/rc-server", | ||
| "publish": "spm publish && rc-tools run tag", | ||
| "lint": "rc-tools run lint", | ||
| "test": "", | ||
| "publish": "spm publish && gulp tag", | ||
| "lint": "gulp lint", | ||
| "browser-test": "mocha-phantomjs http://localhost:$npm_package_config_port/tests/browser/runner.html", | ||
| "browser-test-cover": "mocha-phantomjs -R node_modules/node-jscover/lib/reporters/mocha/console http://localhost:$npm_package_config_port/tests/browser/runner.html?coverage" | ||
| "saucelabs": "rc-tools run saucelabs", | ||
| "browser-test": "rc-tools run browser-test", | ||
| "browser-test-cover": "rc-tools run browser-test-cover" | ||
| }, | ||
| "spm":{ | ||
| "output": ["lib/locale/*.js"] | ||
| "spm": { | ||
| "output": [ | ||
| "lib/locale/*.js" | ||
| ] | ||
| } | ||
| } |
+275
-2
@@ -6,2 +6,3 @@ # gregorian-calendar | ||
| [](https://npmjs.org/package/gregorian-calendar) | ||
| [](http://spmjs.io/package/gregorian-calendar) | ||
| [](https://npmjs.org/package/gregorian-calendar) | ||
@@ -11,6 +12,8 @@ [](https://travis-ci.org/yiminghe/gregorian-calendar) | ||
| [](https://gemnasium.com/yiminghe/gregorian-calendar) | ||
| [](http://badge.fury.io/bo/gregorian-calendar) | ||
| [](http://nodejs.org/download/) | ||
| [](https://saucelabs.com/u/gregorian-calendar) | ||
| [](https://saucelabs.com/u/gregorian-calendar) | ||
| ## use on node | ||
@@ -23,2 +26,272 @@ | ||
| console.log(date.getDayOfWeek()); | ||
| ``` | ||
| ``` | ||
| ## API | ||
| ### Constructor GregorianCalendar(locale) | ||
| * locale: specify suc as timeZoneOffset, firstDayOfWeek, can be require('gregorian-calendar/lib/locale/zh-cn') or require('gregorian-calendar/lib/locale/en-us') | ||
| ### Enums | ||
| ```js | ||
| SUNDAY: 0, | ||
| /** | ||
| * Enum indicating monday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| MONDAY: 1, | ||
| /** | ||
| * Enum indicating tuesday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| TUESDAY: 2, | ||
| /** | ||
| * Enum indicating wednesday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| WEDNESDAY: 3, | ||
| /** | ||
| * Enum indicating thursday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| THURSDAY: 4, | ||
| /** | ||
| * Enum indicating friday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| FRIDAY: 5, | ||
| /** | ||
| * Enum indicating saturday | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| SATURDAY: 6, | ||
| /** | ||
| * Enum indicating january | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| JANUARY: 0, | ||
| /** | ||
| * Enum indicating february | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| FEBRUARY: 1, | ||
| /** | ||
| * Enum indicating march | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| MARCH: 2, | ||
| /** | ||
| * Enum indicating april | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| APRIL: 3, | ||
| /** | ||
| * Enum indicating may | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| MAY: 4, | ||
| /** | ||
| * Enum indicating june | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| JUNE: 5, | ||
| /** | ||
| * Enum indicating july | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| JULY: 6, | ||
| /** | ||
| * Enum indicating august | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| AUGUST: 7, | ||
| /** | ||
| * Enum indicating september | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| SEPTEMBER: 8, | ||
| /** | ||
| * Enum indicating october | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| OCTOBER: 9, | ||
| /** | ||
| * Enum indicating november | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| NOVEMBER: 10, | ||
| /** | ||
| * Enum indicating december | ||
| * @type Number | ||
| * @member Date.Gregorian | ||
| */ | ||
| DECEMBER: 11 | ||
| ``` | ||
| ### GregorianCalendar.prototype.setTime(time: Number) | ||
| set absolute time for current instance | ||
| ### Number GregorianCalendar.prototype.getTime() | ||
| get absolute time for current instance | ||
| ### GregorianCalendar.prototype.setTimezoneOffset(timezoneOffset: Number) | ||
| set current date instance's timezone offset (in minutes) | ||
| ### Number GregorianCalendar.prototype.getTimezoneOffset() | ||
| get current date instance's timezone offset (in minutes) | ||
| ### GregorianCalendar.prototype.setYear(year: Number) | ||
| set the year of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getYear() | ||
| Returns the year of the given calendar field. | ||
| ### GregorianCalendar.prototype.setMonth(month: Number) | ||
| set the month of the given calendar field. January is 0, you can use enum | ||
| ### Number GregorianCalendar.prototype.getMonth() | ||
| Returns the month of the given calendar field. | ||
| ### GregorianCalendar.prototype.setDayOfMonth(day: Number) | ||
| set the day of month of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getDayOfMonth() | ||
| Returns the day of month of the given calendar field. | ||
| ### GregorianCalendar.prototype.setHourOfDay(hour: Number) | ||
| set the hour of day for the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getHourOfDay() | ||
| Returns the hour of day for the given calendar field. | ||
| ### GregorianCalendar.prototype.setMinute(minute: Number) | ||
| set the minute of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getMinute() | ||
| Returns the minute of the given calendar field. | ||
| ### GregorianCalendar.prototype.setSecond(second: Number) | ||
| set the second of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getSecond() | ||
| Returns the second of the given calendar field. | ||
| ### GregorianCalendar.prototype.setMilliSecond(second: Number) | ||
| set the millisecond of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getMilliSecond() | ||
| Returns the millisecond of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getWeekOfYear() | ||
| Returns the week of year of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getWeekOfMonth() | ||
| Returns the week of month of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getDayOfYear() | ||
| Returns the day of year of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getDayOfWeek() | ||
| Returns the day of week of the given calendar field. sunday is 0, monday is 1 | ||
| ### Number GregorianCalendar.prototype.getDayOfWeekInMonth() | ||
| Returns the day of week in month of the given calendar field. | ||
| ### GregorianCalendar.prototype.addYear(amount: Number) | ||
| add the year of the given calendar field. | ||
| ### GregorianCalendar.prototype.addMonth(amount: Number) | ||
| add the month of the given calendar field. | ||
| ### GregorianCalendar.prototype.addDayOfMonth(amount: Number) | ||
| add the day of month of the given calendar field. | ||
| ### GregorianCalendar.prototype.addHourOfDay(amount: Number) | ||
| add the hour of day of the given calendar field. | ||
| ### GregorianCalendar.prototype.addMinute(amount: Number) | ||
| add the minute of the given calendar field. | ||
| ### GregorianCalendar.prototype.addSecond(amount: Number) | ||
| add the second of the given calendar field. | ||
| ### GregorianCalendar.prototype.addMilliSecond(amount: Number) | ||
| add the millisecond of the given calendar field. | ||
| ### Number GregorianCalendar.prototype.getWeekYear() | ||
| Returns the week number of year represented by this GregorianCalendar. | ||
| ### GregorianCalendar.prototype.setWeekDate(weekYear: Number, weekOfYear: Number, dayOfWeek: Number) | ||
| Sets this GregorianCalendar to the date given by the date specifiers - weekYear, | ||
| weekOfYear, and dayOfWeek. weekOfYear follows the WEEK_OF_YEAR numbering. | ||
| The dayOfWeek value must be one of the DAY_OF_WEEK values: SUNDAY to SATURDAY. | ||
| * weekYear: the week year | ||
| * weekOfYear: the week number based on weekYear | ||
| * dayOfWeek: the day of week value | ||
| ### Number GregorianCalendar.prototype.getWeeksInWeekYear() | ||
| Returns the number of weeks in the week year | ||
| ### GregorianCalendar GregorianCalendar.prototype.clone() | ||
| Returns a clone of current instance | ||
| ### boolean GregorianCalendar.prototype.equals(other: GregorianCalendar) | ||
| ### GregorianCalendar.prototype.clear() | ||
| clear all field of current instance |
| <!doctype html> | ||
| <html> | ||
| <body> | ||
| <p>this is date@1.0.0 demo</p> | ||
| </body> | ||
| </html> |
-37
| var gulp = require('gulp'); | ||
| var filter = require('gulp-filter'); | ||
| var kclean = require('gulp-kclean'); | ||
| var modulex = require('gulp-modulex'); | ||
| var path = require('path'); | ||
| var rename = require('gulp-rename'); | ||
| var packageInfo = require('./package.json'); | ||
| var cwd = process.cwd(); | ||
| var src = path.resolve(cwd, 'lib'); | ||
| var build = path.resolve(cwd, 'build'); | ||
| var clean = require('gulp-clean'); | ||
| var uglify = require('gulp-uglify'); | ||
| var jshint = require('gulp-jshint'); | ||
| var stylish = require('jshint-stylish'); | ||
| var jscs = require('gulp-jscs'); | ||
| var replace = require('gulp-replace'); | ||
| var through2 = require('through2'); | ||
| gulp.task('lint', function () { | ||
| return gulp.src('./lib/**/*.js') | ||
| .pipe(jshint()) | ||
| .pipe(jshint.reporter(stylish)) | ||
| .pipe(jshint.reporter('fail')) | ||
| .pipe(jscs()); | ||
| }); | ||
| gulp.task('clean', function () { | ||
| return gulp.src(build, { | ||
| read: false | ||
| }).pipe(clean()); | ||
| }); | ||
| gulp.task('tag', function (done) { | ||
| var cp = require('child_process'); | ||
| var version = packageInfo.version; | ||
| cp.exec('git tag ' + version + ' | git push origin ' + version + ':' + version + ' | git push origin master:master', done); | ||
| }); |
-45
| var serve = require('koa-static'); | ||
| var app = require('koa')(); | ||
| var path = require('path'); | ||
| var fs = require('fs'); | ||
| var root = path.resolve(__dirname, './'); | ||
| var serveIndex = require('koa-serve-index'); | ||
| var modularize = require('koa-modularize'); | ||
| var mount = require('koa-mount'); | ||
| var cwd = __dirname; | ||
| var koaBody = require('koa-body'); | ||
| var jscoverHandler = require('koa-node-jscover'); | ||
| var jscoverCoveralls = require('node-jscover-coveralls/lib/koa'); | ||
| // parse application/x-www-form-urlencoded | ||
| app.use(koaBody()); | ||
| app.use(jscoverHandler({ | ||
| onlyLoad: function () { | ||
| return 1; | ||
| }, | ||
| next: function () { | ||
| return 1; | ||
| } | ||
| })); | ||
| app.use(jscoverHandler({ | ||
| jscover: require('node-jscover'), | ||
| next: function () { | ||
| return 1; | ||
| } | ||
| })); | ||
| app.use(mount('/', modularize(root, { | ||
| nowrap: function () { | ||
| return this.url.indexOf('nowrap') != -1 || this.url.indexOf('/node_modules/node-jscover/') != -1; | ||
| } | ||
| }))); | ||
| app.use(jscoverCoveralls()); | ||
| app.use(serveIndex(root, { | ||
| hidden: true, | ||
| view: 'details' | ||
| })); | ||
| app.use(serve(root, { | ||
| hidden: true | ||
| })); | ||
| var port = process.env.npm_package_config_port; | ||
| app.listen(port); | ||
| console.log('listen at ' + port); |
| <!DOCTYPE html> | ||
| <html> | ||
| <head> | ||
| <meta charset='utf-8'> | ||
| <title>gregorian-calendar tests</title> | ||
| <link rel='stylesheet' href='/node_modules/mocha/mocha.css'/> | ||
| <style> | ||
| html, body { | ||
| border: 0; | ||
| padding: 0; | ||
| margin: 0; | ||
| } | ||
| </style> | ||
| </head> | ||
| <body> | ||
| <h1 style="text-align: center">gregorian-calendar tests</h1> | ||
| <div id='mocha'></div> | ||
| <script src="/node_modules/modulex/build/modulex-debug.js?nowrap"></script> | ||
| <script src="/node_modules/async/lib/async.js?nowrap"></script> | ||
| <script src="/node_modules/node-jscover/lib/front-end/header.js?nowrap"></script> | ||
| <script src="/node_modules/node-jscover/lib/front-end/jscoverage-branch.js?nowrap"></script> | ||
| <script src='/node_modules/expect.js/index.js?nowrap'></script> | ||
| <script src='/node_modules/mocha/mocha.js?nowrap'></script> | ||
| <script src='/node_modules/node-jscover/lib/reporters/mocha/console.js?nowrap'></script> | ||
| <script src='/node_modules/node-jscover-coveralls/lib/reports/mocha.js?nowrap'></script> | ||
| <script> | ||
| function waits(ms) { | ||
| return function (next) { | ||
| setTimeout(next, ms); | ||
| }; | ||
| } | ||
| function runs(fn) { | ||
| return function (next) { | ||
| if (fn.length) { | ||
| fn(next); | ||
| } else { | ||
| fn(); | ||
| next(); | ||
| } | ||
| }; | ||
| } | ||
| mocha.setup('bdd'); | ||
| var isBuild = location.href.indexOf('build') !== -1; | ||
| var isCoverage = location.search.indexOf('coverage') !== -1; | ||
| if (location.href.indexOf('__testling') !== -1) { | ||
| mocha.reporter('tap'); | ||
| } | ||
| </script> | ||
| <script> | ||
| (function () { | ||
| if (location.href.indexOf('coverage') !== -1) { | ||
| require.config('packages', { | ||
| '/lib': { | ||
| filter: 'coverage', | ||
| base: '/lib/' | ||
| } | ||
| }); | ||
| } | ||
| modulex.use(['./specs/'], function () { | ||
| var runner; | ||
| if (window.mochaPhantomJS) { | ||
| runner = mochaPhantomJS.run(); | ||
| if (isCoverage) { | ||
| window.nodeJsCoverCoveralls(runner); | ||
| } | ||
| } else { | ||
| runner = mocha.run(); | ||
| } | ||
| }); | ||
| })(); | ||
| </script> | ||
| </body> | ||
| </html> |
| /** | ||
| * tests for gregorian gregorianCalendar | ||
| * @author yiminghe@gmail.com | ||
| */ | ||
| var GregorianCalendar = require('../../../'); | ||
| var ONE_SECOND = 1000; | ||
| var ONE_MINUTE = 60 * ONE_SECOND; | ||
| var ONE_HOUR = 60 * ONE_MINUTE; | ||
| var ONE_DAY = 24 * ONE_HOUR; | ||
| // var ONE_WEEK = 7 * ONE_DAY; | ||
| describe('GregorianCalendar', function () { | ||
| describe('simple case', function () { | ||
| var gregorianCalendar; | ||
| beforeEach(function () { | ||
| gregorianCalendar = new GregorianCalendar(require('../../../lib/locale/zh-cn')); | ||
| gregorianCalendar.set(2013, | ||
| GregorianCalendar.JUNE, 8, 18, 0, 0, 0); | ||
| }); | ||
| it('time works', function () { | ||
| expect(gregorianCalendar.getYear()).to.be(2013); | ||
| expect(gregorianCalendar.getMonth()).to.be(5); | ||
| expect(gregorianCalendar.getDayOfMonth()).to.be(8); | ||
| expect(gregorianCalendar.getHourOfDay()).to.be(18); | ||
| expect(gregorianCalendar.getMinutes()).to.be(0); | ||
| expect(gregorianCalendar.getSeconds()).to.be(0); | ||
| expect(gregorianCalendar.getMilliseconds()).to.be(0); | ||
| }); | ||
| describe('WEEK_OF_YEAR works', function () { | ||
| it('works for zh-cn', function () { | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(23); | ||
| }); | ||
| it('works for start of year', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for start of year for setFirstDayOfWeek2', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.THURSDAY); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for start of year 2', function () { | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for end of year', function () { | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| }); | ||
| it('works for end of year', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(1); | ||
| expect(gregorianCalendar.getWeekYear()).to.be(2013); | ||
| }); | ||
| it('works for ISO 8601', function () { | ||
| gregorianCalendar.setYear(2012); | ||
| gregorianCalendar.setMonth(0); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getWeekOfYear()).to.be(52); | ||
| expect(gregorianCalendar.getWeekYear()).to.be(2011); | ||
| }); | ||
| }); | ||
| it('DAY_OF_WEEK works', function () { | ||
| expect(gregorianCalendar.getDayOfWeek()).to.be(GregorianCalendar.SATURDAY); | ||
| }); | ||
| describe('WEEK_OF_MONTH', function () { | ||
| it('simply works', function () { | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(2); | ||
| gregorianCalendar.setDayOfMonth(1); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(1); | ||
| gregorianCalendar.setDayOfMonth(3); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(2); | ||
| gregorianCalendar.setYear(2011); | ||
| gregorianCalendar.setMonth(11); | ||
| gregorianCalendar.setDayOfMonth(31); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.MONDAY); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(5); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.THURSDAY); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(5); | ||
| }); | ||
| //For example, if getFirstDayOfWeek() is SUNDAY and getMinimalDaysInFirstWeek() is 4, | ||
| // then the first week of January 1998 is Sunday, January 4 through Saturday, January 10. | ||
| // These days have a WEEK_OF_MONTH of 1. | ||
| // Thursday, January 1 through Saturday, January 3 have a WEEK_OF_MONTH of 0. | ||
| // If getMinimalDaysInFirstWeek() is changed to 3, | ||
| // then January 1 through January 3 have a WEEK_OF_MONTH of 1. | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(0); | ||
| }); | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(3); | ||
| expect(gregorianCalendar.getWeekOfMonth()).to.be(1); | ||
| }); | ||
| }); | ||
| describe('DAY_OF_WEEK_IN_MONTH', function () { | ||
| it('simply works', function () { | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(2); | ||
| gregorianCalendar.set(2013, GregorianCalendar.APRIL, 7, 18, 0, 0); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| // does not affect DAY_OF_WEEK_IN_MONTH | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(4); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| it('getMinimalDaysInFirstWeek 1', function () { | ||
| gregorianCalendar.set(1998, GregorianCalendar.JANUARY, 1); | ||
| gregorianCalendar.setFirstDayOfWeek(GregorianCalendar.SUNDAY); | ||
| gregorianCalendar.setMinimalDaysInFirstWeek(3); | ||
| expect(gregorianCalendar.getDayOfWeekInMonth()).to.be(1); | ||
| }); | ||
| }); | ||
| it('getTime works', function () { | ||
| var jsDate = new Date(2013, GregorianCalendar.JUNE, 8, 18, 0, 0, 0); | ||
| expect(jsDate.getTime() === gregorianCalendar.getTime()); | ||
| }); | ||
| it('DAY_OF_YEAR works', function () { | ||
| var jan1Date = new Date(2013, GregorianCalendar.JANUARY, 1, 0, 0, 0, 0); | ||
| var jsDate = new Date(gregorianCalendar.getTime()); | ||
| var expected = parseInt((jsDate.getTime() - jan1Date.getTime()) / ONE_DAY, 10) + 1; | ||
| expect(gregorianCalendar.getDayOfYear()).to.be(expected); | ||
| }); | ||
| it('WEEK_OF_YEAR works', function () { | ||
| var gregorianCalendar = new GregorianCalendar(); | ||
| gregorianCalendar.setYear(1); | ||
| gregorianCalendar.setDayOfWeek(GregorianCalendar.TUESDAY); | ||
| gregorianCalendar.setWeekOfYear(1); | ||
| expect(gregorianCalendar.getYear()).to.be(1); | ||
| expect(gregorianCalendar.getDayOfWeek()).to.be(GregorianCalendar.TUESDAY); | ||
| expect(gregorianCalendar.getDayOfMonth()).to.be(2); | ||
| }); | ||
| }); | ||
| describe('add works', function () { | ||
| it('can adjust DAY_OF_MONTH', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(2012, GregorianCalendar.JANUARY, 31); | ||
| d.addMonth(1); | ||
| expect(d.getYear()).to.be(2012); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.FEBRUARY); | ||
| expect(d.getDayOfMonth()).to.be(29); | ||
| // 2012-2-28 | ||
| }); | ||
| it('can adjust YEAR', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(2012, GregorianCalendar.JANUARY, 31); | ||
| d.addMonth(13); | ||
| expect(d.getYear()).to.be(2013); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.FEBRUARY); | ||
| expect(d.getDayOfMonth()).to.be(28); | ||
| // 2012-2-28 | ||
| }); | ||
| }); | ||
| describe('roll works', function () { | ||
| it('can adjust DAY_OF_MONTH', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(1999, GregorianCalendar.AUGUST, 31); | ||
| d.rollMonth(8); | ||
| expect(d.getYear()).to.be(1999); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.APRIL); | ||
| expect(d.getDayOfMonth()).to.be(30); | ||
| // 2012-2-28 | ||
| }); | ||
| it('can roll to begin', function () { | ||
| var d = new GregorianCalendar(); | ||
| d.set(1999, GregorianCalendar.JUNE, 1); | ||
| d.rollWeekOfMonth(-1); | ||
| expect(d.getYear()).to.be(1999); | ||
| expect(d.getMonth()).to.be(GregorianCalendar.JUNE); | ||
| expect(d.getDayOfMonth()).to.be(29); | ||
| // 2012-2-28 | ||
| }); | ||
| }); | ||
| }); |
| require('./base'); | ||
| require('./utils'); |
| /** | ||
| * tests for gregorian gregorianCalendar | ||
| * @author yiminghe@gmail.com | ||
| */ | ||
| var GregorianCalendar = require('../../../'); | ||
| var ONE_SECOND = 1000; | ||
| var ONE_MINUTE = 60 * ONE_SECOND; | ||
| var ONE_HOUR = 60 * ONE_MINUTE; | ||
| var ONE_DAY = 24 * ONE_HOUR; | ||
| // var ONE_WEEK = 7 * ONE_DAY; | ||
| var Utils = GregorianCalendar.Utils; | ||
| var day1 = new Date(1, 0, 1); | ||
| day1.setFullYear(1); | ||
| function getDiffByDays(day2) { | ||
| return parseInt((day2.getTime() - day1.getTime()) / ONE_DAY, 10) + 1; | ||
| } | ||
| describe('GregorianCalendar Utils', function () { | ||
| it('mod works', function () { | ||
| expect(Utils.mod(8, 7)).to.be(1); | ||
| expect(Utils.mod(7, 7)).to.be(0); | ||
| expect(Utils.mod(-8, 7)).to.be(6); | ||
| expect(Utils.mod(-7, 7)).to.be(0); | ||
| }); | ||
| it('getFixedDate works', function () { | ||
| var d = new Date(2013, 0, 3, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(734869 + 2); | ||
| d = new Date(2013, 0, 1, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(734869); | ||
| expect(getDiffByDays(d)).to.be(Utils.getFixedDate(2013, 0, 1)); | ||
| d = new Date(3013, 4, 3, 0, 0, 0, 0); | ||
| // ipad is diff by 1.... | ||
| expect(getDiffByDays(d) - (Utils.getFixedDate(3013, 4, 3))).to.be.within(-5, 5); | ||
| d = new Date(-3013, 4, 3, 0, 0, 0, 0); | ||
| expect(getDiffByDays(d)).to.be(Utils.getFixedDate(-3013, 4, 3)); | ||
| }); | ||
| it('getGregorianDateFromFixedDate works', function () { | ||
| var d = new Date(2013, 0, 3, 0, 0, 0, 0); | ||
| var d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(2013, 0, 3)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| d = new Date(2013, 0, 1, 0, 0, 0, 0); | ||
| d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(2013, 0, 1)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| d = new Date(3013, 3, 1, 0, 0, 0, 0); | ||
| d2 = Utils.getGregorianDateFromFixedDate(Utils.getFixedDate(3013, 3, 1)); | ||
| expect(d2.year).to.be(d.getFullYear()); | ||
| expect(d2.month).to.be(d.getMonth()); | ||
| expect(d2.dayOfMonth).to.be(d.getDate()); | ||
| expect(d2.dayOfWeek).to.be(d.getDay()); | ||
| }); | ||
| }); |
Sorry, the diff of this file is not supported yet
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 1 instance in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
4
-88.24%295
1304.76%6
-25%0
-100%67293
-1.44%18
-10%1662
-6.89%