package com.github.dreamhead.moco.verification; import com.github.dreamhead.moco.VerificationData; import com.github.dreamhead.moco.VerificationException; import com.github.dreamhead.moco.VerificationMode; public abstract class AbstractTimesVerification implements VerificationMode { protected abstract boolean meet(final int size); protected abstract String expectedTip(); @Override public final void verify(final VerificationData data) { int actualSize = data.matchedSize(); if (!meet(actualSize)) { throw new VerificationException(data.mismatchDescription(actualSize, expectedTip())); } } }