editor.set(ARTIST_INDEX, metadata.getAudioArtist()); editor.set(DURATION_INDEX, String.valueOf(metadata.getDuration())); mDiskLruCache.flush(); editor.commit(); if (BuildConfig.DEBUG) {
@Test public void cacheSingleValueOfSizeGreaterThanMaxSize() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "aaaaaaaaaaa", "a"); // size=12 cache.flush(); assertAbsent("a"); }
@Test public void cacheSingleEntryOfSizeGreaterThanMaxSize() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "aaaaa", "aaaaaa"); // size=11 cache.flush(); assertAbsent("a"); }
@Test public void editSinceEvicted() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "aa", "aaa"); // size 5 DiskLruCache.Value value = cache.get("a"); set("b", "bb", "bbb"); // size 5 set("c", "cc", "ccc"); // size 5; will evict 'A' cache.flush(); assertThat(value.edit()).isNull(); }
@Test public void editSinceEvictedAndRecreated() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "aa", "aaa"); // size 5 DiskLruCache.Value value = cache.get("a"); set("b", "bb", "bbb"); // size 5 set("c", "cc", "ccc"); // size 5; will evict 'A' set("a", "a", "aaaa"); // size 5; will evict 'B' cache.flush(); assertThat(value.edit()).isNull(); }
@Test public void evictOnUpdate() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "a", "aa"); // size 3 set("b", "b", "bb"); // size 3 set("c", "c", "cc"); // size 3 assertThat(cache.size()).isEqualTo(9); // Causing the size to grow to 11 should evict 'A'. set("b", "b", "bbbb"); cache.flush(); assertThat(cache.size()).isEqualTo(8); assertAbsent("a"); assertValue("b", "b", "bbbb"); assertValue("c", "c", "cc"); }
@Test public void journalFileIsPreferredOverBackupFile() throws Exception { DiskLruCache.Editor creator = cache.edit("k1"); creator.set(0, "ABC"); creator.set(1, "DE"); creator.commit(); cache.flush(); FileUtils.copyFile(journalFile, journalBkpFile); creator = cache.edit("k2"); creator.set(0, "F"); creator.set(1, "GH"); creator.commit(); cache.close(); assertThat(journalFile.exists()).isTrue(); assertThat(journalBkpFile.exists()).isTrue(); cache = DiskLruCache.open(cacheDir, appVersion, 2, Integer.MAX_VALUE); DiskLruCache.Value valueA = cache.get("k1"); assertThat(valueA.getString(0)).isEqualTo("ABC"); assertThat(valueA.getLength(0)).isEqualTo(3); assertThat(valueA.getString(1)).isEqualTo("DE"); assertThat(valueA.getLength(1)).isEqualTo(2); DiskLruCache.Value valueB = cache.get("k2"); assertThat(valueB.getString(0)).isEqualTo("F"); assertThat(valueB.getLength(0)).isEqualTo(1); assertThat(valueB.getString(1)).isEqualTo("GH"); assertThat(valueB.getLength(1)).isEqualTo(2); assertThat(journalBkpFile.exists()).isFalse(); assertThat(journalFile.exists()).isTrue(); }
@Test public void evictionHonorsLruFromCurrentSession() throws Exception { cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("a", "a", "a"); set("b", "b", "b"); set("c", "c", "c"); set("d", "d", "d"); set("e", "e", "e"); cache.get("b"); // 'B' is now least recently used. // Causing the size to grow to 12 should evict 'A'. set("f", "f", "f"); // Causing the size to grow to 12 should evict 'C'. set("g", "g", "g"); cache.flush(); assertThat(cache.size()).isEqualTo(10); assertAbsent("a"); assertValue("b", "b", "b"); assertAbsent("c"); assertValue("d", "d", "d"); assertValue("e", "e", "e"); assertValue("f", "f", "f"); }
@Test public void evictionHonorsLruFromPreviousSession() throws Exception { set("a", "a", "a"); set("b", "b", "b"); set("c", "c", "c"); set("d", "d", "d"); set("e", "e", "e"); set("f", "f", "f"); cache.get("b"); // 'B' is now least recently used. assertThat(cache.size()).isEqualTo(12); cache.close(); cache = DiskLruCache.open(cacheDir, appVersion, 2, 10); set("g", "g", "g"); cache.flush(); assertThat(cache.size()).isEqualTo(10); assertAbsent("a"); assertValue("b", "b", "b"); assertAbsent("c"); assertValue("d", "d", "d"); assertValue("e", "e", "e"); assertValue("f", "f", "f"); assertValue("g", "g", "g"); }