1/*
2 * Copyright (C) 2009 The Guava Authors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.google.common.collect;
18
19import static com.google.common.truth.Truth.assertThat;
20
21import com.google.common.annotations.GwtCompatible;
22import com.google.common.annotations.GwtIncompatible;
23import com.google.common.base.Objects;
24import com.google.common.testing.EqualsTester;
25
26/**
27 * Tests {@link SingletonImmutableTable}.
28 *
29 * @author Gregory Kick
30 */
31@GwtCompatible(emulated = true)
32public class SingletonImmutableTableTest extends AbstractImmutableTableTest {
33  private final ImmutableTable<Character, Integer, String> testTable =
34      new SingletonImmutableTable<Character, Integer, String>('a', 1, "blah");
35
36  public void testHashCode() {
37    assertEquals(Objects.hashCode('a', 1, "blah"), testTable.hashCode());
38  }
39
40  public void testCellSet() {
41    assertEquals(ImmutableSet.of(Tables.immutableCell('a', 1, "blah")), testTable.cellSet());
42  }
43
44  public void testColumn() {
45    assertEquals(ImmutableMap.of(), testTable.column(0));
46    assertEquals(ImmutableMap.of('a', "blah"), testTable.column(1));
47  }
48
49  public void testColumnKeySet() {
50    assertEquals(ImmutableSet.of(1), testTable.columnKeySet());
51  }
52
53  public void testColumnMap() {
54    assertEquals(ImmutableMap.of(1, ImmutableMap.of('a', "blah")), testTable.columnMap());
55  }
56
57  public void testRow() {
58    assertEquals(ImmutableMap.of(), testTable.row('A'));
59    assertEquals(ImmutableMap.of(1, "blah"), testTable.row('a'));
60  }
61
62  public void testRowKeySet() {
63    assertEquals(ImmutableSet.of('a'), testTable.rowKeySet());
64  }
65
66  public void testRowMap() {
67    assertEquals(ImmutableMap.of('a', ImmutableMap.of(1, "blah")),
68        testTable.rowMap());
69  }
70
71  public void testEqualsObject() {
72    new EqualsTester()
73        .addEqualityGroup(testTable, HashBasedTable.create(testTable))
74        .addEqualityGroup(ImmutableTable.of(), HashBasedTable.create())
75        .addEqualityGroup(HashBasedTable.create(ImmutableTable.of('A', 2, "")))
76        .testEquals();
77  }
78
79  @GwtIncompatible("ArrayTable")
80  public void testEqualsObjectNullValues() {
81    new EqualsTester()
82        .addEqualityGroup(testTable)
83        .addEqualityGroup(ArrayTable.create(ImmutableSet.of('A'), ImmutableSet.of(1)))
84        .testEquals();
85  }
86
87  public void testToString() {
88    assertEquals("{a={1=blah}}", testTable.toString());
89  }
90
91  public void testContains() {
92    assertTrue(testTable.contains('a', 1));
93    assertFalse(testTable.contains('a', 2));
94    assertFalse(testTable.contains('A', 1));
95    assertFalse(testTable.contains('A', 2));
96  }
97
98  public void testContainsColumn() {
99    assertTrue(testTable.containsColumn(1));
100    assertFalse(testTable.containsColumn(2));
101  }
102
103  public void testContainsRow() {
104    assertTrue(testTable.containsRow('a'));
105    assertFalse(testTable.containsRow('A'));
106  }
107
108  public void testContainsValue() {
109    assertTrue(testTable.containsValue("blah"));
110    assertFalse(testTable.containsValue(""));
111  }
112
113  public void testGet() {
114    assertEquals("blah", testTable.get('a', 1));
115    assertNull(testTable.get('a', 2));
116    assertNull(testTable.get('A', 1));
117    assertNull(testTable.get('A', 2));
118  }
119
120  public void testIsEmpty() {
121    assertFalse(testTable.isEmpty());
122  }
123
124  public void testSize() {
125    assertEquals(1, testTable.size());
126  }
127
128  public void testValues() {
129    assertThat(testTable.values()).has().item("blah");
130  }
131
132  @Override Iterable<ImmutableTable<Character, Integer, String>> getTestInstances() {
133    return ImmutableSet.of(testTable);
134  }
135}
136