package com.fernandocejas.frodo.internal;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.runners.MockitoJUnitRunner;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(MockitoJUnitRunner.class)
public class CounterTest {
private static final String COUNTER_NAME = "android10";
private Counter counter;
@Before
public void setUp() {
counter = new Counter(COUNTER_NAME);
}
@Test
public void incrementsCounter() {
counter.increment();
counter.increment();
counter.increment();
assertThat(counter.tally()).isEqualTo(3);
}
@Test
public void clearsCounter() {
counter.increment();
counter.increment();
assertThat(counter.tally()).isEqualTo(2);
counter.clear();
assertThat(counter.tally()).isZero();
}
@Test
public void decrementsCounter() {
counter.increment();
counter.increment();
counter.increment();
counter.decrement();
counter.decrement();
assertThat(counter.tally()).isEqualTo(1);
}
@Test
public void comparesCounterValues() {
final Counter anotherCounter = new Counter("myCounter");
counter.increment();
counter.increment();
assertThat(counter.compareTo(anotherCounter)).isEqualTo(1);
anotherCounter.increment();
anotherCounter.increment();
assertThat(counter.compareTo(anotherCounter)).isZero();
counter.decrement();
assertThat(counter.compareTo(anotherCounter)).isEqualTo(-1);
}
@Test
public void countsNegatives() {
counter.decrement();
counter.decrement();
assertThat(counter.tally()).isEqualTo(-2);
}
}