package picard.analysis; import org.testng.Assert; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; public class CounterManagerTest { private CounterManager testCounterManager; private CounterManager.Counter testCounter; private int arrayLength = 10; private int readLength = 10; private int OFFSET = 7; private CounterManager secondTestCounterManager; private CounterManager.Counter secondCounter; @BeforeTest public void setUp() { secondTestCounterManager = new CounterManager(arrayLength, readLength); secondTestCounterManager.setOffset(OFFSET); secondCounter = secondTestCounterManager.newCounter(); testCounterManager = new CounterManager(arrayLength, readLength); testCounterManager.setOffset(OFFSET); testCounter = testCounterManager.newCounter(); for (int i = 0; i < arrayLength; i++) { testCounter.increment(i + OFFSET); secondCounter.increment(i + OFFSET); } testCounter.increment(OFFSET); secondCounter.increment(OFFSET); } @Test public void testCounterInc() { Assert.assertEquals(2, testCounter.get(OFFSET), "Test method increment:"); } @Test public void testForClearCounter() { testCounterManager.clear(); Assert.assertEquals(0, testCounter.get(OFFSET), "The value of the array with index 0 must be 0 after clear manager:"); } @Test public void testForCorrectOffsetAfterRebase() { secondTestCounterManager.checkOutOfBounds(11); Assert.assertEquals(11, secondTestCounterManager.getOffset(), "After rebase offset must be new int"); } @Test public void testForCorrectCounterAfterRebase() { secondTestCounterManager.checkOutOfBounds(11); Assert.assertEquals(1, secondCounter.get(11), "The value of the array with index 0 must be 1 after rebase:"); } @Test public void testForOutOfBoundCounter() { secondTestCounterManager.checkOutOfBounds(44); Assert.assertEquals(44, secondTestCounterManager.getOffset(), "New offset after clear must be 44:"); } @Test public void testForCleanCounterAfter() { testCounterManager.checkOutOfBounds(88); Assert.assertEquals(0, testCounter.get(88), "The value of the array with index 0 must be 1 after clean:"); } @Test public void testForCheckIncrement(){ CounterManager testCounterManager = new CounterManager(arrayLength, readLength); testCounterManager.setOffset(0); CounterManager.Counter counter = testCounterManager.newCounter(); for (int i=0; i<10; i++){ counter.increment(1); } int[] testArray = new int[arrayLength]; for (int i = 0; i< arrayLength; i++){ testArray[i] = counter.get(i); } int[]templateArray = new int[arrayLength]; templateArray[1] = 10; Assert.assertEquals(templateArray, testArray); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void testForWrongIndexInInc(){ testCounter.increment(40); } @Test(expectedExceptions = IndexOutOfBoundsException.class) public void testForWrongIndexInGet(){ testCounter.get(40); } }