Home | History | Annotate | Download | only in collection
      1 /*
      2  * Copyright (C) 2017 The Android Open Source Project
      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 androidx.collection
     18 
     19 import androidx.testutils.fail
     20 import com.google.common.truth.Truth.assertThat
     21 import org.junit.Assert.assertEquals
     22 import org.junit.Assert.assertFalse
     23 import org.junit.Assert.assertSame
     24 import org.junit.Assert.assertTrue
     25 import org.junit.Test
     26 
     27 class LongSparseArrayTest {
     28     @Test fun sizeProperty() {
     29         val array = LongSparseArray<String>()
     30         assertEquals(0, array.size)
     31         array.put(1L, "one")
     32         assertEquals(1, array.size)
     33     }
     34 
     35     @Test fun containsOperator() {
     36         val array = LongSparseArray<String>()
     37         assertFalse(1L in array)
     38         array.put(1L, "one")
     39         assertTrue(1L in array)
     40     }
     41 
     42     @Test fun containsOperatorWithValue() {
     43         val array = LongSparseArray<String>()
     44 
     45         array.put(1L, "one")
     46         assertFalse(2L in array)
     47 
     48         array.put(2L, "two")
     49         assertTrue(2L in array)
     50     }
     51 
     52     @Test fun setOperator() {
     53         val array = LongSparseArray<String>()
     54         array[1L] = "one"
     55         assertEquals("one", array.get(1L))
     56     }
     57 
     58     @Test fun plusOperator() {
     59         val first = LongSparseArray<String>().apply { put(1L, "one") }
     60         val second = LongSparseArray<String>().apply { put(2L, "two") }
     61         val combined = first + second
     62         assertEquals(2, combined.size())
     63         assertEquals(1L, combined.keyAt(0))
     64         assertEquals("one", combined.valueAt(0))
     65         assertEquals(2L, combined.keyAt(1))
     66         assertEquals("two", combined.valueAt(1))
     67     }
     68 
     69     @Test fun containsKey() {
     70         val array = LongSparseArray<String>()
     71         assertFalse(array.containsKey(1L))
     72         array.put(1L, "one")
     73         assertTrue(array.containsKey(1L))
     74     }
     75 
     76     @Test fun containsKeyWithValue() {
     77         val array = LongSparseArray<String>()
     78 
     79         array.put(1L, "one")
     80         assertFalse(array.containsKey(2L))
     81 
     82         array.put(2L, "one")
     83         assertTrue(array.containsKey(2L))
     84     }
     85 
     86     @Test fun containsValue() {
     87         val array = LongSparseArray<String>()
     88         assertFalse(array.containsValue("one"))
     89         array.put(1L, "one")
     90         assertTrue(array.containsValue("one"))
     91     }
     92 
     93     @Test fun getOrDefault() {
     94         val array = LongSparseArray<Any>()
     95         val default = Any()
     96         assertSame(default, array.getOrDefault(1L, default))
     97         array.put(1L, "one")
     98         assertEquals("one", array.getOrDefault(1L, default))
     99     }
    100 
    101     @Test fun getOrElse() {
    102         val array = LongSparseArray<Any>()
    103         val default = Any()
    104         assertSame(default, array.getOrElse(1L) { default })
    105         array.put(1L, "one")
    106         assertEquals("one", array.getOrElse(1L) { fail() })
    107     }
    108 
    109     @Test fun isNotEmpty() {
    110         val array = LongSparseArray<String>()
    111         assertFalse(array.isNotEmpty())
    112         array.put(1L, "one")
    113         assertTrue(array.isNotEmpty())
    114     }
    115 
    116     @Test fun removeValue() {
    117         val array = LongSparseArray<String>()
    118         array.put(1L, "one")
    119         assertFalse(array.remove(0L, "one"))
    120         assertEquals(1, array.size())
    121         assertFalse(array.remove(1L, "two"))
    122         assertEquals(1, array.size())
    123         assertTrue(array.remove(1L, "one"))
    124         assertEquals(0, array.size())
    125     }
    126 
    127     @Test fun putAll() {
    128         val dest = LongSparseArray<String>()
    129         val source = LongSparseArray<String>()
    130         source.put(1L, "one")
    131 
    132         assertEquals(0, dest.size())
    133         dest.putAll(source)
    134         assertEquals(1, dest.size())
    135     }
    136 
    137     @Test fun forEach() {
    138         val array = LongSparseArray<String>()
    139         array.forEach { _, _ -> fail() }
    140 
    141         array.put(1L, "one")
    142         array.put(2L, "two")
    143         array.put(6L, "six")
    144 
    145         val keys = mutableListOf<Long>()
    146         val values = mutableListOf<String>()
    147         array.forEach { key, value ->
    148             keys.add(key)
    149             values.add(value)
    150         }
    151         assertThat(keys).containsExactly(1L, 2L, 6L)
    152         assertThat(values).containsExactly("one", "two", "six")
    153     }
    154 
    155     @Test fun keyIterator() {
    156         val array = LongSparseArray<String>()
    157         assertFalse(array.keyIterator().hasNext())
    158 
    159         array.put(1L, "one")
    160         array.put(2L, "two")
    161         array.put(6L, "six")
    162 
    163         val iterator = array.keyIterator()
    164         assertTrue(iterator.hasNext())
    165         assertEquals(1L, iterator.nextLong())
    166         assertTrue(iterator.hasNext())
    167         assertEquals(2L, iterator.nextLong())
    168         assertTrue(iterator.hasNext())
    169         assertEquals(6L, iterator.nextLong())
    170         assertFalse(iterator.hasNext())
    171     }
    172 
    173     @Test fun valueIterator() {
    174         val array = LongSparseArray<String>()
    175         assertFalse(array.valueIterator().hasNext())
    176 
    177         array.put(1L, "one")
    178         array.put(2L, "two")
    179         array.put(6L, "six")
    180 
    181         val iterator = array.valueIterator()
    182         assertTrue(iterator.hasNext())
    183         assertEquals("one", iterator.next())
    184         assertTrue(iterator.hasNext())
    185         assertEquals("two", iterator.next())
    186         assertTrue(iterator.hasNext())
    187         assertEquals("six", iterator.next())
    188         assertFalse(iterator.hasNext())
    189     }
    190 }
    191