public void testCompareAndSwapBounds(Method method) {
CounterManager counterManager = counterManager(0);
counterManager.defineCounter(method.getName(),
CounterConfiguration.builder(CounterType.BOUNDED_STRONG).lowerBound(-2).upperBound(2).build());
SyncStrongCounter counter = counterManager.getStrongCounter(method.getName()).sync();
assertEquals(0, counter.compareAndSwap(0, 2));
assertEquals(2, counter.getValue());
assertOutOfBoundCompareAndSwap(counter, 2, 3);
counter.reset();
assertEquals(0, counter.compareAndSwap(0, -2));
assertEquals(-2, counter.getValue());
assertOutOfBoundCompareAndSwap(counter, -2, -3);
counter.reset();
assertEquals(0, counter.compareAndSwap(1, 3));
assertEquals(0, counter.compareAndSwap(1, -3));
}