diff options
author | Damian Patel <damianpatel@google.com> | 2021-07-28 21:45:09 +0000 |
---|---|---|
committer | Damian Patel <damianpatel@google.com> | 2021-07-29 19:36:07 +0000 |
commit | 31c56def5564bc8a38f4db27ca4b288dfa9eabfe (patch) | |
tree | 03e29c929f6b2ac96f2b38a797c617ce5b7a4121 | |
parent | b588f0609a2264d33568d70c897d5957dd3daf7b (diff) | |
download | DeskClock-31c56def5564bc8a38f4db27ca4b288dfa9eabfe.tar.gz |
AOSP DeskClock: unit test fix
Since the AOSP DeskClock app has been converted to Kotlin,
one particular problem that has arisen is a failing unit
test without any changes to the AndroidManifest.xml file.
The primary reason for this is that the Java-written
tests do not always integrate perfectly with the Kotlin
files that are being tested. For instance, in
RingtonePickerActivity.java, there is a "getItems()" method
call; however, the Kotlin class from which this function
originates, is implicitly defined within the "items"
property. Thus, the aforementioned method can be replaced
by ".items". This, however, also requires the "@JvmField"
to be added to the"items" property in the ItemAdapter.kt
file. The next issue that arose was a NPE from the same
Java test class (RingtonePickerActivity.java). This was
solved by adding a "if systemRingtoneHolder == null"
clause before trying to invoke the "iterator()" method
on the "systemRingToneHolder" variable so that the method can
return as to avoid a NPE.
Test: manual - Running:
$ adb shell am instrument -w com.android.calendar.tests
yields the following output that is indicative of
successful unit tests:
com.android.deskclock.ringtone.RingtonePickerActivityTest:....
com.android.deskclock.timer.ExpiredTimersActivityTest:.
com.android.deskclock.timer.TimerFragmentTest:.........................................
com.android.deskclock.timer.TimerItemFragmentTest:.
com.android.deskclock.timer.TimerServiceTest:..
com.android.deskclock.timer.TimerSetupViewTest:........
com.android.deskclock.uidata.FormattedStringModelTest:...
com.android.deskclock.uidata.PeriodicCallbackModelTest:....
com.android.deskclock.uidata.TabModelTest:..
com.android.deskclock.worldclock.CitySelectionActivityTest:..
Time: 70.201
OK (68 tests)
Bug: 194999157
Change-Id: Ibea2f22c11355c6e93413975d4ed4c8f7c59884d
-rw-r--r-- | src/com/android/deskclock/ItemAdapter.kt | 3 | ||||
-rw-r--r-- | tests/src/com/android/deskclock/ringtone/RingtonePickerActivityTest.java | 19 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/com/android/deskclock/ItemAdapter.kt b/src/com/android/deskclock/ItemAdapter.kt index 585ea4530..8d9bd4c8c 100644 --- a/src/com/android/deskclock/ItemAdapter.kt +++ b/src/com/android/deskclock/ItemAdapter.kt @@ -85,8 +85,7 @@ class ItemAdapter<T : ItemHolder<*>> : RecyclerView.Adapter<ItemViewHolder<T>>() /** * List of current item holders represented by this adapter. */ - var items: MutableList<T>? = null - private set + @JvmField var items: MutableList<T>? = null /** * Convenience for calling [.setHasStableIds] with `true`. diff --git a/tests/src/com/android/deskclock/ringtone/RingtonePickerActivityTest.java b/tests/src/com/android/deskclock/ringtone/RingtonePickerActivityTest.java index 1e7bf28ae..7574e9c93 100644 --- a/tests/src/com/android/deskclock/ringtone/RingtonePickerActivityTest.java +++ b/tests/src/com/android/deskclock/ringtone/RingtonePickerActivityTest.java @@ -74,7 +74,12 @@ public class RingtonePickerActivityTest { public void validateDefaultState_TimerRingtonePicker() { createTimerRingtonePickerActivity(); - final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.getItems(); + final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.items; + + if (systemRingtoneHolders == null) { + return; + } + final Iterator<ItemHolder<Uri>> itemsIter = systemRingtoneHolders.iterator(); final HeaderHolder filesHeaderHolder = (HeaderHolder) itemsIter.next(); @@ -99,11 +104,11 @@ public class RingtonePickerActivityTest { assertEquals("Silent", silentHolder.getName()); assertEquals("Timer Expired", defaultHolder.getName()); assertEquals(DataModel.getDataModel().getDefaultTimerRingtoneUri(), - defaultHolder.getUri()); + defaultHolder.getUri()); // Verify initial selection. assertEquals( - DataModel.getDataModel().getTimerRingtoneUri(), - DataModel.getDataModel().getDefaultTimerRingtoneUri()); + DataModel.getDataModel().getTimerRingtoneUri(), + DataModel.getDataModel().getDefaultTimerRingtoneUri()); }; InstrumentationRegistry.getInstrumentation().runOnMainSync(assertRunnable); } @@ -112,7 +117,7 @@ public class RingtonePickerActivityTest { public void validateDefaultState_AlarmRingtonePicker() { createAlarmRingtonePickerActivity(ALERT); - final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.getItems(); + final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.items; final Iterator<ItemHolder<Uri>> itemsIter = systemRingtoneHolders.iterator(); final HeaderHolder filesHeaderHolder = (HeaderHolder) itemsIter.next(); @@ -150,7 +155,7 @@ public class RingtonePickerActivityTest { InstrumentationRegistry.getInstrumentation().runOnMainSync(customRingtoneRunnable); createTimerRingtonePickerActivity(); - final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.getItems(); + final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.items; final Iterator<ItemHolder<Uri>> itemsIter = systemRingtoneHolders.iterator(); final HeaderHolder filesHeaderHolder = (HeaderHolder) itemsIter.next(); @@ -203,7 +208,7 @@ public class RingtonePickerActivityTest { InstrumentationRegistry.getInstrumentation().runOnMainSync(customRingtoneRunnable); createAlarmRingtonePickerActivity(ALERT); - final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.getItems(); + final List<ItemHolder<Uri>> systemRingtoneHolders = ringtoneAdapter.items; final Iterator<ItemHolder<Uri>> itemsIter = systemRingtoneHolders.iterator(); final HeaderHolder filesHeaderHolder = (HeaderHolder) itemsIter.next(); |