1bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton/*
2bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * Copyright (C) 2018 The Android Open Source Project
3bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton *
4bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * Licensed under the Apache License, Version 2.0 (the "License");
5bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * you may not use this file except in compliance with the License.
6bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * You may obtain a copy of the License at
7bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton *
8bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton *      http://www.apache.org/licenses/LICENSE-2.0
9bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton *
10bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * Unless required by applicable law or agreed to in writing, software
11bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * distributed under the License is distributed on an "AS IS" BASIS,
12bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * See the License for the specific language governing permissions and
14bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton * limitations under the License.
15bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton */
16bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
17bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Whartonpackage androidx.collection
18bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
19bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Whartonimport org.junit.Assert.assertEquals
20bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Whartonimport org.junit.Assert.assertTrue
21bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Whartonimport org.junit.Test
22bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
23bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Whartonclass LruCacheTest {
24bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    private data class TestData(val x: String = "bla")
25bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
26bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    @Test fun size() {
27bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        val cache = lruCache<String, TestData>(200, { k, (x) -> k.length * x.length })
28bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        cache.put("long", TestData())
29bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        assertEquals(cache.size(), 12)
30bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    }
31bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
32bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    @Test fun create() {
33bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        val cache = lruCache<String, TestData>(200, create = { key -> TestData("$key foo") })
34bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        assertEquals(cache.get("kung"), TestData("kung foo"))
35bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    }
36bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
37bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    @Test fun onEntryRemoved() {
38bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        var wasCalled = false
39bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton
40bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        val cache = lruCache<String, TestData>(200, onEntryRemoved = { _, _, _, _ ->
41bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton            wasCalled = true
42bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        })
43bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        val initial = TestData()
44bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        cache.put("a", initial)
45bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        cache.remove("a")
46bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton        assertTrue(wasCalled)
47bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton    }
48bf04c31bd91bc6188abef45f7d9c1fa4040e5633Jake Wharton}
49