package org.springframework.roo.metadata.internal; import static org.junit.Assert.assertEquals; import static org.springframework.roo.metadata.internal.StandardMetadataTimingStatistic.NANOSECONDS_IN_MILLISECOND; import org.junit.Test; /** * Unit test of {@link StandardMetadataTimingStatistic} * * @author Andrew Swan * @since 1.2.0 */ public class StandardMetadataTimingStatisticTest { private static final long INVOCATIONS = 5; private static final String NAME = "MyProcess"; /** * Asserts that calling {@link StandardMetadataTimingStatistic#toString()} * on an instance with the given duration results in the expected output * * @param nanoseconds * @param expectedToString */ private void assertToString(final long nanoseconds, final String expectedToString) { assertEquals(expectedToString, getTestInstance(nanoseconds).toString()); } /** * Creates an instance with fixed test values and the given duration * * @param nanoseconds * @return a non-<code>null</code> instance */ private StandardMetadataTimingStatistic getTestInstance(final long nanoseconds) { return new StandardMetadataTimingStatistic(NAME, nanoseconds, INVOCATIONS); } @Test public void testToStringForLessThanOneMillisecond() { assertToString(NANOSECONDS_IN_MILLISECOND - 1, "999999 ns; 5 call(s): MyProcess"); } @Test public void testToStringForOneMillisecond() { assertToString(NANOSECONDS_IN_MILLISECOND, " 1 ms; 5 call(s): MyProcess"); } @Test public void testToStringForTwoMilliseconds() { assertToString(NANOSECONDS_IN_MILLISECOND * 2, " 2 ms; 5 call(s): MyProcess"); } }