@@ -17,6 +17,7 @@ import android.view.View
1717import android.view.Window
1818import android.view.WindowInsets
1919import androidx.annotation.RequiresApi
20+ import com.facebook.react.bridge.WritableMap
2021import com.facebook.testutils.shadows.ShadowNativeLoader
2122import com.facebook.testutils.shadows.ShadowNativeMap
2223import com.facebook.testutils.shadows.ShadowReadableNativeMap
@@ -54,19 +55,33 @@ class DisplayMetricsHolderTest {
5455 fun setUp () {
5556 context = RuntimeEnvironment .getApplication()
5657 displayMetrics = context.resources.displayMetrics
58+ DisplayMetricsHolder .setWindowDisplayMetrics(null )
5759 DisplayMetricsHolder .setScreenDisplayMetrics(null )
5860 }
5961
6062 @After
6163 fun tearDown () {
64+ DisplayMetricsHolder .setWindowDisplayMetrics(null )
6265 DisplayMetricsHolder .setScreenDisplayMetrics(null )
6366 }
6467
68+ @Test(expected = IllegalStateException ::class )
69+ fun getWindowDisplayMetrics_failsIfDisplayMetricsIsNotInitialized () {
70+ DisplayMetricsHolder .getWindowDisplayMetrics()
71+ }
72+
6573 @Test(expected = IllegalStateException ::class )
6674 fun getScreenDisplayMetrics_failsIfDisplayMetricsIsNotInitialized () {
6775 DisplayMetricsHolder .getScreenDisplayMetrics()
6876 }
6977
78+ @Test
79+ fun setAndGetWindowDisplayMetrics_returnsSetValue () {
80+ DisplayMetricsHolder .setWindowDisplayMetrics(displayMetrics)
81+ val result = DisplayMetricsHolder .getWindowDisplayMetrics()
82+ assertThat(result).isEqualTo(displayMetrics)
83+ }
84+
7085 @Test
7186 fun setAndGetScreenDisplayMetrics_returnsSetValue () {
7287 DisplayMetricsHolder .setScreenDisplayMetrics(displayMetrics)
@@ -77,19 +92,46 @@ class DisplayMetricsHolderTest {
7792 @Test
7893 fun initDisplayMetrics_setsMetrics () {
7994 DisplayMetricsHolder .initDisplayMetrics(context)
95+ assertThat(DisplayMetricsHolder .getWindowDisplayMetrics()).isNotNull()
8096 assertThat(DisplayMetricsHolder .getScreenDisplayMetrics()).isNotNull()
8197 }
8298
8399 @Test
84100 fun initDisplayMetricsIfNotInitialized_onlyInitializesOnce () {
85101 DisplayMetricsHolder .initDisplayMetricsIfNotInitialized(context)
102+ val firstWindow = DisplayMetricsHolder .getWindowDisplayMetrics()
86103 val firstScreen = DisplayMetricsHolder .getScreenDisplayMetrics()
87104 // Should not reinitialize
88105 DisplayMetricsHolder .initDisplayMetricsIfNotInitialized(context)
106+ val secondWindow = DisplayMetricsHolder .getWindowDisplayMetrics()
89107 val secondScreen = DisplayMetricsHolder .getScreenDisplayMetrics()
108+ assertThat(secondWindow).isEqualTo(firstWindow)
90109 assertThat(secondScreen).isEqualTo(firstScreen)
91110 }
92111
112+ @Test(expected = IllegalStateException ::class )
113+ fun getDisplayMetricsWritableMap_failsIfNotInitialized () {
114+ DisplayMetricsHolder .getDisplayMetricsWritableMap(1.0 )
115+ }
116+
117+ @Test
118+ fun getDisplayMetricsWritableMap_returnsCorrectMap () {
119+ // Use the official initialization method to ensure both metrics are set
120+ DisplayMetricsHolder .initDisplayMetrics(context)
121+ val map: WritableMap = DisplayMetricsHolder .getDisplayMetricsWritableMap(1.0 )
122+ assertThat(map.hasKey(" windowPhysicalPixels" )).isTrue()
123+ assertThat(map.hasKey(" screenPhysicalPixels" )).isTrue()
124+ val windowMap = map.getMap(" windowPhysicalPixels" )
125+ val screenMap = map.getMap(" screenPhysicalPixels" )
126+ checkNotNull(windowMap)
127+ checkNotNull(screenMap)
128+ assertThat(windowMap.hasKey(" width" )).isTrue()
129+ assertThat(windowMap.hasKey(" height" )).isTrue()
130+ assertThat(windowMap.hasKey(" scale" )).isTrue()
131+ assertThat(windowMap.hasKey(" fontScale" )).isTrue()
132+ assertThat(windowMap.hasKey(" densityDpi" )).isTrue()
133+ }
134+
93135 @Test
94136 @RequiresApi(30 )
95137 fun getEncodedScreenSizeWithoutVerticalInsets_returnsEncodedValue () {
@@ -162,6 +204,7 @@ class DisplayMetricsHolderTest {
162204 DisplayMetricsHolder .initDisplayMetrics(mockContext)
163205
164206 // Metrics should still be set from resource display metrics
207+ assertThat(DisplayMetricsHolder .getWindowDisplayMetrics()).isNotNull()
165208 assertThat(DisplayMetricsHolder .getScreenDisplayMetrics()).isNotNull()
166209 }
167210}
0 commit comments