001    /*
002     * Created on Feb 14, 2008
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 @2008-2011 the original author or authors.
015     */
016    package org.fest.assertions;
017    
018    import static org.fest.assertions.ArrayInspection.copy;
019    import static org.fest.assertions.ErrorMessages.*;
020    
021    import java.util.Arrays;
022    
023    /**
024     * Assertions for {@code long} arrays.
025     * <p>
026     * To create a new instance of this class invoke <code>{@link Assertions#assertThat(long[])}</code>.
027     * </p>
028     *
029     * @author Yvonne Wang
030     * @author Alex Ruiz
031     */
032    public class LongArrayAssert extends ArrayAssert<LongArrayAssert, long[]> {
033    
034      /**
035       * Creates a new </code>{@link LongArrayAssert}</code>.
036       * @param actual the target to verify.
037       */
038      protected LongArrayAssert(long... actual) {
039        super(LongArrayAssert.class, actual);
040      }
041    
042      /**
043       * Verifies that the actual {@code long} array contains the given values.
044       * @param values the values to look for.
045       * @return this assertion object.
046       * @throws AssertionError if the actual {@code long} array is {@code null}.
047       * @throws NullPointerException if the given {@code long} array is {@code null}.
048       * @throws AssertionError if the actual {@code long} array does not contain the given values.
049       */
050      public LongArrayAssert contains(long...values) {
051        assertContains(copy(values));
052        return this;
053      }
054    
055      /**
056       * Verifies that the actual {@code long} array contains the given values <strong>only</strong>.
057       * @param values the values to look for.
058       * @return this assertion object.
059       * @throws AssertionError if the actual {@code long} array is {@code null}.
060       * @throws NullPointerException if the given {@code long} array is {@code null}.
061       * @throws AssertionError if the actual {@code long} array does not contain the given objects, or if the actual
062       * {@code long} array contains elements other than the ones specified.
063       */
064      public LongArrayAssert containsOnly(long...values) {
065        assertContainsOnly(copy(values));
066        return this;
067      }
068    
069      /**
070       * Verifies that the actual {@code long} array does not contain the given values.
071       * @param values the values the array should exclude.
072       * @return this assertion object.
073       * @throws AssertionError if the actual {@code long} array is {@code null}.
074       * @throws NullPointerException if the given {@code long} array is {@code null}.
075       * @throws AssertionError if the actual {@code long} array contains any of the given values.
076       */
077      public LongArrayAssert excludes(long...values) {
078        assertExcludes(copy(values));
079        return this;
080      }
081    
082      /**
083       * Verifies that the actual {@code long} array is equal to the given array. Array equality is checked by
084       * <code>{@link Arrays#equals(long[], long[])}</code>.
085       * @param expected the given array to compare the actual array to.
086       * @return this assertion object.
087       * @throws AssertionError if the actual {@code long} array is not equal to the given one.
088       */
089      @Override public LongArrayAssert isEqualTo(long[] expected) {
090        if (Arrays.equals(actual, expected)) return this;
091        failIfCustomMessageIsSet();
092        throw failure(unexpectedNotEqual(actual, expected));
093      }
094    
095      /**
096       * Verifies that the actual {@code long} array is not equal to the given array. Array equality is checked by
097       * <code>{@link Arrays#equals(long[], long[])}</code>.
098       * @param array the given array to compare the actual array to.
099       * @return this assertion object.
100       * @throws AssertionError if the actual {@code long} array is equal to the given one.
101       */
102      @Override public LongArrayAssert isNotEqualTo(long[] array) {
103        if (!Arrays.equals(actual, array)) return this;
104        failIfCustomMessageIsSet();
105        throw failure(unexpectedEqual(actual, array));
106      }
107    }