1243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets/* 2243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * Copyright (C) 2017 The Android Open Source Project 3243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * 4243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * Licensed under the Apache License, Version 2.0 (the "License"); 5243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * you may not use this file except in compliance with the License. 6243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * You may obtain a copy of the License at 7243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * 8243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * http://www.apache.org/licenses/LICENSE-2.0 9243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * 10243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * Unless required by applicable law or agreed to in writing, software 11243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * distributed under the License is distributed on an "AS IS" BASIS, 12243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * See the License for the specific language governing permissions and 14243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets * limitations under the License. 15243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets */ 16243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 17243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetspackage android.arch.lifecycle; 18243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 19243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_CREATE; 20243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_DESTROY; 21243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_PAUSE; 22243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_RESUME; 23243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_START; 24243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.Event.ON_STOP; 25243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.State.CREATED; 26243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.State.INITIALIZED; 27243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.State.RESUMED; 28243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static android.arch.lifecycle.Lifecycle.State.STARTED; 29243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 30243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static org.mockito.Mockito.mock; 31243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static org.mockito.Mockito.reset; 32243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport static org.mockito.Mockito.when; 33243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 34243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.junit.Before; 35243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.junit.Test; 36243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.junit.runner.RunWith; 37243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.junit.runners.JUnit4; 38243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.mockito.InOrder; 39243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetsimport org.mockito.Mockito; 40243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 41243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets@RunWith(JUnit4.class) 42243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinetspublic class FullLifecycleObserverTest { 43243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets private LifecycleOwner mOwner; 44243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets private Lifecycle mLifecycle; 45243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 46243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets @Before 47243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets public void initMocks() { 48243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets mOwner = mock(LifecycleOwner.class); 49243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets mLifecycle = mock(Lifecycle.class); 50243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mOwner.getLifecycle()).thenReturn(mLifecycle); 51243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets } 52243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 53243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets @Test 54243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets public void eachEvent() { 55243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets FullLifecycleObserver obj = mock(FullLifecycleObserver.class); 56243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets FullLifecycleObserverAdapter observer = new FullLifecycleObserverAdapter(obj); 57243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(CREATED); 58243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 59243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_CREATE); 60243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets InOrder inOrder = Mockito.inOrder(obj); 61243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onCreate(mOwner); 62243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 63243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 64243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(STARTED); 65243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_START); 66243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onStart(mOwner); 67243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 68243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 69243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(RESUMED); 70243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_RESUME); 71243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onResume(mOwner); 72243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 73243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 74243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(STARTED); 75243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_PAUSE); 76243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onPause(mOwner); 77243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 78243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 79243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(CREATED); 80243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_STOP); 81243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onStop(mOwner); 82243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 83243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets 84243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets when(mLifecycle.getCurrentState()).thenReturn(INITIALIZED); 85243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets observer.onStateChanged(mOwner, ON_DESTROY); 86243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets inOrder.verify(obj).onDestroy(mOwner); 87243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets reset(obj); 88243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets } 89243ca804f85781c982eeeb6f824c9b2bb37cf013Sergey Vasilinets} 90