// Path: hamcrest/hamcrest-matchers/src/test/java/it/ozimov/cirneco/hamcrest/BaseMatcherTest.java
// @RunWith(MockitoJUnitRunner.class)
// public abstract class BaseMatcherTest {
// 
//     @Rule
//     public ExpectedException thrown = ExpectedException.none();
// 
//     public static <T> void assertMatches(final String message, final boolean matches) {
//         assertTrue(message, matches);
//     }
// 
//     public static <T> void assertMatches(final boolean matches) {
//         assertMatches("Expected to match, but mismatched", matches);
//     }
// 
//     public static <T> void assertDoesNotMatch(final String message, final boolean matches) {
//         assertFalse(message, matches);
//     }
// 
//     public static <T> void assertDoesNotMatch(final boolean matches) {
//         assertDoesNotMatch("Unexpected matching", matches);
//     }
// 
//     public static void assertIsDescribedTo(final String expectedDescription, final Matcher<?> matcher) {
// 
//         // Act
//         final String actualDescription = descriptionFromMatcher(matcher);
// 
//         // Assert
//         assertThat("Expected description does not match the one returned by the Matcher " + getSimpleName(matcher),
//                 expectedDescription, equalTo(actualDescription));
//     }
// 
//     public static <T> void assertHasMismatchDescription(final String expectedDescription,
//                                                         final Matcher<? super T> matcher, final T matcherArgument) {
// 
//         // Assert
//         assertThat(format("The given matcher has no mismatch with value \"%s\"", matcherArgument),
//                 matcher.matches(matcherArgument), is(false));
// 
//         // Act
//         final String actualMismatchDescription = mismatchDescriptionForMatcherFromArgument(matcher, matcherArgument);
// 
//         // Assert
//         assertThat("Expected mismatch description does not match the one returned by the Matcher "
//                 + getSimpleName(matcher), expectedDescription, equalTo(actualMismatchDescription));
//     }
// 
//     private static String descriptionFromMatcher(final Matcher<?> matcher) {
//         return new StringDescription().appendDescriptionOf(matcher).toString().trim();
//     }
// 
//     protected static <T> String mismatchDescriptionForMatcherFromArgument(final Matcher<? super T> matcher,
//                                                                           final T arg) {
//         final Description description = new StringDescription();
//         matcher.describeMismatch(arg, description);
// 
//         return description.toString().trim();
//     }
// 
//     private static String getSimpleName(final Matcher<?> matcher) {
//         return matcher.getClass().getSimpleName();
//     }
// 
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/date/utils/ClockPeriod.java
// public enum ClockPeriod {
//     AM, PM, TWENTYFOUR_HOURS;
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/date/utils/ClockPeriod.java
// public enum ClockPeriod {
//     AM, PM, TWENTYFOUR_HOURS;
// }


import it.ozimov.cirneco.hamcrest.BaseMatcherTest;
import it.ozimov.cirneco.hamcrest.date.utils.ClockPeriod;
import org.hamcrest.Matcher;
import org.junit.Before;
import org.junit.Test;
import java.text.ParseException;
import java.util.Date;
import static it.ozimov.cirneco.hamcrest.date.utils.ClockPeriod.*;
import static java.lang.String.format;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeThat;
        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

    private void testMatchesHourMinuteAndSecond(final Integer dateHour, final ClockPeriod clockPeriod,
                                                final Integer dateMinute, final Integer dateSecond, final Date date, final boolean expectedMatching) {

        // Arrange
        isWithTimeMatcher = IsDateWithTime.hasHourMinAndSec(dateHour, clockPeriod, dateMinute, dateSecond);

        // Act
        final boolean dateMatches = isWithTimeMatcher.matches(date);

        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

    private void testMatchesHourMinuteSecondAndMillisecond(final Integer dateHour, final Integer dateMinute,
                                                           final Integer dateSecond, final Integer dateMillisecond, final Date date, final boolean expectedMatching) {

        // Arrange
        isWithTimeMatcher = IsDateWithTime.hasHourMinSecAndMillis(dateHour, dateMinute, dateSecond, dateMillisecond);

        // Act
        final boolean dateMatches = isWithTimeMatcher.matches(date);

        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

// Path: hamcrest/hamcrest-matchers/src/test/java/it/ozimov/cirneco/hamcrest/BaseMatcherTest.java
// @RunWith(MockitoJUnitRunner.class)
// public abstract class BaseMatcherTest {
// 
//     @Rule
//     public ExpectedException thrown = ExpectedException.none();
// 
//     public static <T> void assertMatches(final String message, final boolean matches) {
//         assertTrue(message, matches);
//     }
// 
//     public static <T> void assertMatches(final boolean matches) {
//         assertMatches("Expected to match, but mismatched", matches);
//     }
// 
//     public static <T> void assertDoesNotMatch(final String message, final boolean matches) {
//         assertFalse(message, matches);
//     }
// 
//     public static <T> void assertDoesNotMatch(final boolean matches) {
//         assertDoesNotMatch("Unexpected matching", matches);
//     }
// 
//     public static void assertIsDescribedTo(final String expectedDescription, final Matcher<?> matcher) {
// 
//         // Act
//         final String actualDescription = descriptionFromMatcher(matcher);
// 
//         // Assert
//         assertThat("Expected description does not match the one returned by the Matcher " + getSimpleName(matcher),
//                 expectedDescription, equalTo(actualDescription));
//     }
// 
//     public static <T> void assertHasMismatchDescription(final String expectedDescription,
//                                                         final Matcher<? super T> matcher, final T matcherArgument) {
// 
//         // Assert
//         assertThat(format("The given matcher has no mismatch with value \"%s\"", matcherArgument),
//                 matcher.matches(matcherArgument), is(false));
// 
//         // Act
//         final String actualMismatchDescription = mismatchDescriptionForMatcherFromArgument(matcher, matcherArgument);
// 
//         // Assert
//         assertThat("Expected mismatch description does not match the one returned by the Matcher "
//                 + getSimpleName(matcher), expectedDescription, equalTo(actualMismatchDescription));
//     }
// 
//     private static String descriptionFromMatcher(final Matcher<?> matcher) {
//         return new StringDescription().appendDescriptionOf(matcher).toString().trim();
//     }
// 
//     protected static <T> String mismatchDescriptionForMatcherFromArgument(final Matcher<? super T> matcher,
//                                                                           final T arg) {
//         final Description description = new StringDescription();
//         matcher.describeMismatch(arg, description);
// 
//         return description.toString().trim();
//     }
// 
//     private static String getSimpleName(final Matcher<?> matcher) {
//         return matcher.getClass().getSimpleName();
//     }
// 
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/date/utils/ClockPeriod.java
// public enum ClockPeriod {
//     AM, PM, TWENTYFOUR_HOURS;
// }
// 
// Path: hamcrest/hamcrest-matchers/src/main/java/it/ozimov/cirneco/hamcrest/date/utils/ClockPeriod.java
// public enum ClockPeriod {
//     AM, PM, TWENTYFOUR_HOURS;
// }


// Path: hamcrest/hamcrest-matchers/src/test/java/it/ozimov/cirneco/hamcrest/date/IsDateWithTimeTest.java
import it.ozimov.cirneco.hamcrest.BaseMatcherTest;
import it.ozimov.cirneco.hamcrest.date.utils.ClockPeriod;
import org.hamcrest.Matcher;
import org.junit.Before;
import org.junit.Test;
import java.text.ParseException;
import java.util.Date;
import static it.ozimov.cirneco.hamcrest.date.utils.ClockPeriod.*;
import static java.lang.String.format;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.junit.Assert.fail;
import static org.junit.Assume.assumeThat;

        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

    private void testMatchesHourMinuteAndSecond(final Integer dateHour, final ClockPeriod clockPeriod,
                                                final Integer dateMinute, final Integer dateSecond, final Date date, final boolean expectedMatching) {

        // Arrange
        isWithTimeMatcher = IsDateWithTime.hasHourMinAndSec(dateHour, clockPeriod, dateMinute, dateSecond);

        // Act
        final boolean dateMatches = isWithTimeMatcher.matches(date);

        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

    private void testMatchesHourMinuteSecondAndMillisecond(final Integer dateHour, final Integer dateMinute,
                                                           final Integer dateSecond, final Integer dateMillisecond, final Date date, final boolean expectedMatching) {

        // Arrange
        isWithTimeMatcher = IsDateWithTime.hasHourMinSecAndMillis(dateHour, dateMinute, dateSecond, dateMillisecond);

        // Act
        final boolean dateMatches = isWithTimeMatcher.matches(date);

        // Assert
        assertThat(dateMatches, is(expectedMatching));
    }

    private void testMatchesHourMinuteSecondAndMillisecond(final Integer dateHour, final ClockPeriod clockPeriod,