1 /* 2 * Copyright (c) 2016 Mockito contributors 3 * This program is made available under the terms of the MIT License. 4 */ 5 package org.mockito.internal.verification; 6 7 import org.mockito.exceptions.base.MockitoAssertionError; 8 import org.mockito.internal.verification.api.VerificationData; 9 import org.mockito.verification.VerificationMode; 10 11 /** 12 * Description verification mode wraps an existing verification mode and prepends 13 * a custom message to the assertion error if verification fails. 14 * @author Geoff.Schoeman 15 * @since 2.1.0 16 */ 17 public class Description implements VerificationMode { 18 19 private final VerificationMode verification; 20 private final String description; 21 22 /** 23 * Constructs a verification mode which wraps the given verification mode. 24 * @param verification The implementation to use for verification 25 * @param description The failure message to prepend if verification fails 26 */ Description(VerificationMode verification, String description)27 public Description(VerificationMode verification, String description) { 28 this.verification = verification; 29 this.description = description; 30 } 31 32 /** 33 * Performs verification using the wrapped verification mode implementation. 34 * Prepends the custom failure message if verification fails. 35 * @param data the data to be verified 36 */ 37 @Override verify(VerificationData data)38 public void verify(VerificationData data) { 39 try { 40 verification.verify(data); 41 42 } catch (MockitoAssertionError e) { 43 throw new MockitoAssertionError(e, description); 44 } 45 } 46 47 @Override description(String description)48 public VerificationMode description(String description) { 49 return VerificationModeFactory.description(this, description); 50 } 51 } 52