[go: nahoru, domu]

Fix WithConstraints test failing on API 30

For some reasons the android view first measures with one constraints and then remeasures with an another one. This is technically valid case and our test shouldn't be sensitive to it. Updated the test to work correctly in this case

Fixes: 150848549
Test: verified the test is not failing anymore
Change-Id: I7180d07fb5b8d55f1685b03638fad2972ab0c2e1
diff --git a/ui/ui-framework/src/androidTest/java/androidx/ui/core/test/WithConstraintsTest.kt b/ui/ui-framework/src/androidTest/java/androidx/ui/core/test/WithConstraintsTest.kt
index 34a6932..3b3ebc0 100644
--- a/ui/ui-framework/src/androidTest/java/androidx/ui/core/test/WithConstraintsTest.kt
+++ b/ui/ui-framework/src/androidTest/java/androidx/ui/core/test/WithConstraintsTest.kt
@@ -33,7 +33,6 @@
 import androidx.ui.core.Modifier
 import androidx.ui.core.OnPositioned
 import androidx.ui.core.Ref
-import androidx.ui.core.TextFieldDelegate.Companion.layout
 import androidx.ui.core.WithConstraints
 import androidx.ui.core.draw
 import androidx.ui.core.setContent
@@ -515,26 +514,37 @@
             activity.setContent {
                 assertEquals(1, outerComposeLatch.count)
                 outerComposeLatch.countDown()
-                Layout(children = {
-                    WithConstraints { _, _ ->
-                        assertEquals(1, innerComposeLatch.count)
-                        innerComposeLatch.countDown()
-                        Layout(children = emptyContent()) { _, _, _ ->
-                            assertEquals(1, innerMeasureLatch.count)
-                            innerMeasureLatch.countDown()
-                            layout(100.ipx, 100.ipx) {
-                                assertEquals(1, innerLayoutLatch.count)
-                                innerLayoutLatch.countDown()
+                val children = @Composable {
+                    Layout(children = {
+                        WithConstraints { _, _ ->
+                            assertEquals(1, innerComposeLatch.count)
+                            innerComposeLatch.countDown()
+                            Layout(children = emptyContent()) { _, _, _ ->
+                                assertEquals(1, innerMeasureLatch.count)
+                                innerMeasureLatch.countDown()
+                                layout(100.ipx, 100.ipx) {
+                                    assertEquals(1, innerLayoutLatch.count)
+                                    innerLayoutLatch.countDown()
+                                }
                             }
                         }
+                    }) { measurables, constraints, _ ->
+                        assertEquals(1, outerMeasureLatch.count)
+                        outerMeasureLatch.countDown()
+                        layout(100.ipx, 100.ipx) {
+                            assertEquals(1, outerLayoutLatch.count)
+                            outerLayoutLatch.countDown()
+                            measurables.forEach { it.measure(constraints).place(0.ipx, 0.ipx) }
+                        }
                     }
-                }) { measurables, constraints, _ ->
-                    assertEquals(1, outerMeasureLatch.count)
-                    outerMeasureLatch.countDown()
+                }
+
+                Layout(children) { measurables, _, _ ->
                     layout(100.ipx, 100.ipx) {
-                        assertEquals(1, outerLayoutLatch.count)
-                        outerLayoutLatch.countDown()
-                        measurables.forEach { it.measure(constraints).place(0.ipx, 0.ipx) }
+                        // we fix the constraints used by children so if the constraints given
+                        // by the android view will change it would not affect the test
+                        val constraints = Constraints(maxWidth = 100.ipx, maxHeight = 100.ipx)
+                        measurables.first().measure(constraints).place(0.ipx, 0.ipx)
                     }
                 }
             }