diff options
author | Jiri Vanek <[email protected]> | 2011-11-10 20:57:36 +0100 |
---|---|---|
committer | Jiri Vanek <[email protected]> | 2011-11-10 20:57:36 +0100 |
commit | 05f6d4eacd71a809d5283d185bda8198e8450726 (patch) | |
tree | 7c4d3296068c97997f6d9d167b67510c0bad9dba | |
parent | 0dca9f29a8f29cb7b00b7841805a9d87a437a899 (diff) |
Enabled testWeekdayRange, added tests for star/end of months for dateRange pac function
-rw-r--r-- | ChangeLog | 15 | ||||
-rw-r--r-- | netx/net/sourceforge/jnlp/runtime/pac-funcs.js | 65 | ||||
-rw-r--r-- | tests/netx/pac/pac-funcs-test.js | 85 |
3 files changed, 136 insertions, 29 deletions
@@ -1,3 +1,18 @@ +2011-11-10 Jiri Vanek <jvanek at redhat.com> + + Added tests which covers corner cases or rhino support function dateRange + Enabled testWeekdayRange test + * tests/netx/pac/pac-funcs-test.js: (testWeekdayRange) - added mising + runTests call + (incDate) (decDate) (monthToStr) moved level up from function scope + to be shareable + (testDateRange2) new method, tests last days of months. + (testDateRange3) new method, tests first days of months + * netx/net/sourceforge/jnlp/runtime/pac-funcs.js: + (dateRange) logic of this method moved to isDateInRange. This one now serve + just as api using current date + (isDateInRange) logic of dateRange, can calculate ranges against any date + 2011-10-31 Omair Majid <[email protected]> PR808: javaws is unable to start when missing jars are enumerated before diff --git a/netx/net/sourceforge/jnlp/runtime/pac-funcs.js b/netx/net/sourceforge/jnlp/runtime/pac-funcs.js index 716def6..5c1ff78 100644 --- a/netx/net/sourceforge/jnlp/runtime/pac-funcs.js +++ b/netx/net/sourceforge/jnlp/runtime/pac-funcs.js @@ -325,18 +325,20 @@ function weekdayRange() { * of the above ways of calling. */ function dateRange() { + switch (arguments.length) { + case 1: return isDateInRange(new Date(),arguments[0]); + case 2: return isDateInRange(new Date(),arguments[0],arguments[1]); + case 3: return isDateInRange(new Date(),arguments[0],arguments[1],arguments[2]); + case 4: return isDateInRange(new Date(),arguments[0],arguments[1],arguments[2],arguments[3]); + case 5: return isDateInRange(new Date(),arguments[0],arguments[1],arguments[2],arguments[3],arguments[4]); + case 6: return isDateInRange(new Date(),arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5]); + case 7: return isDateInRange(new Date(),arguments[0],arguments[1],arguments[2],arguments[3],arguments[4],arguments[5],arguments[6]); //GMT + default: + return false; + } +} - // note: watch out for wrapping around of dates. date ranges, like - // month=9 to month=8, wrap around and cover the entire year. this - // makes everything more interesting - - var gmt; - if (arguments.length > 1) { - if (arguments[arguments.length-1] === "GMT") { - gmt = true; - arguments.splice(0,arguments.length-1); - } - } + function isDateInRange() { function isDate(date) { if (typeof(date) === 'number' && (date <= 31 && date >= 1)) { @@ -578,8 +580,19 @@ function dateRange() { } } + // note: watch out for wrapping around of dates. date ranges, like + // month=9 to month=8, wrap around and cover the entire year. this + // makes everything more interesting + + var gmt; + if (arguments.length > 2) { + if (arguments[arguments.length-1] === "GMT") { + gmt = true; + arguments.splice(0,arguments.length-1); + } + } // TODO: change date to gmt, whatever - var today = new Date(); + var today = arguments[0] var arg1; var arg2; @@ -588,9 +601,9 @@ function dateRange() { var arg5; var arg6; - switch (arguments.length) { + switch (arguments.length-1) { case 1: - var arg = arguments[0]; + var arg = arguments[1]; if (isDate(arg)) { if (today.getDate() === arg) { return true; @@ -611,8 +624,8 @@ function dateRange() { } } case 2: - arg1 = arguments[0]; - arg2 = arguments[1]; + arg1 = arguments[1]; + arg2 = arguments[2]; if (isDate(arg1) && isDate(arg2)) { var date1 = arg1; var date2 = arg2; @@ -634,10 +647,10 @@ function dateRange() { return false; } case 4: - arg1 = arguments[0]; - arg2 = arguments[1]; - arg3 = arguments[2]; - arg4 = arguments[3]; + arg1 = arguments[1]; + arg2 = arguments[2]; + arg3 = arguments[3]; + arg4 = arguments[4]; if (isDate(arg1) && isMonth(arg2) && isDate(arg3) && isMonth(arg4)) { var date1 = arg1; @@ -658,12 +671,12 @@ function dateRange() { return false; } case 6: - arg1 = arguments[0]; - arg2 = arguments[1]; - arg3 = arguments[2]; - arg4 = arguments[3]; - arg5 = arguments[4]; - arg6 = arguments[5]; + arg1 = arguments[1]; + arg2 = arguments[2]; + arg3 = arguments[3]; + arg4 = arguments[4]; + arg5 = arguments[5]; + arg6 = arguments[6]; if (isDate(arg1) && isMonth(arg2) && isYear(arg3) && isDate(arg4) && isMonth(arg5) && isYear(arg6)) { var day1 = arg1; diff --git a/tests/netx/pac/pac-funcs-test.js b/tests/netx/pac/pac-funcs-test.js index e5b1bcb..451126d 100644 --- a/tests/netx/pac/pac-funcs-test.js +++ b/tests/netx/pac/pac-funcs-test.js @@ -21,9 +21,11 @@ function main() { testDnsResolve(); testDnsDomainLevels(); testShExpMatch(); - testWeekdayRange(); testDateRange(); testTimeRange(); + testWeekdayRange(); + testDateRange2(); + testDateRange3(); java.lang.System.out.println("Test results: passed: " + testsPassed + "; failed: " + testsFailed + ";"); } @@ -235,9 +237,9 @@ function testWeekdayRange() { [ false, dayToStr(day+1) ], [ false, dayToStr(day-1) ], ]; -} -function testDateRange() { + runTests(weekdayRange, tests); +} function incDate(date) { return (date + 1 - 1) % 31 +1 ; @@ -267,6 +269,9 @@ function testDateRange() { } } +function testDateRange() { + + var today = new Date(); var date = today.getDate(); var month = today.getMonth(); @@ -369,6 +374,80 @@ function testDateRange() { } +function testDateRange2() { + + var dates = [ + new Date("January 31, 2011 3:33:33"), + new Date("February 28, 2011 3:33:33"), + new Date("February 29, 2012 3:33:33"), + new Date("March 31, 2011 3:33:33"), + new Date("April 30, 2011 3:33:33"), + new Date("May 31, 2011 3:33:33"), + new Date("June 30, 2011 3:33:33"), + new Date("July 31, 2011 3:33:33"), + new Date("August 31, 2011 3:33:33"), + new Date("September 30, 2011 3:33:33"), + new Date("October 31, 2011 3:33:33"), + new Date("November 30, 2011 3:33:33"), + new Date("December 31, 2011 3:33:33"), + +] + for (var i = 0; i < dates.length; i++) { + var today = dates[i]; + var date = today.getDate(); + var month = today.getMonth(); + var year = today.getYear(); + + var tests = [ + + [ true, today, date, monthToStr(month) , incDate(date), monthToStr(month) ], + [ true, today, decDate(date), monthToStr(month) , incDate(date), monthToStr(month) ], + [ true, today, decDate(date), monthToStr(month), year, incDate(date), monthToStr(month), year ], + [ false, today, incDate(date), monthToStr(month), year, incDate(date), monthToStr(month+1), year+1 ], + + ]; + + runTests(isDateInRange, tests); + } + +} + +function testDateRange3() { + var dates = [ + new Date("January 1, 2011 1:11:11"), + new Date("February 1, 2011 1:11:11"), + new Date("March 1, 2011 1:11:11"), + new Date("April 1, 2011 1:11:11"), + new Date("May 1, 2011 1:11:11"), + new Date("June 1, 2011 1:11:11"), + new Date("July 1, 2011 1:11:11"), + new Date("August 1, 2011 1:11:11"), + new Date("September 1, 2011 1:11:11"), + new Date("October 1, 2011 1:11:11"), + new Date("November 1, 2011 1:11:11"), + new Date("December 1, 2011 1:11:11"), + + ] + + + + for (var i = 0; i < dates.length; i++) { + var today = dates[i] + var date = today.getDate(); + var month = today.getMonth(); + var year = today.getYear(); + + var tests = [ + [ true, today, decDate(date), monthToStr(month) , date, monthToStr(month) ], + [ true, today, decDate(date), monthToStr(month) , incDate(date), monthToStr(month) ], + [ true, today, decDate(date), monthToStr(month), year, incDate(date), monthToStr(month), year ], + + ]; + + runTests(isDateInRange, tests); + } +} + function testTimeRange() { var now = new Date(); |