134f575b4b17fe635684e76e02685978477538622Florina Muntenescu/*
234f575b4b17fe635684e76e02685978477538622Florina Muntenescu * Copyright (C) 2017 The Android Open Source Project
334f575b4b17fe635684e76e02685978477538622Florina Muntenescu *
434f575b4b17fe635684e76e02685978477538622Florina Muntenescu * Licensed under the Apache License, Version 2.0 (the "License");
534f575b4b17fe635684e76e02685978477538622Florina Muntenescu * you may not use this file except in compliance with the License.
634f575b4b17fe635684e76e02685978477538622Florina Muntenescu * You may obtain a copy of the License at
734f575b4b17fe635684e76e02685978477538622Florina Muntenescu *
834f575b4b17fe635684e76e02685978477538622Florina Muntenescu *      http://www.apache.org/licenses/LICENSE-2.0
934f575b4b17fe635684e76e02685978477538622Florina Muntenescu *
1034f575b4b17fe635684e76e02685978477538622Florina Muntenescu * Unless required by applicable law or agreed to in writing, software
1134f575b4b17fe635684e76e02685978477538622Florina Muntenescu * distributed under the License is distributed on an "AS IS" BASIS,
1234f575b4b17fe635684e76e02685978477538622Florina Muntenescu * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
1334f575b4b17fe635684e76e02685978477538622Florina Muntenescu * See the License for the specific language governing permissions and
1434f575b4b17fe635684e76e02685978477538622Florina Muntenescu * limitations under the License.
1534f575b4b17fe635684e76e02685978477538622Florina Muntenescu */
1634f575b4b17fe635684e76e02685978477538622Florina Muntenescu
17bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viverettepackage androidx.room.integration.kotlintestapp.test
1834f575b4b17fe635684e76e02685978477538622Florina Muntenescu
19bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.lifecycle.LiveData
20bdc4c86d3dff74f6634a38e2f7b316b0e823a2c8Alan Viveretteimport androidx.lifecycle.Observer
2134f575b4b17fe635684e76e02685978477538622Florina Muntenescu
2234f575b4b17fe635684e76e02685978477538622Florina Muntenescuobject LiveDataTestUtil {
2334f575b4b17fe635684e76e02685978477538622Florina Muntenescu
2434f575b4b17fe635684e76e02685978477538622Florina Muntenescu    @Throws(InterruptedException::class)
2534f575b4b17fe635684e76e02685978477538622Florina Muntenescu    fun <T> getValue(liveData: LiveData<T>): T {
2634f575b4b17fe635684e76e02685978477538622Florina Muntenescu        val data = arrayOfNulls<Any>(1)
2734f575b4b17fe635684e76e02685978477538622Florina Muntenescu        val observer = object : Observer<T> {
2834f575b4b17fe635684e76e02685978477538622Florina Muntenescu            override fun onChanged(o: T?) {
2934f575b4b17fe635684e76e02685978477538622Florina Muntenescu                data[0] = o
3034f575b4b17fe635684e76e02685978477538622Florina Muntenescu                liveData.removeObserver(this)
3134f575b4b17fe635684e76e02685978477538622Florina Muntenescu            }
3234f575b4b17fe635684e76e02685978477538622Florina Muntenescu        }
3334f575b4b17fe635684e76e02685978477538622Florina Muntenescu        liveData.observeForever(observer)
3434f575b4b17fe635684e76e02685978477538622Florina Muntenescu
3534f575b4b17fe635684e76e02685978477538622Florina Muntenescu        return data[0] as T
3634f575b4b17fe635684e76e02685978477538622Florina Muntenescu    }
3734f575b4b17fe635684e76e02685978477538622Florina Muntenescu}
38