changeset 309:5860a2cbe221

Enabled testWeekdayRange, added tests for star/end of months for dateRange pac function
author Jiri Vanek <jvanek@redhat.com>
date Thu, 10 Nov 2011 20:57:36 +0100
parents f36e0b3fb9f0
children 1f74d3de726c
files ChangeLog netx/net/sourceforge/jnlp/runtime/pac-funcs.js tests/netx/pac/pac-funcs-test.js
diffstat 3 files changed, 136 insertions(+), 29 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Tue Nov 08 11:06:52 2011 -0500
+++ b/ChangeLog	Thu Nov 10 20:57:36 2011 +0100
@@ -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  <omajid@redhat.com>
 
 	PR808: javaws is unable to start when missing jars are enumerated before
--- a/netx/net/sourceforge/jnlp/runtime/pac-funcs.js	Tue Nov 08 11:06:52 2011 -0500
+++ b/netx/net/sourceforge/jnlp/runtime/pac-funcs.js	Thu Nov 10 20:57:36 2011 +0100
@@ -325,18 +325,20 @@
  * of the above ways of calling.
  */
 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
+    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;
+    }
+}
 
-    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 @@
         }
     }
 
+    // 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 @@
     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 @@
                 }
             }
         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 @@
                 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 @@
                 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;
--- a/tests/netx/pac/pac-funcs-test.js	Tue Nov 08 11:06:52 2011 -0500
+++ b/tests/netx/pac/pac-funcs-test.js	Thu Nov 10 20:57:36 2011 +0100
@@ -21,9 +21,11 @@
 	testDnsResolve();
 	testDnsDomainLevels();
 	testShExpMatch();
-	testWeekdayRange();
 	testDateRange();
 	testTimeRange();
+	testWeekdayRange();
+	testDateRange2();
+	testDateRange3();
 
 	java.lang.System.out.println("Test results: passed: " + testsPassed + "; failed: " + testsFailed + ";");
 }
@@ -235,10 +237,10 @@
        [ false, dayToStr(day+1) ],
        [ false, dayToStr(day-1) ],
     ];
+
+    runTests(weekdayRange, tests);
 }
 
-function testDateRange() {
-
     function incDate(date) {
         return (date + 1 - 1) % 31 +1 ;
     }
@@ -267,6 +269,9 @@
         }
     }
 
+function testDateRange() {
+   
+
     var today = new Date();
     var date = today.getDate();
     var month = today.getMonth();
@@ -369,6 +374,80 @@
 
 }
 
+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();