@@ -9,6 +9,7 @@ package com.facebook.react.views.image
99
1010import android.graphics.Color
1111import android.util.DisplayMetrics
12+ import com.facebook.common.logging.FLog
1213import com.facebook.drawee.backends.pipeline.Fresco
1314import com.facebook.drawee.drawable.ScalingUtils
1415import com.facebook.react.bridge.Arguments
@@ -19,11 +20,16 @@ import com.facebook.react.bridge.JavaOnlyMap
1920import com.facebook.react.bridge.ReactTestHelper.createMockCatalystInstance
2021import com.facebook.react.bridge.WritableArray
2122import com.facebook.react.bridge.WritableMap
23+ import com.facebook.react.common.ReactConstants
2224import com.facebook.react.internal.featureflags.ReactNativeFeatureFlagsForTests
2325import com.facebook.react.uimanager.DisplayMetricsHolder
2426import com.facebook.react.uimanager.ReactStylesDiffMap
2527import com.facebook.react.uimanager.ThemedReactContext
2628import com.facebook.react.util.RNLog
29+ import com.facebook.react.views.image.ImageResizeMethod
30+ import com.facebook.react.views.image.ImageResizeMode
31+ import com.facebook.react.views.image.ReactImageView
32+ import com.facebook.react.views.image.ScaleTypeStartInside
2733import com.facebook.react.views.imagehelper.ImageSource
2834import com.facebook.soloader.SoLoader
2935import org.assertj.core.api.Assertions.assertThat
@@ -34,7 +40,10 @@ import org.junit.runner.RunWith
3440import org.mockito.MockedStatic
3541import org.mockito.Mockito.any
3642import org.mockito.Mockito.anyString
43+ import org.mockito.Mockito.mock
3744import org.mockito.Mockito.mockStatic
45+ import org.mockito.Mockito.reset
46+ import org.mockito.Mockito.verify
3847import org.robolectric.RobolectricTestRunner
3948import org.robolectric.RuntimeEnvironment
4049
@@ -113,6 +122,70 @@ class ReactImagePropertyTest {
113122 viewManager.setSource(view, sources)
114123 view.maybeUpdateView()
115124 assertThat(ImageSource .getTransparentBitmapImageSource(view.context))
116- .isEqualTo(view.imageSource)
125+ .isEqualTo(view.imageSource)
126+ }
127+
128+ @Test
129+ fun testSetResizeMode () {
130+ val viewManager = ReactImageManager ()
131+ val mockView = mock(ReactImageView ::class .java)
132+
133+ viewManager.setResizeMode(mockView, null )
134+ verify(mockView).setScaleType(ScalingUtils .ScaleType .CENTER_CROP )
135+ reset(mockView)
136+
137+ viewManager.setResizeMode(mockView, " cover" )
138+ verify(mockView).setScaleType(ScalingUtils .ScaleType .CENTER_CROP )
139+ reset(mockView)
140+
141+ viewManager.setResizeMode(mockView, " contain" )
142+ verify(mockView).setScaleType(ScalingUtils .ScaleType .FIT_CENTER )
143+ reset(mockView)
144+
145+ viewManager.setResizeMode(mockView, " stretch" )
146+ verify(mockView).setScaleType(ScalingUtils .ScaleType .FIT_XY )
147+ reset(mockView)
148+
149+ viewManager.setResizeMode(mockView, " repeat" )
150+ verify(mockView).setScaleType(ScaleTypeStartInside .INSTANCE )
151+ reset(mockView)
152+
153+ viewManager.setResizeMode(mockView, " center" )
154+ verify(mockView).setScaleType(ScalingUtils .ScaleType .CENTER_INSIDE )
155+ reset(mockView)
156+
157+ viewManager.setResizeMode(mockView, " invalid" )
158+ verify(mockView).setScaleType(ScalingUtils .ScaleType .CENTER_CROP )
159+ }
160+
161+ @Test
162+ fun testResizeMethod () {
163+ val viewManager = ReactImageManager ()
164+ val mockView = mock(ReactImageView ::class .java)
165+ val flogMock = mockStatic(FLog ::class .java)
166+
167+ viewManager.setResizeMethod(mockView, null )
168+ verify(mockView).setResizeMethod(ImageResizeMethod .AUTO )
169+ reset(mockView)
170+
171+ viewManager.setResizeMethod(mockView, " auto" )
172+ verify(mockView).setResizeMethod(ImageResizeMethod .AUTO )
173+ reset(mockView)
174+
175+ viewManager.setResizeMethod(mockView, " resize" )
176+ verify(mockView).setResizeMethod(ImageResizeMethod .RESIZE )
177+ reset(mockView)
178+
179+ viewManager.setResizeMethod(mockView, " scale" )
180+ verify(mockView).setResizeMethod(ImageResizeMethod .SCALE )
181+ reset(mockView)
182+
183+ viewManager.setResizeMethod(mockView, " none" )
184+ verify(mockView).setResizeMethod(ImageResizeMethod .NONE )
185+ reset(mockView)
186+
187+ viewManager.setResizeMethod(mockView, " invalid" )
188+ verify(mockView).setResizeMethod(ImageResizeMethod .AUTO )
189+ flogMock.verify { FLog .w(ReactConstants .TAG , " Invalid resize method: 'invalid'" ) }
117190 }
118191}
0 commit comments