001 /*
002 * Created on Jun 18, 2007
003 *
004 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
005 * 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 is distributed on
010 * an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
011 * specific language governing permissions and limitations under the License.
012 *
013 * Copyright @2007-2009 the original author or authors.
014 */
015 package org.fest.assertions;
016
017 import static org.fest.assertions.ErrorMessages.*;
018
019 /**
020 * Understands assertion methods for <code>byte</code>s. To create a new instance of this class use the
021 * method <code>{@link Assertions#assertThat(byte)}</code>.
022 *
023 * @author Yvonne Wang
024 * @author David DIDIER
025 *
026 * @since 1.2
027 */
028 public class ByteAssert extends PrimitiveAssert implements NumberAssert {
029
030 private static final byte ZERO = (byte)0;
031
032 private final byte actual;
033
034 /**
035 * Creates a new </code>{@link ByteAssert}</code>.
036 * @param actual the target to verify.
037 */
038 protected ByteAssert(byte actual) {
039 this.actual = actual;
040 }
041
042 /**
043 * Sets the description of the actual value, to be used in as message of any <code>{@link AssertionError}</code>
044 * thrown when an assertion fails. This method should be called before any assertion method, otherwise any assertion
045 * failure will not show the provided description.
046 * <p>
047 * For example:
048 * <pre>
049 * assertThat(value).<strong>as</strong>("Some value").isEqualTo(otherValue);
050 * </pre>
051 * </p>
052 * @param description the description of the actual value.
053 * @return this assertion object.
054 */
055 public ByteAssert as(String description) {
056 description(description);
057 return this;
058 }
059
060 /**
061 * Alias for <code>{@link #as(String)}</code>, since "as" is a keyword in
062 * <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a>. This method should be called before any assertion
063 * method, otherwise any assertion failure will not show the provided description.
064 * <p>
065 * For example:
066 * <pre>
067 * assertThat(value).<strong>describedAs</strong>("Some value").isEqualTo(otherValue);
068 * </pre>
069 * </p>
070 * @param description the description of the actual value.
071 * @return this assertion object.
072 */
073 public ByteAssert describedAs(String description) {
074 return as(description);
075 }
076
077 /**
078 * Sets the description of the actual value, to be used in as message of any <code>{@link AssertionError}</code>
079 * thrown when an assertion fails. This method should be called before any assertion method, otherwise any assertion
080 * failure will not show the provided description.
081 * <p>
082 * For example:
083 * <pre>
084 * assertThat(value).<strong>as</strong>(new BasicDescription("Some value")).isEqualTo(otherValue);
085 * </pre>
086 * </p>
087 * @param description the description of the actual value.
088 * @return this assertion object.
089 */
090 public ByteAssert as(Description description) {
091 description(description);
092 return this;
093 }
094
095 /**
096 * Alias for <code>{@link #as(Description)}</code>, since "as" is a keyword in
097 * <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a>. This method should be called before any assertion
098 * method, otherwise any assertion failure will not show the provided description.
099 * <p>
100 * For example:
101 * <pre>
102 * assertThat(value).<strong>describedAs</strong>(new BasicDescription("Some value")).isEqualTo(otherValue);
103 * </pre>
104 * </p>
105 * @param description the description of the actual value.
106 * @return this assertion object.
107 */
108 public ByteAssert describedAs(Description description) {
109 return as(description);
110 }
111
112 /**
113 * Verifies that the actual <code>byte</code> value is equal to the given one.
114 * @param expected the value to compare the actual one to.
115 * @return this assertion object.
116 * @throws AssertionError if the actual <code>byte</code> value is not equal to the given one.
117 */
118 public ByteAssert isEqualTo(byte expected) {
119 if (actual == expected) return this;
120 failIfCustomMessageIsSet();
121 throw fail(unexpectedNotEqual(actual, expected));
122 }
123
124 /**
125 * Verifies that the actual <code>byte</code> value is not equal to the given one.
126 * @param other the given value.
127 * @return this assertion object.
128 * @throws AssertionError if the actual <code>byte</code> value is equal to the given one.
129 */
130 public ByteAssert isNotEqualTo(byte other) {
131 if (actual != other) return this;
132 failIfCustomMessageIsSet();
133 throw failure(unexpectedEqual(actual, other));
134 }
135
136 /**
137 * Verifies that the actual <code>byte</code> value is greater than the given one.
138 * @param other the given value.
139 * @return this assertion object.
140 * @throws AssertionError if the actual <code>byte</code> value is not greater than the given one.
141 */
142 public ByteAssert isGreaterThan(byte other) {
143 if (actual > other) return this;
144 failIfCustomMessageIsSet();
145 throw failure(unexpectedLessThanOrEqualTo(actual, other));
146 }
147
148 /**
149 * Verifies that the actual <code>byte</code> value is less than the given one.
150 * @param other the given value.
151 * @return this assertion object.
152 * @throws AssertionError if the actual <code>byte</code> value is not less than the given one.
153 */
154 public ByteAssert isLessThan(byte other) {
155 if (actual < other) return this;
156 failIfCustomMessageIsSet();
157 throw failure(unexpectedGreaterThanOrEqualTo(actual, other));
158 }
159
160 /**
161 * Verifies that the actual <code>byte</code> value is greater or equal to the given one.
162 * @param other the given value.
163 * @return this assertion object.
164 * @throws AssertionError if the actual <code>byte</code> value is not greater than or equal to the given one.
165 */
166 public ByteAssert isGreaterThanOrEqualTo(byte other) {
167 if (actual >= other) return this;
168 failIfCustomMessageIsSet();
169 throw failure(unexpectedLessThan(actual, other));
170 }
171
172 /**
173 * Verifies that the actual <code>byte</code> value is less or equal to the given one.
174 * @param other the given value.
175 * @return this assertion object.
176 * @throws AssertionError if the actual <code>byte</code> value is not less than or equal to the given one.
177 */
178 public ByteAssert isLessThanOrEqualTo(byte other) {
179 if (actual <= other) return this;
180 failIfCustomMessageIsSet();
181 throw failure(unexpectedGreaterThan(actual, other));
182 }
183
184 /**
185 * Verifies that the actual <code>byte</code> value is equal to zero.
186 * @return this assertion object.
187 * @throws AssertionError if the actual <code>byte</code> value is not equal to zero.
188 */
189 public ByteAssert isZero() {
190 return isEqualTo(ZERO);
191 }
192
193 /**
194 * Verifies that the actual <code>byte</code> value is positive.
195 * @return this assertion object.
196 * @throws AssertionError if the actual <code>byte</code> value is not positive.
197 */
198 public ByteAssert isPositive() {
199 return isGreaterThan(ZERO);
200 }
201
202 /**
203 * Verifies that the actual <code>byte</code> value is negative.
204 * @return this assertion object.
205 * @throws AssertionError if the actual <code>byte</code> value is not negative.
206 */
207 public ByteAssert isNegative() {
208 return isLessThan(ZERO);
209 }
210
211 /** {@inheritDoc} */
212 public ByteAssert overridingErrorMessage(String message) {
213 replaceDefaultErrorMessagesWith(message);
214 return this;
215 }
216 }