Modified DateTest to use fixed dates for some of its tests - using the current date as a base can result in setting in date roll-over behavior; Added documentation to RequestBuilderTest.testRequestBuilderStringString() regarding security settings in IE and potential test failure
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@270 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/test/com/google/gwt/emultest/java/util/DateTest.java b/user/test/com/google/gwt/emultest/java/util/DateTest.java
index 9157e5a..a44a566 100644
--- a/user/test/com/google/gwt/emultest/java/util/DateTest.java
+++ b/user/test/com/google/gwt/emultest/java/util/DateTest.java
@@ -313,6 +313,9 @@
/** Testing for public void java.util.Date.setDate(int)* */
public void testSetDate() {
+ // We only go through dates from 0-28 here. There are some months that do not
+ // have 29, 30, or 31 days - so our assertion would be wrong in the cases where
+ // the current month did not have 29,30,or 31 days
for (int i = 1; i < 29; i++) {
Date accum0 = create();
accum0.setDate(i);
@@ -320,6 +323,19 @@
}
}
+ /** Testing to that if we set the day number to 31 for a month that only has 30 days in it,
+ that the date rolls over to the first day of the next month in sequence.
+ */
+ public void testInvalidDateForMonth() {
+ int monthNum = 3; // April
+ int numDaysInOldMonth = 30;
+ int newDayNum = 31;
+ Date dateWithThirtyDays = new Date(2006, monthNum, 30);
+ dateWithThirtyDays.setDate(newDayNum);
+ assertEquals(dateWithThirtyDays.getMonth(), monthNum + 1);
+ assertEquals(dateWithThirtyDays.getDate(), newDayNum - numDaysInOldMonth);
+ }
+
/** Testing for public void java.util.Date.setHours(int)* */
public void testSetHours() {
for (int i = 0; i < 24; i++) {
@@ -342,13 +358,31 @@
/** Testing for public void java.util.Date.setMonth(int)* */
public void testSetMonth() {
for (int i = 0; i < 12; i++) {
- Date accum0 = create();
+ // We want to use a fixed date here. If we use the current date, the assertion may fail
+ // when the date is the 29th, 30th, or 31st, and we set the month to one which does
+ // not have 29, 30, or 31 days in it, respectively.
+ Date accum0 = new Date(2006, 12, 1);
accum0.setMonth(i);
assertEquals(accum0.getMonth(), i);
}
}
+ /** We want to test to see that if we are currently in a month with 31 days and we
+ set the month to one which has less than 31 days, that the month returned by the
+ date class will be one higher than the month that we originally set (according to
+ the spec of java.util.date)
+ */
+ public void testSetInvalidMonthForDate() {
+ int dayNum = 31;
+ int newMonthNum = 1;
+ int numDaysInNewMonth = 28;
+ Date dateWithThirtyOneDays = new Date(2006, 12, dayNum);
+ dateWithThirtyOneDays.setMonth(newMonthNum);
+ assertEquals(dateWithThirtyOneDays.getMonth(), newMonthNum + 1);
+ assertEquals(dateWithThirtyOneDays.getDate(), dayNum - numDaysInNewMonth);
+ }
+
/** Testing for public void java.util.Date.setSeconds(int)* */
public void testSetSeconds() {
for (int i = 0; i < 24; i++) {
@@ -371,12 +405,44 @@
/** Testing for public void java.util.Date.setYear(int)* */
public void testSetYear() {
for (int i = 1880; i < 2050; i++) {
- Date accum0 = create();
+ // We want to use a fixed date here. If we use the current date, the assertion may fail
+ // when the date is February 29th, and we set the year to a non-leap year
+ Date accum0 = new Date(2006, 12, 01);
accum0.setYear(i);
assertEquals(accum0.getYear(), i);
}
}
+ /** We want to test to see that if the date is Feb 29th (in a leap year) and we set the
+ year to a non-leap year, that the month and day will roll over to March 1st.
+ */
+ public void testSetInvalidYearForDate() {
+ int dayNum = 29;
+ int monthNum = 1; // February
+ int newYearNum = 2005;
+ int numDaysInFebInNewYear = 28;
+ Date leapYearDate = new Date(2004, monthNum, dayNum);
+ leapYearDate.setYear(newYearNum);
+ assertEquals(leapYearDate.getYear(), newYearNum);
+ assertEquals(leapYearDate.getMonth(), monthNum + 1);
+ assertEquals(leapYearDate.getDate(), dayNum - numDaysInFebInNewYear);
+ }
+
+ /** We want to test to see that if the date is Feb 29th (in a leap year) and we set the
+ year to another leap year, that the month and day will be retained
+ */
+ public void testSetValidLeapYearForDate() {
+ int dayNum = 29;
+ int monthNum = 1; //February
+ int yearNum = 2004;
+ int newYearNum = yearNum + 4;
+ Date leapYearDate = new Date(yearNum, monthNum, dayNum);
+ leapYearDate.setYear(newYearNum);
+ assertEquals(leapYearDate.getYear(), newYearNum);
+ assertEquals(leapYearDate.getMonth(), monthNum);
+ assertEquals(leapYearDate.getDate(), dayNum);
+ }
+
/** Testing for public java.lang.String java.util.Date.toGMTString()* */
public void testToGMTString() {
diff --git a/user/test/com/google/gwt/http/client/RequestBuilderTest.java b/user/test/com/google/gwt/http/client/RequestBuilderTest.java
index 0153ad3..21462cc 100644
--- a/user/test/com/google/gwt/http/client/RequestBuilderTest.java
+++ b/user/test/com/google/gwt/http/client/RequestBuilderTest.java
@@ -28,7 +28,13 @@
/**
* Test method for
* {@link com.google.gwt.http.client.RequestBuilder#RequestBuilder(java.lang.String, java.lang.String)}.
- *
+ * <p>
+ * NOTE: When running this test against Internet Explorer, the security settings of IE affect this test.
+ * The assumption is that the "Access Data Sources Across Domains" setting is set to "Disabled". This is
+ * the standard setting for the "Internet" zone, which models the case of a user's browser sending a request
+ * to a foreign website. However, if you are running the unit tests against a machine running the GWT app which
+ * falls into your "Trusted Sites" or "Local Network" content zone, this setting's value is different.
+ * You will have to change the setting to "Disabled" in these zones for this test to pass.
* <p>
* Test Cases:
* <ul>
@@ -43,18 +49,21 @@
try {
RequestBuilder builder = new RequestBuilder((RequestBuilder.Method) null,
null);
+ fail("NullPointerException should have been thrown for construction with null method.");
} catch (NullPointerException ex) {
// purposely ignored
}
try {
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, null);
+ fail("NullPointerException should have been thrown for construction with null URL.");
} catch (NullPointerException ex) {
// purposely ignored
}
try {
RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, "");
+ fail("IllegalArgumentException should have been throw for construction with empty URL.");
} catch (IllegalArgumentException ex) {
// purposely ignored
}