/*
* Copyright (c) 2015-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.common.time;
import java.util.concurrent.TimeUnit;
import com.facebook.testing.robolectric.v2.WithTestDefaultsRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.fest.assertions.api.Assertions.assertThat;
@RunWith(WithTestDefaultsRunner.class)
public class TimeSpanTest {
@Test
public void testFromNanos() throws Exception {
final long duration = 36;
TimeSpan underTest = TimeSpan.fromNanos(duration);
assertThat(underTest.as(TimeUnit.NANOSECONDS)).isEqualTo(duration);
assertThat(underTest.toNanos()).isEqualTo(duration);
}
@Test
public void testFromMicros() throws Exception {
final long duration = 37;
TimeSpan underTest = TimeSpan.fromMicros(duration);
assertThat(underTest.as(TimeUnit.MICROSECONDS)).isEqualTo(duration);
assertThat(underTest.toMicros()).isEqualTo(duration);
}
@Test
public void testFromMillis() throws Exception {
final long duration = 38;
TimeSpan underTest = TimeSpan.fromMillis(duration);
assertThat(underTest.as(TimeUnit.MILLISECONDS)).isEqualTo(duration);
assertThat(underTest.toMillis()).isEqualTo(duration);
}
@Test
public void testFromSeconds() throws Exception {
final long duration = 39;
TimeSpan underTest = TimeSpan.fromSeconds(duration);
assertThat(underTest.as(TimeUnit.SECONDS)).isEqualTo(duration);
assertThat(underTest.toSeconds()).isEqualTo(duration);
}
@Test
public void testFromMinutes() throws Exception {
final long duration = 40;
TimeSpan underTest = TimeSpan.fromMinutes(duration);
assertThat(underTest.as(TimeUnit.MINUTES)).isEqualTo(duration);
assertThat(underTest.toMinutes()).isEqualTo(duration);
}
@Test
public void testFromHours() throws Exception {
final long duration = 41;
TimeSpan underTest = TimeSpan.fromHours(duration);
assertThat(underTest.as(TimeUnit.HOURS)).isEqualTo(duration);
assertThat(underTest.toHours()).isEqualTo(duration);
}
@Test
public void testFromDays() throws Exception {
final long duration = 42;
TimeSpan underTest = TimeSpan.fromDays(duration);
assertThat(underTest.as(TimeUnit.DAYS)).isEqualTo(duration);
assertThat(underTest.toDays()).isEqualTo(duration);
}
@Test
public void testCtor() throws Exception {
final long duration = 555;
TimeSpan underTest = new TimeSpan(duration, TimeUnit.HOURS);
assertThat(underTest.as(TimeUnit.HOURS)).isEqualTo(duration);
}
@Test
public void testConversion() throws Exception {
assertThat(TimeSpan.fromMillis(1000).as(TimeUnit.SECONDS)).isEqualTo(1);
}
@Test
public void testEquality() throws Exception {
assertThat(TimeSpan.fromMillis(1000)).isEqualTo(TimeSpan.fromSeconds(1));
}
@Test
public void testToString() throws Exception {
assertThat(TimeSpan.fromNanos(1).toString()).isEqualTo("TimeSpan{1 Nano}");
assertThat(TimeSpan.fromNanos(2).toString()).isEqualTo("TimeSpan{2 Nanos}");
assertThat(TimeSpan.fromMicros(1).toString()).isEqualTo("TimeSpan{1 Micro}");
assertThat(TimeSpan.fromMicros(2).toString()).isEqualTo("TimeSpan{2 Micros}");
assertThat(TimeSpan.fromMillis(1).toString()).isEqualTo("TimeSpan{1 Milli}");
assertThat(TimeSpan.fromMillis(2).toString()).isEqualTo("TimeSpan{2 Millis}");
assertThat(TimeSpan.fromSeconds(1).toString()).isEqualTo("TimeSpan{1 Second}");
assertThat(TimeSpan.fromSeconds(2).toString()).isEqualTo("TimeSpan{2 Seconds}");
assertThat(TimeSpan.fromMinutes(1).toString()).isEqualTo("TimeSpan{1 Minute}");
assertThat(TimeSpan.fromMinutes(2).toString()).isEqualTo("TimeSpan{2 Minutes}");
assertThat(TimeSpan.fromHours(1).toString()).isEqualTo("TimeSpan{1 Hour}");
assertThat(TimeSpan.fromHours(2).toString()).isEqualTo("TimeSpan{2 Hours}");
assertThat(TimeSpan.fromDays(1).toString()).isEqualTo("TimeSpan{1 Day}");
assertThat(TimeSpan.fromDays(2).toString()).isEqualTo("TimeSpan{2 Days}");
assertThat(TimeSpan.fromMinutes(90).toString()).isEqualTo("TimeSpan{1 Hour, 30 Minutes}");
}
}