package org.test4j.hamcrest.iassert.object.impl; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.test4j.hamcrest.iassert.common.impl.ComparableAssert; import org.test4j.hamcrest.iassert.object.intf.IDateAssert; import org.test4j.hamcrest.matcher.LinkMatcher; import org.test4j.hamcrest.matcher.calendar.DateFormatMatcher; import org.test4j.hamcrest.matcher.calendar.DateParterMatcher; import org.test4j.hamcrest.matcher.calendar.DateParterMatcher.DateFieldType; import org.test4j.tools.commons.DateHelper; public class DateAssert<T> extends ComparableAssert<T, IDateAssert<T>> implements IDateAssert<T> { public DateAssert(Class<T> clazz) { super(DateAssert.class); this.value = null; this.type = AssertType.MatcherStyle; this.link = new LinkMatcher<T>(); this.assertClaz = IDateAssert.class; this.valueClaz = clazz; } public DateAssert(T value, Class<T> clazz) { super(value, DateAssert.class); this.type = AssertType.AssertStyle; this.value = value; this.assertClaz = IDateAssert.class; this.valueClaz = clazz; } public IDateAssert<T> isYear(int year) { return this.assertThat(year, DateFieldType.YEAR); } public IDateAssert<T> isYear(String year) { return this.assertThat(year, DateFieldType.YEAR); } public IDateAssert<T> isDay(int day) { return this.assertThat(day, DateFieldType.DATE); } public IDateAssert<T> isDay(String day) { return this.assertThat(day, DateFieldType.DATE); } public IDateAssert<T> isHour(int hour) { return this.assertThat(hour, DateFieldType.HOUR); } public IDateAssert<T> isHour(String hour) { return this.assertThat(hour, DateFieldType.HOUR); } public IDateAssert<T> isMinute(int minute) { return this.assertThat(minute, DateFieldType.MINUTE); } public IDateAssert<T> isMinute(String minute) { return this.assertThat(minute, DateFieldType.MINUTE); } public IDateAssert<T> isMonth(int month) { return this.assertThat(month, DateFieldType.MONTH); } public IDateAssert<T> isMonth(String month) { return this.assertThat(month, DateFieldType.MONTH); } public IDateAssert<T> isSecond(int second) { return this.assertThat(second, DateFieldType.SECOND); } public IDateAssert<T> isSecond(String second) { return this.assertThat(second, DateFieldType.SECOND); } private IDateAssert<T> assertThat(int value, DateFieldType type) { DateParterMatcher matcher = new DateParterMatcher(value, type); return this.assertThat(matcher); } private IDateAssert<T> assertThat(String value, DateFieldType type) { DateParterMatcher matcher = new DateParterMatcher(Integer.valueOf(value), type); return this.assertThat(matcher); } public IDateAssert<T> eqByFormat(String expected, String format) { DateFormatMatcher matcher = new DateFormatMatcher(format, expected); return this.assertThat(matcher); } public IDateAssert<T> eqByFormat(String expected) { SimpleDateFormat df = DateHelper.getDateFormat(expected); DateFormatMatcher matcher = new DateFormatMatcher(df, expected); return this.assertThat(matcher); } public IDateAssert<T> isEqualTo(long time) { Date date = new Date(time); return this.isEqualTo(date); } public IDateAssert<T> isEqualTo(Calendar calendar) { Date date = calendar.getTime(); return this.isEqualTo(date); } }