/* * Strongback * Copyright 2015, Strongback and individual contributors by the @authors tag. * See the COPYRIGHT.txt in the distribution for a full listing of individual * contributors. * * Licensed under the MIT License; you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://opensource.org/licenses/MIT * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.strongback.component; import static org.fest.assertions.Assertions.assertThat; import org.junit.Test; import org.strongback.components.Counter; /** * @author Randall Hauch * */ public class CounterTest { @Test(expected = IllegalArgumentException.class) public void shouldNotAllowMaximumThatEqualsInitial() { Counter.circular(100, 100, 100); } @Test public void shouldCirculateAfterReachingMaximum() { Counter counter = Counter.circular(0, 100, 200); assertThat(counter.get()).isEqualTo(0); counter.increment(); assertThat(counter.get()).isEqualTo(100); counter.increment(); assertThat(counter.get()).isEqualTo(200); counter.increment(); assertThat(counter.get()).isEqualTo(0); } @Test(expected = IllegalArgumentException.class) public void shouldNotAllowNegativeIncrement() { Counter.circular(100, -100, 100); } @Test(expected = IllegalArgumentException.class) public void shouldNotAllowNegativeInitialValue() { Counter.circular(0,-1,100); } @Test public void shouldCirculateAfterReachingMaximumWithDefaultIncrement() { Counter counter = Counter.circular(2); assertThat(counter.get()).isEqualTo(0); counter.increment(); assertThat(counter.get()).isEqualTo(1); counter.increment(); assertThat(counter.get()).isEqualTo(2); counter.increment(); assertThat(counter.get()).isEqualTo(0); } @Test public void shouldZeroValue() { Counter counter = Counter.circular(200); assertThat(counter.get()).isEqualTo(0); counter.increment(); assertThat(counter.get()).isEqualTo(1); counter.zero(); assertThat(counter.get()).isEqualTo(0); counter.increment(); assertThat(counter.get()).isEqualTo(1); } }