Home | History | Annotate | Download | only in collect
      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 
     17 package com.google.common.collect;
     18 
     19 import static com.google.common.truth.Truth.assertThat;
     20 
     21 import com.google.common.annotations.GwtCompatible;
     22 import com.google.common.annotations.GwtIncompatible;
     23 import com.google.common.base.Objects;
     24 import com.google.common.testing.EqualsTester;
     25 
     26 /**
     27  * Tests {@link SingletonImmutableTable}.
     28  *
     29  * @author Gregory Kick
     30  */
     31 @GwtCompatible(emulated = true)
     32 public 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