001 /* 002 * Created on Dec 27, 2006 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 005 * in compliance with the License. You may obtain a copy of the License at 006 * 007 * http://www.apache.org/licenses/LICENSE-2.0 008 * 009 * Unless required by applicable law or agreed to in writing, software distributed under the License 010 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 011 * or implied. See the License for the specific language governing permissions and limitations under 012 * the License. 013 * 014 * Copyright @2006-2009 the original author or authors. 015 */ 016 package org.fest.assertions; 017 018 import static java.math.BigDecimal.ZERO; 019 020 import java.math.BigDecimal; 021 022 /** 023 * Understands assertion methods for <code>{@link BigDecimal}</code>. To create a new instance of this class use the 024 * method <code>{@link Assertions#assertThat(BigDecimal)}</code>. 025 * 026 * @author David DIDIER 027 * @author Ted M. Young 028 * @author Yvonne Wang 029 * @author Alex Ruiz 030 */ 031 public class BigDecimalAssert extends ComparableAssert<BigDecimal> implements NumberAssert { 032 033 /** 034 * Creates a new </code>{@link BigDecimalAssert}</code>. 035 * @param actual the target to verify. 036 */ 037 protected BigDecimalAssert(BigDecimal actual) { 038 super(actual); 039 } 040 041 /** {@inheritDoc} */ 042 public BigDecimalAssert as(String description) { 043 description(description); 044 return this; 045 } 046 047 /** {@inheritDoc} */ 048 public BigDecimalAssert describedAs(String description) { 049 return as(description); 050 } 051 052 /** {@inheritDoc} */ 053 public BigDecimalAssert as(Description description) { 054 description(description); 055 return this; 056 } 057 058 /** {@inheritDoc} */ 059 public BigDecimalAssert describedAs(Description description) { 060 return as(description); 061 } 062 063 /** 064 * Verifies that the actual <code>{@link BigDecimal}</code> satisfies the given condition. 065 * @param condition the given condition. 066 * @return this assertion object. 067 * @throws NullPointerException if the given condition is <code>null</code>. 068 * @throws AssertionError if the actual <code>BigDecimal</code> does not satisfy the given condition. 069 * @see #is(Condition) 070 */ 071 public BigDecimalAssert satisfies(Condition<BigDecimal> condition) { 072 assertSatisfies(condition); 073 return this; 074 } 075 076 /** 077 * Verifies that the actual <code>{@link BigDecimal}</code> does not satisfy the given condition. 078 * @param condition the given condition. 079 * @return this assertion object. 080 * @throws NullPointerException if the given condition is <code>null</code>. 081 * @throws AssertionError if the actual value does satisfies the given condition. 082 * @see #isNot(Condition) 083 */ 084 public BigDecimalAssert doesNotSatisfy(Condition<BigDecimal> condition) { 085 assertDoesNotSatisfy(condition); 086 return this; 087 } 088 089 /** 090 * Alias for <code>{@link #satisfies(Condition)}</code>. 091 * @param condition the given condition. 092 * @return this assertion object. 093 * @throws NullPointerException if the given condition is <code>null</code>. 094 * @throws AssertionError if the actual <code>BigDecimal</code> does not satisfy the given condition. 095 * @since 1.2 096 */ 097 public BigDecimalAssert is(Condition<BigDecimal> condition) { 098 assertIs(condition); 099 return this; 100 } 101 102 /** 103 * Alias for <code>{@link #doesNotSatisfy(Condition)}</code>. 104 * @param condition the given condition. 105 * @return this assertion object. 106 * @throws NullPointerException if the given condition is <code>null</code>. 107 * @throws AssertionError if the actual value does satisfies the given condition. 108 * @since 1.2 109 */ 110 public BigDecimalAssert isNot(Condition<BigDecimal> condition) { 111 assertIsNot(condition); 112 return this; 113 } 114 115 /** 116 * Verifies that the actual <code>{@link BigDecimal}</code> is positive. 117 * @return this assertion object. 118 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 119 * @throws AssertionError if the actual <code>BigDecimal</code> value is not positive. 120 */ 121 public BigDecimalAssert isPositive() { 122 return isGreaterThan(ZERO); 123 } 124 125 /** 126 * Verifies that the actual <code>{@link BigDecimal}</code> is negative. 127 * @return this assertion object. 128 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 129 * @throws AssertionError if the actual <code>BigDecimal</code> value is not negative. 130 */ 131 public BigDecimalAssert isNegative() { 132 return isLessThan(ZERO); 133 } 134 135 /** 136 * Verifies that the actual <code>{@link BigDecimal}</code> is equal to zero, regardless of precision. 137 * Essentially, this is the same as 138 * <code>{@link #isEqualByComparingTo(BigDecimal) isEqualByComparingTo}</code>(<code>{@link BigDecimal#ZERO BigDecimal.ZERO}</code>). 139 * @return this assertion object. 140 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 141 * @throws AssertionError if the actual <code>BigDecimal</code> value is not equal to zero. 142 */ 143 public BigDecimalAssert isZero() { 144 return isEqualByComparingTo(ZERO); 145 } 146 147 /** 148 * Verifies that the actual <code>{@link BigDecimal}</code> is not <code>null</code>. 149 * @return this assertion object. 150 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 151 */ 152 public BigDecimalAssert isNotNull() { 153 assertNotNull(); 154 return this; 155 } 156 157 /** 158 * Verifies that the actual <code>{@link BigDecimal}</code> is the same as the given one. 159 * @param expected the given <code>BigDecimal</code> to compare the actual <code>BigDecimal</code> to. 160 * @return this assertion object. 161 * @throws AssertionError if the actual <code>BigDecimal</code> value is not the same as the given one. 162 */ 163 public BigDecimalAssert isSameAs(BigDecimal expected) { 164 assertSameAs(expected); 165 return this; 166 } 167 168 /** 169 * Verifies that the actual <code>{@link BigDecimal}</code> is not the same as the given one. 170 * @param other the given <code>BigDecimal</code> to compare the actual <code>BigDecimal</code> to. 171 * @return this assertion object. 172 * @throws AssertionError if the actual <code>BigDecimal</code> value is the same as the given one. 173 */ 174 public BigDecimalAssert isNotSameAs(BigDecimal other) { 175 assertNotSameAs(other); 176 return this; 177 } 178 179 /** 180 * Verifies that the actual <code>{@link BigDecimal}</code> is equal to the given one. Unlike 181 * <code>{@link #isEqualByComparingTo(BigDecimal)}</code>, this method considers two 182 * <code>{@link BigDecimal}</code> objects equal only if they are equal in value and scale (thus 2.0 is not equal to 183 * 2.00 when compared by this method). 184 * @param expected the given <code>BigDecimal</code> to compare the actual <code>BigDecimal</code> to. 185 * @return this assertion object. 186 * @throws AssertionError if the actual <code>BigDecimal</code> value is not equal to the given one. 187 * @see BigDecimal#equals(Object) 188 * @see #isEqualByComparingTo(BigDecimal) 189 */ 190 public BigDecimalAssert isEqualTo(BigDecimal expected) { 191 assertEqualTo(expected); 192 return this; 193 } 194 195 /** 196 * Verifies that the actual <code>{@link BigDecimal}</code> is not equal to the given one. 197 * @param other the given <code>BigDecimal</code> to compare the actual <code>BigDecimal</code> to. 198 * @return this assertion object. 199 * @throws AssertionError if the actual <code>BigDecimal</code> value is equal to the given one. 200 */ 201 public BigDecimalAssert isNotEqualTo(BigDecimal other) { 202 assertNotEqualTo(other); 203 return this; 204 } 205 206 /** 207 * Verifies that the actual <code>{@link BigDecimal}</code> is equal to the given one. Two 208 * <code>{@link BigDecimal}</code> objects that are equal in value but have a different scale (like 2.0 and 2.00) 209 * are considered equal by this method. 210 * @param expected the given <code>BigDecimal</code> to compare the actual <code>BigDecimal</code> to. 211 * @return this assertion object. 212 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 213 * @throws AssertionError if the actual <code>BigDecimal</code> value is not equal to the given one. 214 * @see BigDecimal#compareTo(BigDecimal) 215 */ 216 public BigDecimalAssert isEqualByComparingTo(BigDecimal expected) { 217 assertIsEqualByComparingTo(expected); 218 return this; 219 } 220 221 /** 222 * Verifies that the actual <code>{@link BigDecimal}</code> is <b>not</b> equal to the given one. Two 223 * <code>{@link BigDecimal}</code> objects that are equal in value but have a different scale (like 2.0 and 2.00) 224 * are considered equal by this method. 225 * @param expected the given <code>BigDecimal</code> to use to compare to the actual <code>BigDecimal</code>. 226 * @return this assertion object. 227 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 228 * @throws AssertionError if the actual <code>BigDecimal</code> value is equal to the given one. 229 * @see BigDecimal#compareTo(BigDecimal) 230 */ 231 public BigDecimalAssert isNotEqualByComparingTo(BigDecimal expected) { 232 assertIsNotEqualByComparingTo(expected); 233 return this; 234 } 235 236 /** 237 * Verifies that the actual <code>{@link BigDecimal}</code> value is less than the given one. 238 * @param other the given value. 239 * @return this assertion object. 240 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 241 * @throws AssertionError if the actual <code>BigDecimal</code> value is not less than the given one. 242 */ 243 public BigDecimalAssert isLessThan(BigDecimal other) { 244 assertIsLessThan(other); 245 return this; 246 } 247 248 /** 249 * Verifies that the actual <code>{@link BigDecimal}</code> value is greater than the given one. 250 * @param other the given value. 251 * @return this assertion object. 252 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 253 * @throws AssertionError if the actual <code>BigDecimal</code> value is not greater than the given one. 254 */ 255 public BigDecimalAssert isGreaterThan(BigDecimal other) { 256 assertIsGreaterThan(other); 257 return this; 258 } 259 260 /** 261 * Verifies that the actual <code>{@link BigDecimal}</code> value is less than or equal to the given one. 262 * @param other the given value. 263 * @return this assertion object. 264 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 265 * @throws AssertionError if the actual <code>BigDecimal</code> value is not less than or equal to the given one. 266 */ 267 public BigDecimalAssert isLessThanOrEqualTo(BigDecimal other) { 268 assertIsLessThanOrEqualTo(other); 269 return this; 270 } 271 272 /** 273 * Verifies that the actual <code>{@link BigDecimal}</code> value is greater than or equal to the given one. 274 * @param other the given value. 275 * @return this assertion object. 276 * @throws AssertionError if the actual <code>BigDecimal</code> value is <code>null</code>. 277 * @throws AssertionError if the actual <code>BigDecimal</code> value is not greater than or equal to the given one. 278 */ 279 public BigDecimalAssert isGreaterThanOrEqualTo(BigDecimal other) { 280 assertIsGreaterThanOrEqualTo(other); 281 return this; 282 } 283 284 /** {@inheritDoc} */ 285 public BigDecimalAssert overridingErrorMessage(String message) { 286 replaceDefaultErrorMessagesWith(message); 287 return this; 288 } 289 }