package com.limegroup.gnutella;
import org.limewire.core.settings.ApplicationSettings;
import junit.framework.Test;
public class StatisticsTest extends org.limewire.gnutella.tests.LimeTestCase {
private ClockStub clock;
private Statistics stats;
public StatisticsTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(StatisticsTest.class);
}
@Override
public void setUp() {
ApplicationSettings.UPTIME_HISTORY.revertToDefault();
ApplicationSettings.DOWNTIME_HISTORY.revertToDefault();
clock = new ClockStub();
stats = new Statistics(clock);
}
public void testClock() {
clock.addNow(12);
assertEquals(12, stats.getUptime());
}
public void testUptimeInitializedToZero() {
assertEquals(0, stats.calculateDailyUptime());
assertEquals(0f, stats.calculateFractionalUptime());
}
public void testZeroUptime() {
ApplicationSettings.UPTIME_HISTORY.set(new String[] { "0", "0" });
ApplicationSettings.DOWNTIME_HISTORY.set(new String[] { "123", "123" });
assertEquals(0, stats.calculateDailyUptime());
assertEquals(0f, stats.calculateFractionalUptime());
}
public void testZeroDowntime() {
ApplicationSettings.UPTIME_HISTORY.set(new String[] { "123", "123" });
ApplicationSettings.DOWNTIME_HISTORY.set(new String[] { "0", "0" });
assertEquals(Statistics.SECONDS_PER_DAY, stats.calculateDailyUptime());
assertEquals(1f, stats.calculateFractionalUptime());
}
public void testZeroUptimeAndDowntime() {
ApplicationSettings.UPTIME_HISTORY.set(new String[] { "0", "0" });
ApplicationSettings.DOWNTIME_HISTORY.set(new String[] { "0", "0" });
assertEquals(0, stats.calculateDailyUptime());
assertEquals(0f, stats.calculateFractionalUptime());
}
public void testNonZeroUptimeAndDowntime() {
ApplicationSettings.UPTIME_HISTORY.set(new String[] { "123", "0" });
ApplicationSettings.DOWNTIME_HISTORY.set(new String[] { "123", "123" });
// TODO: seconds per day may not be divisible by 3 on all planets
assertEquals(Statistics.SECONDS_PER_DAY / 3, stats.calculateDailyUptime());
assertEquals(1/3f, stats.calculateFractionalUptime());
}
}