var assert = require('assert'); describe('mocha', function() { describe('#indexOf()', function() { it('mocha test', function() { var EQUAL = '0', RIGHT = '1', SUCCESS = 'OK', ERROR = 'ERROR'; // 日期相等 var result1 = comparisonDate('2017-11-11', '2017-11-11'); assert.equal(result1.state, SUCCESS); assert.equal(result1.content, EQUAL); // 開始日期小於結束日期 var result2 = comparisonDate('2017-11-11', '2017-11-12'); assert.equal(result1.state, SUCCESS); assert.equal(result1.content, RIGHT); // 開始日期大於結束日期 var result3 = comparisonDate('2017-11-12', '2017-11-11'); assert.equal(result1.state, ERROR); // 開始日期出錯 var result4 = comparisonDate('2017-11-1', '2017-11-11'); assert.equal(result1.state, ERROR); // 結束日期出錯 var result5 = comparisonDate('2017-11-1', '3017-11-11'); assert.equal(result1.state, ERROR); }); }); }); function comparisonDate( begin_date, end_date ) { const EQUAL = 0, RIGHT = 1, SUCCESS = 'OK', ERROR = 'ERROR', dateReg = /^[2]\d{3}-[01]\d-[0123]\d$/; const data = { state: ERROR, msg: '', content: '日期出錯' } if ( typeof begin_date !== 'string' || begin_date === '' || !dateReg.test( begin_date ) ) { data.msg = '參數begin_date出錯'; return data; } if ( typeof end_date !== 'string' || end_date === '' || !dateReg.test( end_date ) ) { data.msg = '參數end_date出錯'; return data; } try { const beginTimestamp = new Date(begin_date).getTime(); const endTimestamp = new Date(end_date).getTime(); // 開始日期小於結束日期 if ( beginTimestamp > endTimestamp ) { data.msg = '開始時間大於結束時間'; return data; } // 開始日期等於結束日期 if ( beginTimestamp === endTimestamp ) { data.state = SUCCESS; data.content = EQUAL.toString(); return data; } data.state = SUCCESS; data.content = RIGHT.toString(); return data; } catch ( err ) { return data; } }