1/* 2 * Copyright (c) 2016 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5package org.mockito.internal.verification; 6 7import org.mockito.internal.verification.api.VerificationData; 8import org.mockito.verification.VerificationMode; 9 10public abstract class VerificationWrapper<WrapperType extends VerificationMode> implements VerificationMode { 11 12 protected final WrapperType wrappedVerification; 13 14 public VerificationWrapper(WrapperType wrappedVerification) { 15 this.wrappedVerification = wrappedVerification; 16 } 17 18 public void verify(VerificationData data) { 19 wrappedVerification.verify(data); 20 } 21 22 protected abstract VerificationMode copySelfWithNewVerificationMode(VerificationMode verificationMode); 23 24 public VerificationMode times(int wantedNumberOfInvocations) { 25 return copySelfWithNewVerificationMode(VerificationModeFactory.times(wantedNumberOfInvocations)); 26 } 27 28 public VerificationMode never() { 29 return copySelfWithNewVerificationMode(VerificationModeFactory.atMost(0)); 30 } 31 32 public VerificationMode atLeastOnce() { 33 return copySelfWithNewVerificationMode(VerificationModeFactory.atLeastOnce()); 34 } 35 36 public VerificationMode atLeast(int minNumberOfInvocations) { 37 return copySelfWithNewVerificationMode(VerificationModeFactory.atLeast(minNumberOfInvocations)); 38 } 39 40 public VerificationMode atMost(int maxNumberOfInvocations) { 41 return copySelfWithNewVerificationMode(VerificationModeFactory.atMost(maxNumberOfInvocations)); 42 } 43 44 public VerificationMode only() { 45 return copySelfWithNewVerificationMode(VerificationModeFactory.only()); 46 } 47 48} 49