CTS test to ensure RelativeLayout alignBaseline works correctly

Bug: 22613599
Change-Id: Ib130c11c2f4684dafec06a68bab7765ec723be4d
diff --git a/tests/tests/widget/res/layout/relative_layout_baseline.xml b/tests/tests/widget/res/layout/relative_layout_baseline.xml
new file mode 100644
index 0000000..f4e9174
--- /dev/null
+++ b/tests/tests/widget/res/layout/relative_layout_baseline.xml
@@ -0,0 +1,67 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2015 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.
+-->
+
+<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_margin="5dp" >
+
+    <RelativeLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content" >
+
+        <Button
+            android:id="@+id/button1"
+            android:layout_alignParentTop="true"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="@string/relative_view1"
+            android:layout_alignBottom="@+id/button2" />
+        <Button
+            android:id="@+id/button2"
+            android:layout_alignParentTop="true"
+            android:layout_toRightOf="@id/button1"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="20dp"
+            android:text="@string/relative_view2" />
+        <Button
+            android:id="@+id/button3"
+            android:layout_alignTop="@+id/button4"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:layout_alignBaseline="@+id/button4"
+            android:text="@string/relative_view3" />
+        <Button
+            android:id="@+id/button4"
+            android:layout_below="@id/button2"
+            android:layout_toRightOf="@id/button3"
+            android:layout_width="150dp"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="10dp"
+            android:text="@string/relative_view4" />
+
+        <TextView
+            android:id="@+id/textView"
+            android:layout_below="@+id/button3"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content" />
+
+    </RelativeLayout>
+
+</ScrollView>
\ No newline at end of file
diff --git a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
index aae069a..b228ca6 100644
--- a/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
+++ b/tests/tests/widget/src/android/widget/cts/RelativeLayoutTest.java
@@ -329,6 +329,30 @@
         assertEquals("Get missing rule", 0, p.getRule(RelativeLayout.ABOVE));
     }
 
+    /**
+     * Tests to prevent regressions in baseline alignment.
+     */
+    public void testBaselineAlignment() {
+        mActivity.runOnUiThread(new Runnable() {
+            public void run() {
+                mActivity.setContentView(R.layout.relative_layout_baseline);
+            }
+        });
+        getInstrumentation().waitForIdleSync();
+
+        View button = mActivity.findViewById(R.id.button1);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button2);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button3);
+        assertTrue(button.getHeight() > 0);
+
+        button = mActivity.findViewById(R.id.button4);
+        assertTrue(button.getHeight() > 0);
+    }
+
     private class MyRelativeLayout extends RelativeLayout {
         public MyRelativeLayout(Context context) {
             super(context);