1 /*
2 * Copyright 2001-2013 Stephen Colebourne
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16 package org.joda.beans.test;
17
18 import org.joda.beans.Bean;
19
20 /**
21 * Assertion class to compare beans.
22 * <p>
23 * This class fulfils a similar role to other assertion libraries in testing code.
24 * It should generally be statically imported.
25 */
26 public final class BeanAssert {
27
28 /**
29 * Restricted constructor.
30 */
31 private BeanAssert() {
32 }
33
34 //-----------------------------------------------------------------------
35 /**
36 * Asserts that two beans are equal, providing a better error message.
37 *
38 * @param expected the expected value, not null
39 * @param actual the actual value, not null
40 */
41 public static void assertBeanEquals(final Bean expected, final Bean actual) {
42 assertBeanEquals(null, expected, actual);
43 }
44
45 /**
46 * Asserts that two beans are equal, providing a better error message.
47 *
48 * @param message the message to use in any error, null uses default message
49 * @param expected the expected value, not null
50 * @param actual the actual value, not null
51 */
52 public static void assertBeanEquals(final String message, final Bean expected, final Bean actual) {
53 if (expected == null) {
54 throw new AssertionError(message + ": Expected bean must not be null");
55 }
56 if (actual == null) {
57 throw new AssertionError(message + ": Actual bean must not be null");
58 }
59 if (expected.equals(actual) == false) {
60 throw new BeanComparisonError(message, 10, expected, actual);
61 }
62 }
63
64 //-----------------------------------------------------------------------
65 /**
66 * Asserts that two beans are equal, providing a better error message.
67 *
68 * @param expected the expected value, not null
69 * @param actual the actual value, not null
70 */
71 public static void assertBeanEqualsFullDetail(final Bean expected, final Bean actual) {
72 assertBeanEqualsFullDetail(null, expected, actual);
73 }
74
75 /**
76 * Asserts that two beans are equal, providing a better error message, with
77 * an unlimited number of errors reported.
78 *
79 * @param message the message to use in any error, null uses default message
80 * @param expected the expected value, not null
81 * @param actual the actual value, not null
82 */
83 public static void assertBeanEqualsFullDetail(final String message, final Bean expected, final Bean actual) {
84 if (expected == null) {
85 throw new AssertionError(message + ": Expected bean must not be null");
86 }
87 if (actual == null) {
88 throw new AssertionError(message + ": Actual bean must not be null");
89 }
90 if (expected.equals(actual) == false) {
91 throw new BeanComparisonError(message, Integer.MAX_VALUE, expected, actual);
92 }
93 }
94
95 }