191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets/* 291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * Copyright (C) 2017 The Android Open Source Project 391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * 491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * Licensed under the Apache License, Version 2.0 (the "License"); 591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * you may not use this file except in compliance with the License. 691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * You may obtain a copy of the License at 791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * 891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * http://www.apache.org/licenses/LICENSE-2.0 991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * 1091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * Unless required by applicable law or agreed to in writing, software 1191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * distributed under the License is distributed on an "AS IS" BASIS, 1291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * See the License for the specific language governing permissions and 1491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets * limitations under the License. 1591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets */ 1691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.lifecycle; 1891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport static androidx.lifecycle.Lifecycle.Event.ON_ANY; 20bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport static androidx.lifecycle.Lifecycle.Event.ON_RESUME; 2191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 2291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static org.hamcrest.CoreMatchers.instanceOf; 2391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static org.hamcrest.CoreMatchers.is; 2491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static org.hamcrest.MatcherAssert.assertThat; 2591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static org.mockito.Mockito.mock; 2691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static org.mockito.Mockito.when; 2791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 2891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static java.util.Arrays.asList; 2991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport static java.util.Collections.singletonList; 3091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 3191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport org.junit.Before; 3291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport org.junit.Test; 3391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport org.junit.runner.RunWith; 3491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport org.junit.runners.JUnit4; 3591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 3691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport java.util.ArrayList; 3791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetsimport java.util.List; 3891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 3991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets@RunWith(JUnit4.class) 4091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinetspublic class GeneratedAdaptersTest { 4191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 4291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets private LifecycleOwner mOwner; 4391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @SuppressWarnings("FieldCanBeLocal") 4491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets private Lifecycle mLifecycle; 4591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 4691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Before 4791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void initMocks() { 4891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mOwner = mock(LifecycleOwner.class); 4991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLifecycle = mock(Lifecycle.class); 5091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets when(mOwner.getLifecycle()).thenReturn(mLifecycle); 5191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 5291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 5391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets static class SimpleObserver implements LifecycleObserver { 5491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> mLog; 5591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 5691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets SimpleObserver(List<String> log) { 5791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog = log; 5891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 5991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 6091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) 6191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onCreate() { 6291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onCreate"); 6391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 6491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 6591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 6691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Test 6791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void testSimpleSingleGeneratedAdapter() { 6891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> actual = new ArrayList<>(); 6991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets GenericLifecycleObserver callback = Lifecycling.getCallback(new SimpleObserver(actual)); 7091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets callback.onStateChanged(mOwner, Lifecycle.Event.ON_CREATE); 7191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(callback, instanceOf(SingleGeneratedAdapterObserver.class)); 7291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(actual, is(singletonList("onCreate"))); 7391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 7491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 7591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets static class TestObserver implements LifecycleObserver { 7691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> mLog; 7791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 7891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets TestObserver(List<String> log) { 7991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog = log; 8091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 8191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 8291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_CREATE) 8391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onCreate() { 8491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onCreate"); 8591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 8691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 8791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(ON_ANY) 8891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onAny() { 8991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onAny"); 9091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 9191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 9291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 9391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Test 9491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void testOnAny() { 9591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> actual = new ArrayList<>(); 9691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets GenericLifecycleObserver callback = Lifecycling.getCallback(new TestObserver(actual)); 9791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets callback.onStateChanged(mOwner, Lifecycle.Event.ON_CREATE); 9891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(callback, instanceOf(SingleGeneratedAdapterObserver.class)); 9991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(actual, is(asList("onCreate", "onAny"))); 10091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 10191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 10291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets interface OnPauses extends LifecycleObserver { 10391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 10491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onPause(); 10591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 10691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 10791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onPause(LifecycleOwner owner); 10891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 10991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 11091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets interface OnPauseResume extends LifecycleObserver { 11191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_PAUSE) 11291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onPause(); 11391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 11491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) 11591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onResume(); 11691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 11791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 11891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets class Impl1 implements OnPauses, OnPauseResume { 11991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 12091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> mLog; 12191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 12291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets Impl1(List<String> log) { 12391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog = log; 12491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 12591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 12691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Override 12791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void onPause() { 12891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onPause_0"); 12991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 13091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 13191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Override 13291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void onResume() { 13391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onResume"); 13491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 13591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 13691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Override 13791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void onPause(LifecycleOwner owner) { 13891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onPause_1"); 13991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 14091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 14191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 14291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Test 14391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void testClashingInterfaces() { 14491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> actual = new ArrayList<>(); 14591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets GenericLifecycleObserver callback = Lifecycling.getCallback(new Impl1(actual)); 14691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets callback.onStateChanged(mOwner, Lifecycle.Event.ON_PAUSE); 14791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(callback, instanceOf(CompositeGeneratedAdaptersObserver.class)); 14891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(actual, is(asList("onPause_0", "onPause_1"))); 14991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets actual.clear(); 15091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets callback.onStateChanged(mOwner, Lifecycle.Event.ON_RESUME); 15191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(actual, is(singletonList("onResume"))); 15291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 15391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 15491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets class Base implements LifecycleObserver { 15591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 15691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> mLog; 15791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 15891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets Base(List<String> log) { 15991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog = log; 16091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 16191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 16291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(ON_ANY) 16391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onAny() { 16491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onAny_0"); 16591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 16691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 16791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(ON_ANY) 16891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onAny(LifecycleOwner owner) { 16991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onAny_1"); 17091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 17191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 17291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(Lifecycle.Event.ON_RESUME) 17391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onResume() { 17491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onResume"); 17591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 17691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 17791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 17891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets interface OnAny extends LifecycleObserver { 17991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(ON_ANY) 18091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onAny(); 18191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 18291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @OnLifecycleEvent(ON_ANY) 18391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets void onAny(LifecycleOwner owner, Lifecycle.Event event); 18491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 18591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 18691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets class Derived extends Base implements OnAny { 18791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets Derived(List<String> log) { 18891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets super(log); 18991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 19091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 19191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Override 19291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void onAny() { 19391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets super.onAny(); 19491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 19591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 19691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Override 19791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void onAny(LifecycleOwner owner, Lifecycle.Event event) { 19891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets mLog.add("onAny_2"); 19991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(event, is(ON_RESUME)); 20091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 20191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 20291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 20391df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets @Test 20491df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets public void testClashingClassAndInterface() { 20591df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets List<String> actual = new ArrayList<>(); 20691df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets GenericLifecycleObserver callback = Lifecycling.getCallback(new Derived(actual)); 20791df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets callback.onStateChanged(mOwner, Lifecycle.Event.ON_RESUME); 20891df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(callback, instanceOf(CompositeGeneratedAdaptersObserver.class)); 20991df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets assertThat(actual, is(asList("onResume", "onAny_0", "onAny_1", "onAny_2"))); 21091df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets } 21191df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets 21291df2cf6dacb3035df3f6b98e895cdc9f025553aSergey Vasilinets} 213