aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
authorArtur Signell <artur.signell@itmill.com>2010-04-08 05:32:00 +0000
committerArtur Signell <artur.signell@itmill.com>2010-04-08 05:32:00 +0000
commit46b6fd6044c5b53dc2e3c128dc3b2bc0894efe6f (patch)
tree0c42b1c782fbe001f969b0322a6cdb8c575070e3 /tests
parentf9fdcfb00d3a3072ac72d1f0927c850388127e0e (diff)
downloadvaadin-framework-46b6fd6044c5b53dc2e3c128dc3b2bc0894efe6f.tar.gz
vaadin-framework-46b6fd6044c5b53dc2e3c128dc3b2bc0894efe6f.zip
Test case for week number calculation
svn changeset:12367/svn branch:6.3
Diffstat (limited to 'tests')
-rw-r--r--tests/src/com/vaadin/tests/server/component/datefield/WeekNumberCalculation.java161
1 files changed, 161 insertions, 0 deletions
diff --git a/tests/src/com/vaadin/tests/server/component/datefield/WeekNumberCalculation.java b/tests/src/com/vaadin/tests/server/component/datefield/WeekNumberCalculation.java
new file mode 100644
index 0000000000..e8dc9eea47
--- /dev/null
+++ b/tests/src/com/vaadin/tests/server/component/datefield/WeekNumberCalculation.java
@@ -0,0 +1,161 @@
+package com.vaadin.tests.server.component.datefield;
+
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.TestCase;
+
+import com.vaadin.terminal.gwt.client.DateTimeService;
+
+@SuppressWarnings("deprecation")
+public class WeekNumberCalculation extends TestCase {
+
+ final long MILLISECONDS_PER_DAY = 24 * 3600 * 1000;
+
+ static Map<Date, Integer> isoWeekNumbers = new HashMap<Date, Integer>();
+ static {
+ isoWeekNumbers.put(getDate(2005, 02, 02), 5);
+
+ isoWeekNumbers.put(getDate(2005, 1, 1), 53);
+ isoWeekNumbers.put(getDate(2005, 1, 2), 53);
+ isoWeekNumbers.put(getDate(2005, 1, 3), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 4), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 5), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 6), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 7), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 8), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 9), 1);
+ isoWeekNumbers.put(getDate(2005, 1, 10), 2);
+ isoWeekNumbers.put(getDate(2005, 12, 31), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 30), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 29), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 28), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 27), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 26), 52);
+ isoWeekNumbers.put(getDate(2005, 12, 25), 51);
+ isoWeekNumbers.put(getDate(2007, 1, 1), 1);
+ isoWeekNumbers.put(getDate(2007, 12, 30), 52);
+ isoWeekNumbers.put(getDate(2007, 12, 31), 1);
+ isoWeekNumbers.put(getDate(2008, 1, 1), 1);
+ isoWeekNumbers.put(getDate(2008, 12, 28), 52);
+ isoWeekNumbers.put(getDate(2008, 12, 29), 1);
+ isoWeekNumbers.put(getDate(2008, 12, 30), 1);
+ isoWeekNumbers.put(getDate(2008, 12, 31), 1);
+ isoWeekNumbers.put(getDate(2009, 1, 1), 1);
+ isoWeekNumbers.put(getDate(2009, 12, 31), 53);
+ isoWeekNumbers.put(getDate(2010, 1, 1), 53);
+ isoWeekNumbers.put(getDate(2010, 1, 2), 53);
+ isoWeekNumbers.put(getDate(2010, 1, 3), 53);
+ isoWeekNumbers.put(getDate(2010, 1, 4), 1);
+ isoWeekNumbers.put(getDate(2010, 1, 5), 1);
+ isoWeekNumbers.put(getDate(2010, 10, 10), 40);
+
+ }
+
+ /**
+ * Test all dates from 1990-1992 + some more and see that {@link Calendar}
+ * calculates the ISO week number like we do.
+ *
+ */
+ public void testISOWeekNumbers() {
+ Calendar c = Calendar.getInstance();
+ c.set(1990, 1, 1);
+ long start = c.getTimeInMillis();
+
+ for (int i = 0; i < 1000; i++) {
+ Date d = new Date(start + i * MILLISECONDS_PER_DAY);
+ int expected = getCalendarISOWeekNr(d);
+ int calculated = DateTimeService.getISOWeekNumber(d);
+ assertEquals(d + " should be week " + expected, expected,
+ calculated);
+
+ }
+ }
+
+ //
+ // /**
+ // * Test all dates from 1990-1992 + some more and see that {@link Calendar}
+ // * calculates the US week number like we do.
+ // *
+ // */
+ // public void testUSWeekNumbers() {
+ // testWeekNumbers(new Locale("en", "US"));
+ // }
+
+ // public void testFIWeekNumbers() {
+ // // testWeekNumbers(new Locale("fi", "FI"));
+ // }
+
+ // private void testWeekNumbers(Locale locale) {
+ // Calendar c = Calendar.getInstance(locale);
+ // c.set(1990, 0, 1);
+ // // c.set(1990, 11, 29);
+ // c.get(Calendar.DAY_OF_WEEK);
+ // long start = c.getTimeInMillis();
+ //
+ // for (int i = 0; i < 1000; i++) {
+ // Date d = new Date(start + i * MILLISECONDS_PER_DAY);
+ // System.out.print(d);
+ // int expected = getCalendarWeekNumber(d, locale);
+ // int calculated = DateTimeService.getWeekNumber(d, c
+ // .getMinimalDaysInFirstWeek(), c.getFirstDayOfWeek() - 1);
+ // assertEquals(d + " should be week " + expected, expected,
+ // calculated);
+ // System.out.println(" OK (" + expected + ")");
+ //
+ // }
+ //
+ // }
+
+ /**
+ * Verify that special cases are handled correctly by us (and
+ * {@link Calendar}).
+ *
+ */
+ public void testSampleISOWeekNumbers() {
+ for (Date d : isoWeekNumbers.keySet()) {
+ // System.out.println("Sample: " + d);
+ int expected = isoWeekNumbers.get(d);
+ int calculated = DateTimeService.getISOWeekNumber(d);
+ assertEquals(d + " should be week " + expected
+ + " (Java Calendar is wrong?)", expected,
+ getCalendarISOWeekNr(d));
+ assertEquals(d + " should be week " + expected, expected,
+ calculated);
+
+ }
+ }
+
+ // public void testUSWeekNumber() {
+ // Date d = new Date();
+ //
+ // }
+
+ private int getCalendarISOWeekNr(Date d) {
+ Calendar c = Calendar.getInstance();
+ c.setFirstDayOfWeek(Calendar.MONDAY);
+ c.setMinimalDaysInFirstWeek(4);
+ c.setTime(d);
+
+ return c.get(Calendar.WEEK_OF_YEAR);
+ }
+
+ // private int getCalendarWeekNumber(Date d, Locale locale) {
+ // Calendar c = Calendar.getInstance(locale);
+ // // c.setFirstDayOfWeek(Calendar.MONDAY);
+ // // c.setMinimalDaysInFirstWeek(4);
+ // c.setTime(d);
+ //
+ // return c.get(Calendar.WEEK_OF_YEAR);
+ // }
+
+ private static Date getDate(int year, int month, int date) {
+ Calendar c = Calendar.getInstance();
+ c.clear();
+ c.set(year, month - 1, date);
+ return c.getTime();
+ }
+
+}