From 64f5969ca4aa8c6d54ec7ceb3a8ce9208d71ea3d Mon Sep 17 00:00:00 2001 From: Pim Moerenhout Date: Wed, 14 Jan 2015 16:50:10 +0100 Subject: [PATCH 1/4] Implement the SMPP 3.4 Relative Time Format. --- .../org/jsmpp/util/RelativeTimeFormatter.java | 136 ++++++------ .../org/jsmpp/util/DateFormatterTest.java | 198 ++++++++---------- .../jsmpp/util/RelativeTimeFormatterTest.java | 181 ++++++++++++++++ 3 files changed, 342 insertions(+), 173 deletions(-) create mode 100644 jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java diff --git a/jsmpp/src/main/java/org/jsmpp/util/RelativeTimeFormatter.java b/jsmpp/src/main/java/org/jsmpp/util/RelativeTimeFormatter.java index c7e35e07..d5ca91fa 100644 --- a/jsmpp/src/main/java/org/jsmpp/util/RelativeTimeFormatter.java +++ b/jsmpp/src/main/java/org/jsmpp/util/RelativeTimeFormatter.java @@ -20,71 +20,87 @@ import java.util.TimeZone; /** - * Relative time formatter is {@link TimeFormatter} implementation referred to - * SMPP Protocol Specification v3.4 point 7.1.1. - * - * @author uudashr + * Relative time formatter is {@link TimeFormatter} implementation referred to SMPP Protocol Specification v3.4 point + * 7.1.1. * + * @author pmoerenhout */ public class RelativeTimeFormatter implements TimeFormatter { - private final TimeZone timezone; - - /** - * Time/Date ASCII format for Absolute Time Format is: - * - * YYMMDDhhmmsstnnp (refer for SMPP Protocol Specification v3.4) - */ - private static final String DATE_FORMAT = "{0,number,00}{1,number,00}{2,number,00}{3,number,00}{4,number,00}{5,number,00}000R"; - - /** - * Construct with default timezone. - */ - public RelativeTimeFormatter() { - this(TimeZone.getDefault()); - } - - /** - * Construct with specified SMSC timezone. - * - * @param timezone is the SMSC timezone. - */ - public RelativeTimeFormatter(TimeZone timezone) { - this.timezone = timezone; + + private static TimeZone utcTimeZone = TimeZone.getTimeZone("UTC"); + + /** + * Time/Date ASCII format for Relative Time Format is: + * + * YYMMDDhhmmss000R (refer for SMPP Protocol Specification v3.4) + */ + private static final String DATE_FORMAT = "{0,number,00}{1,number,00}{2,number,00}{3,number,00}{4,number,00}{5,number,00}000R"; + + /** + * Construct + */ + public RelativeTimeFormatter() { + } + + /** + * Return the relative time against current (SMSC) datetime. + * + * @param calendar the datetime. + * @return The relative time between the calendar date and the SMSC calendar date. + */ + public String format(Calendar calendar) { + // As the relative period is calculated on epoch (timeInMillis), no TimeZone information is needed + Calendar smscCalendar = Calendar.getInstance(); + return format(calendar, smscCalendar); + } + + /** + * Return the relative time from the calendar datetime against the SMSC datetime. + * + * @param calendar the date. + * @param smscCalendar the SMSC date. + * @return The relative time between the calendar date and the SMSC calendar date. + */ + public String format(Calendar calendar, Calendar smscCalendar) { + if (calendar == null || smscCalendar == null) { + return null; } - - public String format(Calendar calendar) { - if (calendar == null) { - return null; - } - - long relativeTime = calendar.getTimeInMillis() - - calendar.getTimeZone().getOffset(calendar.getTimeInMillis()) - + timezone.getOffset(calendar.getTimeInMillis()); - - Calendar cal = Calendar.getInstance(); - cal.setTimeInMillis(relativeTime); - int year = cal.get(Calendar.YEAR) - 2000; - int month = cal.get(Calendar.MONTH) + 1; - int day = cal.get(Calendar.DAY_OF_MONTH); - int hour = cal.get(Calendar.HOUR_OF_DAY); - int minute = cal.get(Calendar.MINUTE); - int second = cal.get(Calendar.SECOND); - - return format(year, month, day, hour, minute, second); + + long diffTimeInMillis = calendar.getTimeInMillis() - smscCalendar.getTimeInMillis(); + if (diffTimeInMillis < 0) { + throw new IllegalArgumentException("The requested relative time has already past."); } - - public String format(Date date) { - if (date == null) { - return null; - } - Calendar cal = Calendar.getInstance(); - cal.setTime(date); - return format(cal); + + // calculate period from epoch, this is not as accurate as Joda-Time Period class or Java 8 Period + Calendar offsetEpoch = Calendar.getInstance(utcTimeZone); + offsetEpoch.setTimeInMillis(diffTimeInMillis); + int years = offsetEpoch.get(Calendar.YEAR) - 1970; + int months = offsetEpoch.get(Calendar.MONTH); + int days = offsetEpoch.get(Calendar.DAY_OF_MONTH) - 1; + int hours = offsetEpoch.get(Calendar.HOUR); + int minutes = offsetEpoch.get(Calendar.MINUTE); + int seconds = offsetEpoch.get(Calendar.SECOND); + + if (years >= 100) { + throw new IllegalArgumentException("The requested relative time is more then a century (" + years + " years)."); } - - public static final String format(Integer year, Integer month, - Integer day, Integer hour, Integer minute, Integer second) { - Object[] args = new Object[] {year, month, day, hour, minute, second}; - return MessageFormat.format(DATE_FORMAT, args); + + return format(years, months, days, hours, minutes, seconds); + } + + public String format(Date date) { + if (date == null) { + return null; } + Calendar cal = Calendar.getInstance(); + cal.setTime(date); + return format(cal); + } + + public static final String format(Integer year, Integer month, + Integer day, Integer hour, Integer minute, Integer second) { + Object[] args = new Object[]{ year, month, day, hour, minute, second }; + return MessageFormat.format(DATE_FORMAT, args); + } + } diff --git a/jsmpp/src/test/java/org/jsmpp/util/DateFormatterTest.java b/jsmpp/src/test/java/org/jsmpp/util/DateFormatterTest.java index c6abb9c8..4234788c 100644 --- a/jsmpp/src/test/java/org/jsmpp/util/DateFormatterTest.java +++ b/jsmpp/src/test/java/org/jsmpp/util/DateFormatterTest.java @@ -14,130 +14,102 @@ */ package org.jsmpp.util; +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; + import java.util.Calendar; import java.util.Date; import java.util.GregorianCalendar; import java.util.Locale; import java.util.TimeZone; -import static org.testng.Assert.*; - import org.testng.annotations.Test; /** * @author uudashr - * */ public class DateFormatterTest { - - @Test(groups="checkintest") - public void testStaticAbsoluteFormatter() { - String formatted = AbsoluteTimeFormatter.format(07, 12, 26, 11, 37, 03, 8, 45, '+'); - assertEquals(formatted, "071226113703845+"); - } - - @Test(groups="checkintest") - public void testStaticRelativeFormatter() { - String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); - assertEquals(formatted, "071226124610000R"); - } - - @Test(groups="checkintest") - public void formatNullDate() { - TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); - assertNull(timeFormatter.format((Date)null)); - assertNull(timeFormatter.format((Calendar)null)); - - timeFormatter = new RelativeTimeFormatter(); - assertNull(timeFormatter.format((Date)null)); - assertNull(timeFormatter.format((Calendar)null)); - } - - @Test(groups="checkintest") - public void validateAbsoluteDate() throws Exception { - String formatted = AbsoluteTimeFormatter.format(07, 12, 26, 11, 37, 03, 8, 45, '+'); - StringValidator.validateString(formatted, StringParameter.SCHEDULE_DELIVERY_TIME); - StringValidator.validateString(formatted, StringParameter.VALIDITY_PERIOD); - StringValidator.validateString(formatted, StringParameter.FINAL_DATE); - } - - @Test(groups="checkintest") - public void validateRelativeDate() throws Exception { - String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); - StringValidator.validateString(formatted, StringParameter.SCHEDULE_DELIVERY_TIME); - StringValidator.validateString(formatted, StringParameter.VALIDITY_PERIOD); - StringValidator.validateString(formatted, StringParameter.FINAL_DATE); - } - - @Test(groups="checkintest") - public void formatAbsoluteDate() { - TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); - - GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin"), Locale.GERMANY); - date.set(Calendar.YEAR, 2013); - date.set(Calendar.MONTH, Calendar.JANUARY); - date.set(Calendar.DAY_OF_MONTH, 1); - date.set(Calendar.HOUR_OF_DAY, 1); - date.set(Calendar.MINUTE, 0); - date.set(Calendar.SECOND, 0); - date.set(Calendar.MILLISECOND, 0); - - assertEquals(timeFormatter.format(date), "130101010000004+"); - - date.set(Calendar.MONTH, Calendar.JULY); - - // because of daylight saving time, we have a different offset - assertEquals(timeFormatter.format(date), "130701010000008+"); - } - - @Test(groups="checkintest") - public void formatAbsoluteDateRussia() { - TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); - - GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Asia/Yekaterinburg"), new Locale("ru", "RU")); - date.set(Calendar.YEAR, 2013); - date.set(Calendar.MONTH, Calendar.JANUARY); - date.set(Calendar.DAY_OF_MONTH, 1); - date.set(Calendar.HOUR_OF_DAY, 1); - date.set(Calendar.MINUTE, 0); - date.set(Calendar.SECOND, 0); - date.set(Calendar.MILLISECOND, 0); - - assertEquals(timeFormatter.format(date), "130101010000024+"); - - date.set(Calendar.MONTH, Calendar.JULY); - - // we have the same offset because of the absent of daylight saving time - assertEquals(timeFormatter.format(date), "130701010000024+"); - } - - @Test(groups="checkintest",enabled=false) // FIXME - enable again after fixing issues below - public void formatRelativeDate() { - RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(TimeZone.getTimeZone("America/Denver")); - - // at this date neither Denver nor Germany has daylight saving time - GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin"), Locale.GERMANY); - date.set(Calendar.YEAR, 2013); - date.set(Calendar.MONTH, Calendar.JANUARY); - date.set(Calendar.DAY_OF_MONTH, 1); - date.set(Calendar.HOUR_OF_DAY, 1); - date.set(Calendar.MINUTE, 0); - date.set(Calendar.SECOND, 0); - date.set(Calendar.MILLISECOND, 0); - - assertEquals(timeFormatter.format(date), "130101050000000R"); // FIXME - should be a relative time but looks like an absolute value - - // at this date Denver has already daylight saving time but not Germany - date.set(Calendar.MONTH, Calendar.MARCH); - date.set(Calendar.DAY_OF_MONTH, 20); - - assertEquals(timeFormatter.format(date), "130320060000000R"); // FIXME - should be a relative time but looks like an absolute value - - // at this date Denver and Germany has daylight saving time - date.set(Calendar.MONTH, Calendar.APRIL); - date.set(Calendar.DAY_OF_MONTH, 1); - - assertEquals(timeFormatter.format(date), "130401050000000R"); // FIXME - should be a relative time but looks like an absolute value - } + + @Test(groups = "checkintest") + public void testStaticAbsoluteFormatter() { + String formatted = AbsoluteTimeFormatter.format(07, 12, 26, 11, 37, 03, 8, 45, '+'); + assertEquals(formatted, "071226113703845+"); + } + + @Test(groups = "checkintest") + public void testStaticRelativeFormatter() { + String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); + assertEquals(formatted, "071226124610000R"); + } + + @Test(groups = "checkintest") + public void formatNullDate() { + TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); + assertNull(timeFormatter.format((Date) null)); + assertNull(timeFormatter.format((Calendar) null)); + + timeFormatter = new RelativeTimeFormatter(); + assertNull(timeFormatter.format((Date) null)); + assertNull(timeFormatter.format((Calendar) null)); + } + + @Test(groups = "checkintest") + public void validateAbsoluteDate() throws Exception { + String formatted = AbsoluteTimeFormatter.format(07, 12, 26, 11, 37, 03, 8, 45, '+'); + StringValidator.validateString(formatted, StringParameter.SCHEDULE_DELIVERY_TIME); + StringValidator.validateString(formatted, StringParameter.VALIDITY_PERIOD); + StringValidator.validateString(formatted, StringParameter.FINAL_DATE); + } + + @Test(groups = "checkintest") + public void validateRelativeDate() throws Exception { + String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); + StringValidator.validateString(formatted, StringParameter.SCHEDULE_DELIVERY_TIME); + StringValidator.validateString(formatted, StringParameter.VALIDITY_PERIOD); + StringValidator.validateString(formatted, StringParameter.FINAL_DATE); + } + + @Test(groups = "checkintest") + public void formatAbsoluteDate() { + TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin"), Locale.GERMANY); + date.set(Calendar.YEAR, 2013); + date.set(Calendar.MONTH, Calendar.JANUARY); + date.set(Calendar.DAY_OF_MONTH, 1); + date.set(Calendar.HOUR_OF_DAY, 1); + date.set(Calendar.MINUTE, 0); + date.set(Calendar.SECOND, 0); + date.set(Calendar.MILLISECOND, 0); + + assertEquals(timeFormatter.format(date), "130101010000004+"); + + date.set(Calendar.MONTH, Calendar.JULY); + + // because of daylight saving time, we have a different offset + assertEquals(timeFormatter.format(date), "130701010000008+"); + } + + @Test(groups = "checkintest") + public void formatAbsoluteDateRussia() { + TimeFormatter timeFormatter = new AbsoluteTimeFormatter(); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Asia/Yekaterinburg"), new Locale("ru", "RU")); + date.set(Calendar.YEAR, 2013); + date.set(Calendar.MONTH, Calendar.JANUARY); + date.set(Calendar.DAY_OF_MONTH, 1); + date.set(Calendar.HOUR_OF_DAY, 1); + date.set(Calendar.MINUTE, 0); + date.set(Calendar.SECOND, 0); + date.set(Calendar.MILLISECOND, 0); + + assertEquals(timeFormatter.format(date), "130101010000024+"); + + date.set(Calendar.MONTH, Calendar.JULY); + + // we have the same offset because of the absent of daylight saving time + assertEquals(timeFormatter.format(date), "130701010000024+"); + } + } diff --git a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java new file mode 100644 index 00000000..53a076dc --- /dev/null +++ b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java @@ -0,0 +1,181 @@ +/* + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + */ +package org.jsmpp.util; + +import static org.testng.Assert.assertEquals; +import static org.testng.Assert.assertNull; +import static org.testng.Assert.fail; + +import java.util.Calendar; +import java.util.Date; +import java.util.GregorianCalendar; +import java.util.TimeZone; + +import org.testng.annotations.Test; + +/** + * @author pmoerenhout + */ +public class RelativeTimeFormatterTest { + + @Test(groups = "checkintest") + public void testStaticRelativeFormatter() { + String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); + assertEquals(formatted, "071226124610000R"); + } + + @Test(groups = "checkintest") + public void formatNullDate() { + TimeFormatter timeFormatter = new RelativeTimeFormatter(); + assertNull(timeFormatter.format((Date) null)); + assertNull(timeFormatter.format((Calendar) null)); + } + + @Test(groups = "checkintest") + public void validateRelativeDate() throws Exception { + String formatted = RelativeTimeFormatter.format(07, 12, 26, 12, 46, 10); + StringValidator.validateString(formatted, StringParameter.SCHEDULE_DELIVERY_TIME); + StringValidator.validateString(formatted, StringParameter.VALIDITY_PERIOD); + StringValidator.validateString(formatted, StringParameter.FINAL_DATE); + } + + @Test(groups = "checkintest", expectedExceptions = IllegalArgumentException.class) + public void formatRelativeDateWhenAlreadyPast() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + + // date in the past + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); + date.set(Calendar.YEAR, 1998); + date.set(Calendar.MONTH, Calendar.MARCH); + date.set(Calendar.DAY_OF_MONTH, 1); + date.set(Calendar.HOUR, 13); + date.set(Calendar.MINUTE, 46); + date.set(Calendar.SECOND, 59); + + timeFormatter.format(date); + fail("Expected IllegalArgumentException not thrown"); + } + + @Test(groups = "checkintest", expectedExceptions = IllegalArgumentException.class) + public void formatRelativeDateIgnoreMilliSeconds() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + + // Set the SMSC date + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); + smscDate.set(Calendar.YEAR, 1998); + smscDate.set(Calendar.MONTH, Calendar.JANUARY); + smscDate.set(Calendar.DAY_OF_MONTH, 1); + smscDate.set(Calendar.HOUR, 13); + smscDate.set(Calendar.MINUTE, 46); + smscDate.set(Calendar.SECOND, 59); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + // Tenth of seconds should be ignored + smscDate.set(Calendar.MILLISECOND, 800); + + assertEquals(timeFormatter.format(date, smscDate), "000000000000000R"); + } + + @Test(groups = "checkintest", expectedExceptions = IllegalArgumentException.class) + public void formatRelativeDateWhenExceedsCentury() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + + // relative date more then 100 years ahead + Calendar date = Calendar.getInstance(TimeZone.getTimeZone("America/Denver")); + date.add(Calendar.YEAR, 101); + + String relativeTime = timeFormatter.format(date); + fail("Expected IllegalArgumentException not thrown"); + } + + @Test(groups = "checkintest") + public void formatRelativeDateSame() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + assertEquals(timeFormatter.format(date, date), "000000000000000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeDateDifferentTimeZone() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + smscDate.set(2014, Calendar.JANUARY, 2, 23, 15, 16); + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Los_Angeles")); + date.set(2014, Calendar.JANUARY, 2, 23, 15, 16); + assertEquals(timeFormatter.format(date, smscDate), "000000010000000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeDateMonth() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + Calendar smscDate = Calendar.getInstance(TimeZone.getTimeZone("America/Denver")); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + date.add(Calendar.MONTH, 1); + assertEquals(timeFormatter.format(date, smscDate), "000100000000000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeDateWeek() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + date.add(Calendar.DAY_OF_MONTH, 7); + assertEquals(timeFormatter.format(date, smscDate), "000007000000000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeTimeSecond() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + date.add(Calendar.SECOND, 1); + assertEquals(timeFormatter.format(date, smscDate), "000000000001000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeTimeMonth() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + smscDate.set(2001, Calendar.JANUARY, 31, 14, 15, 16); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + date.add(Calendar.MONTH, 1); + // when using Joda-Time or Java 8 Period class + //assertEquals(timeFormatter.format(date), "000100000000000R"); + assertEquals(timeFormatter.format(date, smscDate), "000028000000000R"); + } + + @Test(groups = "checkintest") + public void formatRelativeDateNewYear() { + RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); + GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("America/Denver")); + smscDate.set(2001, Calendar.DECEMBER, 31, 23, 59, 59); + + GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); + date.setTimeInMillis(smscDate.getTimeInMillis()); + date.add(Calendar.SECOND, 2); + assertEquals(timeFormatter.format(date, smscDate), "000000000002000R"); + } + +} From 1f31b15712825e3b6b9277634066e4458d6489b5 Mon Sep 17 00:00:00 2001 From: Pim Moerenhout Date: Wed, 14 Jan 2015 16:57:34 +0100 Subject: [PATCH 2/4] Removed incorrect expected Exception in test case. --- .../src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java index 53a076dc..03a03115 100644 --- a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java +++ b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java @@ -68,7 +68,7 @@ public void formatRelativeDateWhenAlreadyPast() { fail("Expected IllegalArgumentException not thrown"); } - @Test(groups = "checkintest", expectedExceptions = IllegalArgumentException.class) + @Test(groups = "checkintest") public void formatRelativeDateIgnoreMilliSeconds() { RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); From daf92abcc0bee348d838ea6ddc3f10779f92d698 Mon Sep 17 00:00:00 2001 From: Pim Moerenhout Date: Wed, 14 Jan 2015 17:01:52 +0100 Subject: [PATCH 3/4] Set date to future date to fix testcase. --- .../test/java/org/jsmpp/util/RelativeTimeFormatterTest.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java index 03a03115..86dbd0e2 100644 --- a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java +++ b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java @@ -72,9 +72,9 @@ public void formatRelativeDateWhenAlreadyPast() { public void formatRelativeDateIgnoreMilliSeconds() { RelativeTimeFormatter timeFormatter = new RelativeTimeFormatter(); - // Set the SMSC date + // Set the SMSC date to some future datetime GregorianCalendar smscDate = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); - smscDate.set(Calendar.YEAR, 1998); + smscDate.set(Calendar.YEAR, 2080); smscDate.set(Calendar.MONTH, Calendar.JANUARY); smscDate.set(Calendar.DAY_OF_MONTH, 1); smscDate.set(Calendar.HOUR, 13); From b7b47bd3b04c1f657e7db0ea83595dd09ced1b2c Mon Sep 17 00:00:00 2001 From: Pim Moerenhout Date: Wed, 14 Jan 2015 17:08:36 +0100 Subject: [PATCH 4/4] Fixed a type. --- .../src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java index 86dbd0e2..badb4ef8 100644 --- a/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java +++ b/jsmpp/src/test/java/org/jsmpp/util/RelativeTimeFormatterTest.java @@ -84,7 +84,7 @@ public void formatRelativeDateIgnoreMilliSeconds() { GregorianCalendar date = new GregorianCalendar(TimeZone.getTimeZone("Europe/Berlin")); date.setTimeInMillis(smscDate.getTimeInMillis()); // Tenth of seconds should be ignored - smscDate.set(Calendar.MILLISECOND, 800); + date.set(Calendar.MILLISECOND, 800); assertEquals(timeFormatter.format(date, smscDate), "000000000000000R"); }