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