1/*
2 * Copyright (C) 2013 The Guava Authors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5 * in compliance with the License. You may obtain a copy of the License at
6 *
7 * http://www.apache.org/licenses/LICENSE-2.0
8 *
9 * Unless required by applicable law or agreed to in writing, software distributed under the License
10 * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11 * or implied. See the License for the specific language governing permissions and limitations under
12 * the License.
13 */
14
15package com.google.common.collect.testing.google;
16
17import static com.google.common.collect.testing.features.CollectionFeature.ALLOWS_NULL_VALUES;
18import static com.google.common.collect.testing.features.CollectionSize.ZERO;
19
20import com.google.common.annotations.GwtCompatible;
21import com.google.common.collect.testing.features.CollectionFeature;
22import com.google.common.collect.testing.features.CollectionSize;
23import com.google.common.testing.EqualsTester;
24
25/**
26 * Tests for {@code Multiset.equals} and {@code Multiset.hashCode}.
27 *
28 * @author Louis Wasserman
29 */
30@GwtCompatible
31public class MultisetEqualsTester<E> extends AbstractMultisetTester<E> {
32  public void testEqualsSameContents() {
33    new EqualsTester()
34        .addEqualityGroup(
35            getMultiset(),
36            getSubjectGenerator().create(getSampleElements().toArray()))
37        .testEquals();
38  }
39
40  @CollectionSize.Require(absent = ZERO)
41  public void testNotEqualsEmpty() {
42    new EqualsTester()
43        .addEqualityGroup(getMultiset())
44        .addEqualityGroup(getSubjectGenerator().create())
45        .testEquals();
46  }
47
48  public void testHashCodeMatchesEntrySet() {
49    assertEquals(getMultiset().entrySet().hashCode(), getMultiset().hashCode());
50  }
51
52  @CollectionSize.Require(absent = ZERO)
53  @CollectionFeature.Require(ALLOWS_NULL_VALUES)
54  public void testEqualsMultisetWithNullValue() {
55    new EqualsTester()
56        .addEqualityGroup(getMultiset())
57        .addEqualityGroup(
58            getSubjectGenerator().create(createArrayWithNullElement()),
59            getSubjectGenerator().create(createArrayWithNullElement()))
60        .testEquals();
61  }
62}
63