diff --git a/a1/src/edu/wmich/cs3310/a1/ComputeTime.java b/a1/src/edu/wmich/cs3310/a1/ComputeTime.java new file mode 100644 index 0000000000000000000000000000000000000000..c9b921f210395434a63909031eea13038d63b111 --- /dev/null +++ b/a1/src/edu/wmich/cs3310/a1/ComputeTime.java @@ -0,0 +1,78 @@ +package edu.wmich.cs3310.a1; + + +import java.util.Date; + + +/** + * Calculates differences between two times. + */ +public class ComputeTime { + + //region Variables + + private long startMilliseconds; + private long endMilliseconds; + private long differenceMilliseconds; + + //endregion Variables + + + + //region Constructor + + /** + * Base constructor. + */ + public ComputeTime() { + + } + + //endregion Constructor + + + + //region Methods + + /** + * Determines the difference in milliseconds between two times. + * @param time1 Start time. + * @param time2 End time. + * @return Long of Milisecond difference. + * Positive means time1 is earlier than time2. + * Zero means they're equal. + * Negative means time2 is earlier than time1. + */ + public long ComputeDateDifference(Date time1, Date time2) { + startMilliseconds = time1.getTime(); + endMilliseconds = time2.getTime(); + differenceMilliseconds = endMilliseconds - startMilliseconds; + //PrintTime(differenceMilliseconds); + return differenceMilliseconds; + } + + + /** + * Calculates hours, minutes, seconds, and milliseconds based upon total milliseconds. + * Prints to stdout. + * @param timeInMilliseconds Long that represents milliseconds passed. + */ + public void PrintTime(long timeInMilliseconds) { + long miliseconds; + long seconds; + long minutes; + long hours; + + miliseconds = timeInMilliseconds % 1000; + seconds = timeInMilliseconds / 1000; + minutes = seconds / 60; + seconds = seconds % 60; + hours = minutes / 60; + minutes = minutes % 60; + + System.out.println(//"H:M:S:m " + + hours + ":" + minutes + ":" + seconds + ":" + miliseconds); + } + + //endregion Methods +} diff --git a/a1/tests/ComputeTimeTests.java b/a1/tests/ComputeTimeTests.java new file mode 100644 index 0000000000000000000000000000000000000000..fc21ebe4010b5014480632a1d85fcdb6437ad1ce --- /dev/null +++ b/a1/tests/ComputeTimeTests.java @@ -0,0 +1,131 @@ + +import java.util.Calendar; +import java.util.Date; +import org.junit.Before; +import org.junit.Assert; +import org.junit.Test; + +import edu.wmich.cs3310.a1.ComputeTime; + + +/** + * Tests for ComputeTime class. + */ +public class ComputeTimeTests { + + //region Variables + + long result; + Date date1; + Date date2; + ComputeTime computeTime; + Calendar calendar; + + //endregion Variables + + + + //region Tests + + @Before + public void SetUp() { + computeTime = new ComputeTime(); + date1 = new Date(); + calendar = Calendar.getInstance(); + } + + + @Test + public void TestEqualDate() { + date2 = date1; + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(0, result); + } + + @Test + public void TestMillisecondDifference() { + // Date1 earlier than date2. + calendar.setTime(date1); + calendar.add(Calendar.MILLISECOND, 1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals((1), result); + + // Date1 later than date2. + calendar.setTime(date1); + calendar.add(Calendar.MILLISECOND, -1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(-1, result); + } + + @Test + public void TestSecondDifference() { + // Date1 earlier than date2. + calendar.setTime(date1); + calendar.add(Calendar.SECOND, 1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(1000, result); + + // Date1 later than date2. + calendar.setTime(date1); + calendar.add(Calendar.SECOND, -1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(-1000, result); + } + + @Test + public void TestMinuteDifference() { + // Date1 earlier than date2. + calendar.setTime(date1); + calendar.add(Calendar.MINUTE, 1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals((60 * 1000), result); + + // Date1 later than date2. + calendar.setTime(date1); + calendar.add(Calendar.MINUTE, -1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(-(60 * 1000), result); + } + + @Test + public void TestHourDifference() { + // Date1 earlier than date2. + calendar.setTime(date1); + calendar.add(Calendar.HOUR, 1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals((60 * 60 * 1000), result); + + // Date1 later than date2. + calendar.setTime(date1); + calendar.add(Calendar.HOUR, -1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(-(60 * 60 * 1000), result); + } + + @Test + public void TestDayDifference() { + // Date1 earlier than date2. + calendar.setTime(date1); + calendar.add(Calendar.DAY_OF_MONTH, 1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals((24 * 60 * 60 * 1000), result); + + // Date1 later than date2. + calendar.setTime(date1); + calendar.add(Calendar.DAY_OF_MONTH, -1); + date2 = calendar.getTime(); + result = computeTime.ComputeDateDifference(date1, date2); + Assert.assertEquals(-(24 * 60 * 60 * 1000), result); + } + + //endregion Tests +}