1 /* 2 * Copyright (C) 2024 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 package com.android.avatatpicker.tests 17 18 import android.content.Context 19 import android.content.Intent 20 import android.net.Uri 21 import androidx.test.platform.app.InstrumentationRegistry 22 import com.android.avatarpicker.domain.getTempPNG 23 import com.android.avatarpicker.ui.ResultHandler 24 import com.android.avatarpicker.ui.details.items.SelectableType 25 import com.android.avatarpicker.ui.details.items.UiState 26 import kotlinx.coroutines.flow.MutableStateFlow 27 import kotlinx.coroutines.flow.asStateFlow 28 29 class FakeResultHandler : ResultHandler { 30 private val _uiState: MutableStateFlow<UiState> = MutableStateFlow(UiState.None()) 31 override val uiState = _uiState.asStateFlow() 32 onSelectnull33 override fun <T : SelectableType> onSelect(result: T) { 34 getSelected()?.isSelected = false 35 result.isSelected = true 36 _uiState.value = UiState.Success(result) 37 } 38 getSelectednull39 override fun getSelected() = (uiState.value as? UiState.Success<*>)?.result 40 41 override fun onLoading() { 42 _uiState.value = UiState.Loading() 43 } 44 onErrornull45 override fun onError(exception: Exception) { 46 _uiState.value = UiState.Error(exception) 47 } 48 unselectnull49 override fun unselect() { 50 _uiState.value = UiState.None() 51 } 52 toResultIntentnull53 override fun toResultIntent(context: Context): Intent { 54 return Intent() 55 } 56 getContentUrinull57 override fun getContentUri(): Uri { 58 return Uri.EMPTY 59 } 60 getTempFilenull61 override fun getTempFile() = 62 InstrumentationRegistry.getInstrumentation().getContext().getTempPNG("tests.png") 63 64 }