From 72cfe1a17a62fc1727d62a02b1f6376f5ec378cd Mon Sep 17 00:00:00 2001 From: Raff Tsai Date: Tue, 7 Aug 2018 16:24:16 +0800 Subject: [PATCH] Fix failed test cases It looks like robolectric need some change to fit current support library or framework. We add shadow to replace some crashed function. Fixes: 111941314 Test: make RunSettingsRoboTests Change-Id: If5afadf3c602fc2aa961a04f7022079c43e99c63 --- .../RemoteDeviceNameDialogFragmentTest.java | 12 +++--- .../testutils/shadow/ShadowDynamicLayout.java | 42 +++++++++++++++++++ 2 files changed, 47 insertions(+), 7 deletions(-) create mode 100644 tests/robotests/src/com/android/settings/testutils/shadow/ShadowDynamicLayout.java diff --git a/tests/robotests/src/com/android/settings/bluetooth/RemoteDeviceNameDialogFragmentTest.java b/tests/robotests/src/com/android/settings/bluetooth/RemoteDeviceNameDialogFragmentTest.java index c9edc001264..df3ffbbb51a 100644 --- a/tests/robotests/src/com/android/settings/bluetooth/RemoteDeviceNameDialogFragmentTest.java +++ b/tests/robotests/src/com/android/settings/bluetooth/RemoteDeviceNameDialogFragmentTest.java @@ -17,6 +17,7 @@ package com.android.settings.bluetooth; import static com.google.common.truth.Truth.assertThat; + import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.doReturn; @@ -29,15 +30,17 @@ import android.content.DialogInterface; import android.widget.Button; import android.widget.EditText; +import androidx.appcompat.app.AlertDialog; + import com.android.settings.R; import com.android.settings.testutils.FakeFeatureFactory; import com.android.settings.testutils.SettingsRobolectricTestRunner; import com.android.settings.testutils.shadow.SettingsShadowResourcesImpl; +import com.android.settings.testutils.shadow.ShadowDynamicLayout; import com.android.settingslib.bluetooth.CachedBluetoothDevice; import com.android.settingslib.testutils.FragmentTestUtils; import org.junit.Before; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Answers; @@ -46,10 +49,8 @@ import org.mockito.MockitoAnnotations; import org.robolectric.annotation.Config; import org.robolectric.shadows.ShadowDialog; -import androidx.appcompat.app.AlertDialog; - @RunWith(SettingsRobolectricTestRunner.class) -@Config(shadows = SettingsShadowResourcesImpl.class) +@Config(shadows = {SettingsShadowResourcesImpl.class, ShadowDynamicLayout.class}) public class RemoteDeviceNameDialogFragmentTest { @Mock(answer = Answers.RETURNS_DEEP_STUBS) @@ -81,7 +82,6 @@ public class RemoteDeviceNameDialogFragmentTest { } @Test - @Ignore public void deviceNameDisplayIsCorrect() { String deviceName = "ABC Corp Headphones"; AlertDialog dialog = startDialog(deviceName); @@ -97,7 +97,6 @@ public class RemoteDeviceNameDialogFragmentTest { } @Test - @Ignore public void deviceNameEditSucceeds() { String deviceNameInitial = "ABC Corp Headphones"; String deviceNameModified = "My Headphones"; @@ -120,7 +119,6 @@ public class RemoteDeviceNameDialogFragmentTest { } @Test - @Ignore public void deviceNameEditThenCancelDoesntRename() { String deviceNameInitial = "ABC Corp Headphones"; String deviceNameModified = "My Headphones"; diff --git a/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDynamicLayout.java b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDynamicLayout.java new file mode 100644 index 00000000000..d3741bb10ab --- /dev/null +++ b/tests/robotests/src/com/android/settings/testutils/shadow/ShadowDynamicLayout.java @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2018 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 com.android.settings.testutils.shadow; + +import android.text.DynamicLayout; +import android.text.Layout.Directions; + +import org.robolectric.annotation.Implementation; +import org.robolectric.annotation.Implements; + +@Implements(DynamicLayout.class) +public class ShadowDynamicLayout { + + @Implementation + public int getLineTop(int line) { + return 0; + } + + @Implementation + public int getLineStart(int line) { + return 0; + } + + @Implementation + public final Directions getLineDirections(int line) { + return new Directions(new int[]{0, 1}); + } +} \ No newline at end of file