blob: 77c837b803af57283ef08edda842321f6cc4bf61 [file] [log] [blame]
package com.android.systemui.fragments
import android.app.Fragment
import android.os.Looper
import android.test.suitebuilder.annotation.SmallTest
import com.android.systemui.SysuiTestCase
import com.android.systemui.dump.DumpManager
import com.android.systemui.qs.QSFragment
import com.android.systemui.util.mockito.mock
import com.google.common.truth.Truth.assertThat
import org.junit.Before
import org.junit.Test
@SmallTest
class FragmentServiceTest : SysuiTestCase() {
private val fragmentCreator = TestFragmentCreator()
private val fragmentCreatorFactory = FragmentService.FragmentCreator.Factory { fragmentCreator }
private lateinit var fragmentService: FragmentService
@Before
fun setUp() {
if (Looper.myLooper() == null) {
Looper.prepare()
}
fragmentService = FragmentService(fragmentCreatorFactory, mock(), DumpManager())
}
@Test
fun constructor_addsFragmentCreatorMethodsToMap() {
val map = fragmentService.injectionMap
assertThat(map).hasSize(2)
assertThat(map.keys).contains(QSFragment::class.java.name)
assertThat(map.keys).contains(TestFragmentInCreator::class.java.name)
}
@Test
fun addFragmentInstantiationProvider_objectHasNoFragmentMethods_nothingAdded() {
fragmentService.addFragmentInstantiationProvider(Object())
assertThat(fragmentService.injectionMap).hasSize(2)
}
@Test
fun addFragmentInstantiationProvider_objectHasFragmentMethods_methodsAdded() {
fragmentService.addFragmentInstantiationProvider(
@Suppress("unused")
object : Any() {
fun createTestFragment2() = TestFragment2()
fun createTestFragment3() = TestFragment3()
}
)
val map = fragmentService.injectionMap
assertThat(map).hasSize(4)
assertThat(map.keys).contains(TestFragment2::class.java.name)
assertThat(map.keys).contains(TestFragment3::class.java.name)
}
@Test
fun addFragmentInstantiationProvider_objectFragmentMethodsAlreadyProvided_nothingAdded() {
fragmentService.addFragmentInstantiationProvider(
@Suppress("unused")
object : Any() {
fun createTestFragment() = TestFragmentInCreator()
}
)
assertThat(fragmentService.injectionMap).hasSize(2)
}
class TestFragmentCreator : FragmentService.FragmentCreator {
override fun createQSFragment(): QSFragment = mock()
@Suppress("unused")
fun createTestFragment(): TestFragmentInCreator = TestFragmentInCreator()
}
class TestFragmentInCreator : Fragment()
class TestFragment2 : Fragment()
class TestFragment3 : Fragment()
}