/* * Copyright 2002-2017 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * 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.springframework.test.web.client; import org.springframework.util.Assert; /** * A simple type representing a range for an expected count. * * <p>Examples: * <pre> * import static org.springframework.test.web.client.ExpectedCount.* * * once() * twice() * manyTimes() * times(5) * min(2) * max(4) * between(2, 4) * never() * </pre> * * @author Rossen Stoyanchev * @since 4.3 */ public class ExpectedCount { private final int minCount; private final int maxCount; /** * Private constructor. * See static factory methods in this class. */ private ExpectedCount(int minCount, int maxCount) { Assert.isTrue(minCount >= 0, "minCount >= 0 is required"); Assert.isTrue(maxCount >= minCount, "maxCount >= minCount is required"); this.minCount = minCount; this.maxCount = maxCount; } /** * Return the {@code min} boundary of the expected count range. */ public int getMinCount() { return this.minCount; } /** * Return the {@code max} boundary of the expected count range. */ public int getMaxCount() { return this.maxCount; } /** * Exactly once. */ public static ExpectedCount once() { return new ExpectedCount(1, 1); } /** * Exactly twice. */ public static ExpectedCount twice() { return new ExpectedCount(2, 2); } /** * Many times (range of 1..Integer.MAX_VALUE). */ public static ExpectedCount manyTimes() { return new ExpectedCount(1, Integer.MAX_VALUE); } /** * Exactly N times. */ public static ExpectedCount times(int count) { Assert.isTrue(count >= 1, "'count' must be >= 1"); return new ExpectedCount(count, count); } /** * At least {@code min} number of times. */ public static ExpectedCount min(int min) { Assert.isTrue(min >= 1, "'min' must be >= 1"); return new ExpectedCount(min, Integer.MAX_VALUE); } /** * At most {@code max} number of times. */ public static ExpectedCount max(int max) { Assert.isTrue(max >= 1, "'max' must be >= 1"); return new ExpectedCount(1, max); } /** * No calls expected at all, i.e. min=0 and max=0. * @since 4.3.6 */ public static ExpectedCount never() { return new ExpectedCount(0, 0); } /** * Between {@code min} and {@code max} number of times. */ public static ExpectedCount between(int min, int max) { return new ExpectedCount(min, max); } }