package test.unit; import java.util.TimeZone; import edu.cs320.project.*; import test.InputGenerator; import junit.framework.TestCase; /** * * @author Tristan Peck * */ public class TestDateWrapper extends TestCase { private static final int STRESS_ITERATIONS = 1000000; /** * @param name */ public TestDateWrapper(String name) { super(name); } /* (non-Javadoc) * @see junit.framework.TestCase#setUp() */ protected void setUp() throws Exception { super.setUp(); } /* (non-Javadoc) * @see junit.framework.TestCase#tearDown() */ protected void tearDown() throws Exception { super.tearDown(); } /** * Stress test that tests that calling {@link DateWrapper#toString()} returns a * String equivalent to the fields passed to * {@link DateWrapper#DateWrapper(int, int, int)} * using a {@link DateWrapper} with day light savings consideration disabled. */ public void test_Constructor_SimpleDate() { for (int i = 0; i < STRESS_ITERATIONS; i++) { int year = InputGenerator.randomDateYear(); int month = InputGenerator.randomDateMonth(); int day = InputGenerator.randomDateDay(year, month); DateWrapper date = new DateWrapper(year, month, day); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); String expectedStrDate = String.format("%04d-%02d-%02d 00:00:00", year, month, day); assertEquals(expectedStrDate, date.toString()); } } /** * Stress test that tests that calling {@link DateWrapper#toString()} returns a * String equivalent to the fields passed to * {@link DateWrapper#DateWrapper(int, int, int, int, int, int)} * using a {@link DateWrapper} with day light savings consideration disabled. */ public void test_Constructor_DateAndTime() { for (int i = 0; i < STRESS_ITERATIONS; i++) { int year = InputGenerator.randomDateYear(); int month = InputGenerator.randomDateMonth(); int day = InputGenerator.randomDateDay(year, month); int hour = InputGenerator.randomDateHour(); int minute = InputGenerator.randomDateMinute(); int second = InputGenerator.randomDateSecond(); DateWrapper date = new DateWrapper(year, month, day, hour, minute, second); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); String expectedStrDate = String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); assertEquals(expectedStrDate, date.toString()); } } /** * Stress test that tests that calling {@link DateWrapper#toString()} returns a * String equivalent to the one passed to {@link DateWrapper#DateWrapper(String)} * using a {@link DateWrapper} with day light savings consideration disabled. */ public void test_Constructor_FromString() { for (int i = 0; i < STRESS_ITERATIONS; i++) { String dateString = InputGenerator.randomDateString(); DateWrapper date = new DateWrapper(dateString); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); assertEquals(dateString, date.toString()); } } /** * Stress test that tests that calling {@link DateWrapper#FromDisplayString(String)} returns a * {@link DateWrapper} equivalent to the passed String after its daylight savings * considerations are disabled. */ public void test_FromDisplayString() { for (int i = 0; i < STRESS_ITERATIONS; i++) { int year = InputGenerator.randomDateYear(); int month = InputGenerator.randomDateMonth(); int day = InputGenerator.randomDateDay(year, month); int hour = InputGenerator.randomDateHour(); int minute = InputGenerator.randomDateMinute(); int second = InputGenerator.randomDateSecond(); DateWrapper date = DateWrapper.FromDisplayString(String.format( "%02d/%02d/%04d %02d:%02d:%02d", month, day, year, hour, minute, second)); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); String strDate = String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); assertNotNull(strDate); assertEquals(strDate, date.toString()); } } /** * Stress test that tests that calling {@link DateWrapper#toString(boolean)} returns a * String equivalent to the fields passed to {@link DateWrapper#DateWrapper(int, int, int, int, int, int)} * after the {@link DateWrapper}'s day light savings considerations are disabled. Tested by passing both * true and false to {@link DateWrapper#toString(boolean)}. */ public void test_toString() { for (int i = 0; i < STRESS_ITERATIONS; i++) { int year = InputGenerator.randomDateYear(); int month = InputGenerator.randomDateMonth(); int day = InputGenerator.randomDateDay(year, month); int hour = InputGenerator.randomDateHour(); int minute = InputGenerator.randomDateMinute(); int second = InputGenerator.randomDateSecond(); DateWrapper date = new DateWrapper(year, month, day, hour, minute, second); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); String shortDate = String.format("%04d-%02d-%02d", year, month, day); assertNotNull(shortDate); String longDate = String.format("%04d-%02d-%02d %02d:%02d:%02d", year, month, day, hour, minute, second); assertNotNull(longDate); assertEquals(shortDate, date.toString(false)); assertEquals(longDate, date.toString(true)); } } /** * Stress test that tests that calling {@link DateWrapper#ToDisplayString(boolean)} returns a * String equivalent to the fields passed to {@link DateWrapper#DateWrapper(int, int, int, int, int, int)} * after the {@link DateWrapper}'s day light savings considerations are disabled. Tested by passing both * true and false to {@link DateWrapper#ToDisplayString(boolean)}. */ public void test_ToDisplayString() { for (int i = 0; i < STRESS_ITERATIONS; i++) { int year = InputGenerator.randomDateYear(); int month = InputGenerator.randomDateMonth(); int day = InputGenerator.randomDateDay(year, month); int hour = InputGenerator.randomDateHour(); int minute = InputGenerator.randomDateMinute(); int second = InputGenerator.randomDateSecond(); DateWrapper date = new DateWrapper(year, month, day, hour, minute, second); assertNotNull(date); TimeZone timeZone = TimeZone.getTimeZone("GMT+00"); assertNotNull(timeZone); assertTrue(!timeZone.useDaylightTime()); date.setTimeZone(timeZone); String shortDate = String.format("%02d/%02d/%04d", month, day, year); assertNotNull(shortDate); String longDate = String.format("%02d/%02d/%04d %02d:%02d:%02d", month, day, year, hour, minute, second); assertNotNull(longDate); assertEquals(shortDate, date.ToDisplayString(false)); assertEquals(longDate, date.ToDisplayString(true)); } } }