package org.projectusus.ui.internal.proportions.cockpit;
import static org.hamcrest.Matchers.endsWith;
import static org.hamcrest.Matchers.equalTo;
import static org.hamcrest.Matchers.not;
import static org.hamcrest.Matchers.startsWith;
import static org.junit.Assert.assertThat;
import java.util.Date;
import org.junit.Test;
import org.projectusus.ui.internal.Snapshot;
public class SnapshotInfoBuilderTest {
private static final int MINUTES = 60;
private static final int HOURS = MINUTES * 60;
private static final int DAYS = HOURS * 24;
private final SnapshotInfoBuilder builder = new SnapshotInfoBuilder();
private final Date now = new Date();
@Test
public void buildInfo() {
String info = builder.buildInfo( new Snapshot() );
assertThat( info, startsWith( "Snapshot taken at " ) ); //$NON-NLS-1$
assertThat( info, endsWith( " (just now)" ) ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_InTheFuture() {
assertThat( builder.buildAgoMessage( secondsAgo( -1 ), now ), equalTo( "in the future" ) ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_JustNow() {
assertThat( builder.buildAgoMessage( now ), equalTo( "just now" ) ); //$NON-NLS-1$
assertThat( builder.buildAgoMessage( now, now ), equalTo( "just now" ) ); //$NON-NLS-1$
assertThat( builder.buildAgoMessage( secondsAgo( 9 ), now ), equalTo( "just now" ) ); //$NON-NLS-1$
assertThat( builder.buildAgoMessage( secondsAgo( 10 ), now ), not( equalTo( "just now" ) ) ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_LessThanAMinuteAgo() {
assertThat( builder.buildAgoMessage( 10 ), equalTo( "less than a minute ago" ) ); //$NON-NLS-1$
assertThat( builder.buildAgoMessage( 59 ), equalTo( "less than a minute ago" ) ); //$NON-NLS-1$
assertThat( builder.buildAgoMessage( 60 ), not( equalTo( "less than a minute ago" ) ) ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_Minutes() {
checkMessage( 1, MINUTES, "about a minute ago" ); //$NON-NLS-1$
checkMessage( 2, MINUTES, "about 2 minutes ago" ); //$NON-NLS-1$
checkMessage( 59, MINUTES, "about 59 minutes ago" ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_Hours() {
checkMessage( 1, HOURS, "about an hour ago" ); //$NON-NLS-1$
checkMessage( 2, HOURS, "about 2 hours ago" ); //$NON-NLS-1$
checkMessage( 23, HOURS, "about 23 hours ago" ); //$NON-NLS-1$
}
@Test
public void buildAgoMessage_Days() {
checkMessage( 1, DAYS, "about a day ago" ); //$NON-NLS-1$
checkMessage( 2, DAYS, "about 2 days ago" ); //$NON-NLS-1$
}
public void checkMessage( int amount, int unit, String message ) {
assertThat( builder.buildAgoMessage( amount * unit ), equalTo( message ) );
assertThat( builder.buildAgoMessage( (amount + 1) * unit - 1 ), equalTo( message ) );
assertThat( builder.buildAgoMessage( (amount + 1) * unit ), not( equalTo( message ) ) );
}
private Date secondsAgo( int amount ) {
return millisAgo( amount * 1000 );
}
private Date millisAgo( int amount ) {
return new Date( now.getTime() - amount );
}
}