[go: nahoru, domu]

Add sizes tests for drawer

This CL adds tests for drawer for testing offsets in different states
and main material-specified sizes. There aren't tests for animations and
touches yet, as there's no infrastructure.

Bug: 113859843
Test: This is tests
Change-Id: Ic8b05c0e5619bee76f14872848463d175d706a85
diff --git a/ui/material/src/androidTest/java/androidx/ui/material/DrawerTest.kt b/ui/material/src/androidTest/java/androidx/ui/material/DrawerTest.kt
new file mode 100644
index 0000000..25cadc9
--- /dev/null
+++ b/ui/material/src/androidTest/java/androidx/ui/material/DrawerTest.kt
@@ -0,0 +1,136 @@
+/*
+ * Copyright 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package androidx.ui.material
+
+import androidx.compose.composer
+import androidx.test.filters.MediumTest
+import androidx.ui.core.OnPositioned
+import androidx.ui.core.PxPosition
+import androidx.ui.core.PxSize
+import androidx.ui.core.dp
+import androidx.ui.core.round
+import androidx.ui.core.withDensity
+import androidx.ui.layout.Container
+import androidx.ui.test.createComposeRule
+import com.google.common.truth.Truth
+import org.junit.Rule
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.JUnit4
+import kotlin.math.roundToInt
+
+@MediumTest
+@RunWith(JUnit4::class)
+class DrawerTest {
+
+    @get:Rule
+    val composeTestRule = createComposeRule()
+
+    @Test
+    fun modalDrawer_testOffset_whenOpened() {
+        var position: PxPosition? = null
+        composeTestRule.setMaterialContent {
+            ModalDrawer(DrawerState.Opened, {}) {
+                Container(expanded = true) {
+                    OnPositioned { coords ->
+                        position = coords.localToGlobal(PxPosition.Origin)
+                    }
+                }
+            }
+        }
+        Truth.assertThat(position!!.x.value).isEqualTo(0f)
+    }
+
+    @Test
+    fun modalDrawer_testOffset_whenClosed() {
+        var position: PxPosition? = null
+        composeTestRule.setMaterialContent {
+            ModalDrawer(DrawerState.Closed, {}) {
+                Container(expanded = true) {
+                    OnPositioned { coords ->
+                        position = coords.localToGlobal(PxPosition.Origin)
+                    }
+                }
+            }
+        }
+        val width = composeTestRule.displayMetrics.widthPixels
+        Truth.assertThat(position!!.x.round().value).isEqualTo(-width)
+    }
+
+    @Test
+    fun modalDrawer_testEndPadding_whenOpened() {
+        var size: PxSize? = null
+        composeTestRule.setMaterialContent {
+            ModalDrawer(DrawerState.Opened, {}) {
+                Container(expanded = true) {
+                    OnPositioned { coords ->
+                        size = coords.size
+                    }
+                }
+            }
+        }
+
+        val width = composeTestRule.displayMetrics.widthPixels
+        withDensity(composeTestRule.density) {
+            Truth.assertThat(size!!.width.round().value)
+                .isEqualTo(width - 56.dp.toPx().round().value)
+        }
+    }
+
+    @Test
+    fun bottomDrawer_testOffset_whenOpened() {
+        var position: PxPosition? = null
+        composeTestRule.setMaterialContent {
+            BottomDrawer(DrawerState.Opened, {}) {
+                Container(expanded = true) {
+                    OnPositioned { coords ->
+                        position = coords.localToGlobal(PxPosition.Origin)
+                    }
+                }
+            }
+        }
+        val height = composeTestRule.displayMetrics.heightPixels
+        Truth.assertThat(position!!.y.round().value).isEqualTo((height / 2f).roundToInt())
+    }
+
+    @Test
+    fun bottomDrawer_testOffset_whenClosed() {
+        var position: PxPosition? = null
+        composeTestRule.setMaterialContent {
+            BottomDrawer(DrawerState.Closed, {}) {
+                Container(expanded = true) {
+                    OnPositioned { coords ->
+                        position = coords.localToGlobal(PxPosition.Origin)
+                    }
+                }
+            }
+        }
+        val height = composeTestRule.displayMetrics.heightPixels
+        Truth.assertThat(position!!.y.round().value).isEqualTo(height)
+    }
+
+    @Test
+    fun staticDrawer_testWidth_whenOpened() {
+        composeTestRule
+            .setMaterialContentAndTestSizes {
+                StaticDrawer {
+                    Container(expanded = true) {}
+                }
+            }
+            .assertWidthEqualsTo(256.dp)
+    }
+}