/**
* Copyright 2010 Wealthfront Inc. 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 com.kaching.platform.testing;
import com.kaching.platform.common.Errors;
/**
* Thrown when an assertion failed for multiple reasons.
*/
public class CombinedAssertionFailedError extends AssertionError {
private static final long serialVersionUID = 5967202290583940192L;
private final String message;
private final Errors errors;
public CombinedAssertionFailedError() {
this(null);
}
public CombinedAssertionFailedError(String message) {
this.message = message;
this.errors = new Errors();
}
public void addError(String error) {
errors.addMessage(error);
}
@Override
public String getMessage() {
return toString();
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
if (message != null) {
builder.append(message);
}
if (0 < errors.size()) {
if (message != null) {
builder.append(':');
builder.append('\n');
}
builder.append(errors.toString());
}
return builder.toString();
}
/**
* Throws this {@link CombinedAssertionFailedError} if any error was
* encountered.
*/
public void throwIfHasErrors() {
if (0 < errors.size()) {
throw this;
}
}
}