1049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/*
2049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Copyright (C) 2008 The Guava Authors
3049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project *
4049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * you may not use this file except in compliance with the License.
6049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * You may obtain a copy of the License at
7a2b9955b49034a51dfbc8bf9f4e9d312149cecacXianzhu Wang *
8049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0
9049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project *
10049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * See the License for the specific language governing permissions and
14049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * limitations under the License.
15049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
16049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
17049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectpackage com.google.common.collect.testing.testers;
18049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
19049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
20049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
21049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport com.google.common.collect.testing.MinimalSet;
22049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport com.google.common.collect.testing.features.CollectionFeature;
23049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport com.google.common.collect.testing.features.CollectionSize;
24049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
25049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport java.util.ArrayList;
26049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport java.util.Collection;
27049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectimport java.util.List;
28049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
29049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project/**
30049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * Tests {@link List#equals}.
31049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project *
32049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * <p>This class is GWT compatible.
3377f63d23f7d380b0ff02c18fd6a154ab9063128aDavid 'Digit' Turner *
34049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project * @author George van den Driessche
35049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project */
36049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Projectpublic class ListEqualsTester<E> extends AbstractListTester<E> {
37049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_otherListWithSameElements() {
38049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertTrue(
39049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        "A List should equal any other List containing the same elements.",
40049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(new ArrayList<E>(getSampleElements())));
41049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
42049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
43049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  @CollectionSize.Require(absent = CollectionSize.ZERO)
44049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_otherListWithDifferentElements() {
45049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    ArrayList<E> other = new ArrayList<E>(getSampleElements());
46049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    other.set(other.size() / 2, getSubjectGenerator().samples().e3);
47049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse(
48049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        "A List should not equal another List containing different elements.",
49049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(other));
50049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
51049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
52049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  @CollectionSize.Require(absent = CollectionSize.ZERO)
53049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_otherListContainingNull() {
54049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    List<E> other = new ArrayList<E>(getSampleElements());
55049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    other.set(other.size() / 2, null);
56049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse("Two Lists should not be equal if exactly one of them has "
57049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        + "null at a given index.",
58049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(other));
59049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
60049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
61049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  @CollectionSize.Require(absent = CollectionSize.ZERO)
62049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  @CollectionFeature.Require(ALLOWS_NULL_VALUES)
63049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_containingNull() {
64049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    ArrayList<E> elements = new ArrayList<E>(getSampleElements());
65049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    elements.set(elements.size() / 2, null);
66049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    collection = getSubjectGenerator().create(elements.toArray());
67049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    List<E> other = new ArrayList<E>(getSampleElements());
68049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse("Two Lists should not be equal if exactly one of them has "
69049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        + "null at a given index.",
70049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(other));
71049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
72049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
73049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  @CollectionSize.Require(absent = CollectionSize.ZERO)
74049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_shorterList() {
75049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    Collection<E> fewerElements = getSampleElements(getNumElements() - 1);
76049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse("Lists of different sizes should not be equal.",
77049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(new ArrayList<E>(fewerElements)));
78049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
79049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
80049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_longerList() {
81049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    Collection<E> moreElements = getSampleElements(getNumElements() + 1);
82049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse("Lists of different sizes should not be equal.",
83049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(new ArrayList<E>(moreElements)));
84049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
85049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project
86049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  public void testEquals_set() {
87049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project    assertFalse("A List should never equal a Set.",
88049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project        getList().equals(MinimalSet.from(getList())));
89049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project  }
90049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project}
91049d6fea481044fcc000e7782e5bc7046fc70844The Android Open Source Project