Skip to content

Commit c8ba3fe

Browse files
steelrooterfacebook-github-bot
authored andcommitted
Convert fbandroid/libraries/fresco/vito/core-java-impl/src/test/java/com/facebook/fresco/vito/core/impl to Kotlin
Reviewed By: parth-menon Differential Revision: D62125066 fbshipit-source-id: 178bcee17f4797cbdf75c2cb680ecb174a7b9adb
1 parent 5b1cb2a commit c8ba3fe

7 files changed

Lines changed: 529 additions & 597 deletions

File tree

‎vito/core-java-impl/build.gradle‎

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ dependencies {
3737
testImplementation TestDeps.junit
3838
testImplementation TestDeps.assertjCore
3939
testImplementation TestDeps.mockitoInline
40+
testImplementation TestDeps.mockitoKotlin
4041
testImplementation(TestDeps.robolectric) {
4142
exclude group: 'commons-logging', module: 'commons-logging'
4243
exclude group: 'org.apache.httpcomponents', module: 'httpclient'

‎vito/core-java-impl/src/test/java/com/facebook/fresco/vito/core/impl/FrescoDrawable2ImplTest.java‎

Lines changed: 0 additions & 147 deletions
This file was deleted.
Lines changed: 110 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,110 @@
1+
/*
2+
* Copyright (c) Meta Platforms, Inc. and affiliates.
3+
*
4+
* This source code is licensed under the MIT license found in the
5+
* LICENSE file in the root directory of this source tree.
6+
*/
7+
8+
package com.facebook.fresco.vito.core.impl
9+
10+
import android.graphics.drawable.Drawable
11+
import com.facebook.common.references.CloseableReference
12+
import com.facebook.fresco.vito.core.NopDrawable
13+
import com.facebook.imagepipeline.image.BaseCloseableImage
14+
import com.facebook.imagepipeline.image.CloseableImage
15+
import java.util.concurrent.CountDownLatch
16+
import java.util.concurrent.TimeUnit
17+
import org.junit.Assert
18+
import org.junit.Before
19+
import org.junit.Test
20+
import org.junit.runner.RunWith
21+
import org.mockito.kotlin.mock
22+
import org.robolectric.RobolectricTestRunner
23+
24+
@RunWith(RobolectricTestRunner::class)
25+
class FrescoDrawable2ImplTest {
26+
27+
private lateinit var frescoDrawable: FrescoDrawable2Impl
28+
private lateinit var latch: CountDownLatch
29+
private lateinit var closeableImage: CloseableImage
30+
private lateinit var closeableReference: CloseableReference<CloseableImage>
31+
32+
@Before
33+
fun setup() {
34+
frescoDrawable = FrescoDrawable2Impl(false, null, BaseVitoImagePerfListener())
35+
latch = CountDownLatch(1)
36+
closeableImage = DummyCloseableImage()
37+
closeableReference =
38+
CloseableReference.of(closeableImage) { value ->
39+
value.close()
40+
latch.countDown()
41+
}
42+
}
43+
44+
@Test
45+
fun testFrescoDrawable_whenDrawableClosed_thenReleaseActualImageReference() {
46+
frescoDrawable.setImage(NopDrawable, closeableReference)
47+
closeableReference.close()
48+
Assert.assertFalse(closeableImage.isClosed)
49+
frescoDrawable.close()
50+
Assert.assertNull(frescoDrawable.imageReference)
51+
Assert.assertTrue(closeableImage.isClosed)
52+
Assert.assertTrue(latch.await(3, TimeUnit.SECONDS))
53+
}
54+
55+
@Test
56+
fun testFrescoDrawable_whenNewImageDrawableSet_thenReleaseOldImageReference() {
57+
frescoDrawable.setImage(NopDrawable, closeableReference)
58+
closeableReference.close()
59+
val dummyCloseableImage = DummyCloseableImage()
60+
frescoDrawable.setImage(NopDrawable, CloseableReference.of(dummyCloseableImage))
61+
Assert.assertTrue(closeableImage.isClosed)
62+
Assert.assertTrue(latch.await(3, TimeUnit.SECONDS))
63+
}
64+
65+
@Test
66+
fun testFrescoDrawable_whenNewNullImageDrawableSet_thenReleaseOldImageReference() {
67+
frescoDrawable.setImage(NopDrawable, closeableReference)
68+
closeableReference.close()
69+
frescoDrawable.setImage(null, null)
70+
Assert.assertTrue(closeableImage.isClosed)
71+
Assert.assertTrue(latch.await(3, TimeUnit.SECONDS))
72+
}
73+
74+
@Test
75+
fun testFrescoDrawable_whenImageDrawableSet_thenReleaseImageReference() {
76+
frescoDrawable.setImage(NopDrawable, closeableReference)
77+
closeableReference.close()
78+
val drawable = mock<Drawable>()
79+
frescoDrawable.setImageDrawable(drawable)
80+
Assert.assertNull(frescoDrawable.imageReference)
81+
Assert.assertTrue(closeableImage.isClosed)
82+
Assert.assertTrue(latch.await(3, TimeUnit.SECONDS))
83+
}
84+
85+
@Test
86+
fun testFrescoDrawable_whenImageDrawableReset_thenReleaseImageReference() {
87+
frescoDrawable.setImage(NopDrawable, closeableReference)
88+
closeableReference.close()
89+
frescoDrawable.setImageDrawable(null)
90+
Assert.assertNull(frescoDrawable.imageReference)
91+
Assert.assertTrue(closeableImage.isClosed)
92+
Assert.assertTrue(latch.await(3, TimeUnit.SECONDS))
93+
}
94+
95+
internal class DummyCloseableImage : BaseCloseableImage() {
96+
private var closed = false
97+
98+
override fun getSizeInBytes(): Int = 0
99+
100+
override fun close() {
101+
closed = true
102+
}
103+
104+
override fun isClosed(): Boolean = closed
105+
106+
override fun getWidth(): Int = 0
107+
108+
override fun getHeight(): Int = 0
109+
}
110+
}

0 commit comments

Comments
 (0)