001    /*
002     * Created on Sep 16, 2007
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 @2007-2009 the original author or authors.
015     */
016    package org.fest.assertions;
017    
018    /**
019     * Understands a template for assertion methods for primitive values.
020     *
021     * @author Yvonne Wang
022     */
023    public abstract class PrimitiveAssert extends Assert {
024    
025      /**
026       * Sets the description of the actual value, to be used in as message of any <code>{@link AssertionError}</code>
027       * thrown when an assertion fails. This method should be called before any assertion method, otherwise any assertion
028       * failure will not show the provided description.
029       * <p>
030       * For example:
031       * <pre>
032       * assertThat(value).<strong>as</strong>(&quot;Some value&quot;).isEqualTo(otherValue);
033       * </pre>
034       * </p>
035       * @param description the description of the actual value.
036       * @return this assertion object.
037       */
038      protected abstract PrimitiveAssert as(String description);
039    
040      /**
041       * Alias for <code>{@link #as(String)}</code>, since "as" is a keyword in
042       * <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a>. This method should be called before any assertion
043       * method, otherwise any assertion failure will not show the provided description.
044       * <p>
045       * For example:
046       * <pre>
047       * assertThat(value).<strong>describedAs</strong>(&quot;Some value&quot;).isEqualTo(otherValue);
048       * </pre>
049       * </p>
050       * @param description the description of the actual value.
051       * @return this assertion object.
052       */
053      protected abstract PrimitiveAssert describedAs(String description);
054    
055      /**
056       * Sets the description of the actual value, to be used in as message of any <code>{@link AssertionError}</code>
057       * thrown when an assertion fails. This method should be called before any assertion method, otherwise any assertion
058       * failure will not show the provided description.
059       * <p>
060       * For example:
061       * <pre>
062       * assertThat(val).<strong>as</strong>(new BasicDescription(&quot;name&quot;)).isEqualTo(&quot;Frodo&quot;);
063       * </pre>
064       * </p>
065       * @param description the description of the actual value.
066       * @return this assertion object.
067       */
068      protected abstract PrimitiveAssert as(Description description);
069    
070      /**
071       * Alias for <code>{@link #as(Description)}</code>, since "as" is a keyword in
072       * <a href="http://groovy.codehaus.org/" target="_blank">Groovy</a>. This method should be called before any assertion
073       * method, otherwise any assertion failure will not show the provided description.
074       * <p>
075       * For example:
076       * <pre>
077       * assertThat(val).<strong>describedAs</strong>(new BasicDescription(&quot;name&quot;)).isEqualTo(&quot;Frodo&quot;);
078       * </pre>
079       * </p>
080       * @param description the description of the actual value.
081       * @return this assertion object.
082       */
083      protected abstract PrimitiveAssert describedAs(Description description);
084    
085      /**
086       * Replaces the default message displayed in case of a failure with the given one.
087       * <p>
088       * For example, the following assertion:
089       * <pre>
090       * assertThat("Hello").isEqualTo("Bye");
091       * </pre>
092       * will fail with the default message "<em>expected:<'[Bye]'> but was:<'[Hello]'></em>."
093       * </p>
094       * <p>
095       * We can replace this message with our own:
096       * <pre>
097       * assertThat("Hello").overridingErrorMessage("'Hello' should be equal to 'Bye'").isEqualTo("Bye");
098       * </pre>
099       * in this case, the assertion will fail showing the message "<em>'Hello' should be equal to 'Bye'</em>".
100       * </p>
101       * @param message the given error message, which will replace the default one.
102       * @return this assertion.
103       * @since 1.2
104       */
105      protected abstract PrimitiveAssert overridingErrorMessage(String message);
106    }