2021-04-30 17:20:15 +00:00
|
|
|
package com.lagradost.cloudstream3
|
|
|
|
|
2023-07-15 01:25:32 +00:00
|
|
|
import android.app.Activity
|
|
|
|
import android.os.Bundle
|
|
|
|
import android.os.PersistableBundle
|
|
|
|
import android.view.LayoutInflater
|
|
|
|
import androidx.test.core.app.ActivityScenario
|
2021-04-30 17:20:15 +00:00
|
|
|
import androidx.test.ext.junit.runners.AndroidJUnit4
|
2023-07-15 01:25:32 +00:00
|
|
|
import androidx.viewbinding.ViewBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentHomeBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentHomeTvBinding
|
2023-10-10 15:16:35 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentLibraryBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentLibraryTvBinding
|
2023-07-17 19:47:27 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentPlayerBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentPlayerTvBinding
|
2023-07-18 01:55:00 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentResultBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentResultTvBinding
|
2023-07-15 01:25:32 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentSearchBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.FragmentSearchTvBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.HomeResultGridBinding
|
2023-07-15 18:00:09 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.HomepageParentBinding
|
2023-10-23 16:33:44 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.HomepageParentEmulatorBinding
|
2023-07-15 18:00:09 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.HomepageParentTvBinding
|
2023-07-17 19:47:27 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.PlayerCustomLayoutBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.PlayerCustomLayoutTvBinding
|
2023-07-15 01:25:32 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.RepositoryItemBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.RepositoryItemTvBinding
|
2023-07-15 18:00:09 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.SearchResultGridBinding
|
|
|
|
import com.lagradost.cloudstream3.databinding.SearchResultGridExpandedBinding
|
2023-07-18 01:55:00 +00:00
|
|
|
import com.lagradost.cloudstream3.databinding.TrailerCustomLayoutBinding
|
2022-01-30 22:02:57 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.SubtitleHelper
|
2023-02-15 20:40:10 +00:00
|
|
|
import com.lagradost.cloudstream3.utils.TestingUtils
|
2022-01-30 22:02:57 +00:00
|
|
|
import kotlinx.coroutines.runBlocking
|
|
|
|
import org.junit.Assert
|
2021-04-30 17:20:15 +00:00
|
|
|
import org.junit.Test
|
|
|
|
import org.junit.runner.RunWith
|
|
|
|
|
2023-07-15 01:25:32 +00:00
|
|
|
|
2021-04-30 17:20:15 +00:00
|
|
|
/**
|
|
|
|
* Instrumented test, which will execute on an Android device.
|
|
|
|
*
|
|
|
|
* See [testing documentation](http://d.android.com/tools/testing).
|
|
|
|
*/
|
2023-07-15 01:25:32 +00:00
|
|
|
class TestApplication : Activity() {
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?, persistentState: PersistableBundle?) {
|
|
|
|
super.onCreate(savedInstanceState, persistentState)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-04-30 17:20:15 +00:00
|
|
|
@RunWith(AndroidJUnit4::class)
|
|
|
|
class ExampleInstrumentedTest {
|
2023-07-30 03:05:13 +00:00
|
|
|
private fun getAllProviders(): Array<MainAPI> {
|
2023-02-15 20:40:10 +00:00
|
|
|
println("Providers: ${APIHolder.allProviders.size}")
|
2023-07-30 03:05:13 +00:00
|
|
|
return APIHolder.allProviders.toTypedArray() //.filter { !it.usesWebView }
|
2022-01-30 22:02:57 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun providersExist() {
|
|
|
|
Assert.assertTrue(getAllProviders().isNotEmpty())
|
|
|
|
println("Done providersExist")
|
|
|
|
}
|
|
|
|
|
2023-07-15 01:25:32 +00:00
|
|
|
@Throws
|
|
|
|
private inline fun <reified T : ViewBinding> testAllLayouts(
|
|
|
|
activity: Activity,
|
|
|
|
vararg layouts: Int
|
|
|
|
) {
|
|
|
|
|
|
|
|
val bind = T::class.java.methods.first { it.name == "bind" }
|
|
|
|
val inflater = LayoutInflater.from(activity)
|
|
|
|
for (layout in layouts) {
|
|
|
|
val root = inflater.inflate(layout, null, false)
|
|
|
|
bind.invoke(null, root)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
@Throws
|
|
|
|
fun layoutTest() {
|
|
|
|
ActivityScenario.launch(MainActivity::class.java).use { scenario ->
|
|
|
|
scenario.onActivity { activity: MainActivity ->
|
|
|
|
// FragmentHomeHeadBinding and FragmentHomeHeadTvBinding CANT be the same
|
|
|
|
//testAllLayouts<FragmentHomeHeadBinding>(activity, R.layout.fragment_home_head, R.layout.fragment_home_head_tv)
|
|
|
|
//testAllLayouts<FragmentHomeHeadTvBinding>(activity, R.layout.fragment_home_head, R.layout.fragment_home_head_tv)
|
|
|
|
|
|
|
|
// main cant be tested
|
|
|
|
// testAllLayouts<ActivityMainTvBinding>(activity,R.layout.activity_main, R.layout.activity_main_tv)
|
|
|
|
// testAllLayouts<ActivityMainBinding>(activity,R.layout.activity_main, R.layout.activity_main_tv)
|
|
|
|
//testAllLayouts<ActivityMainBinding>(activity, R.layout.activity_main_tv)
|
|
|
|
|
2023-07-17 19:47:27 +00:00
|
|
|
testAllLayouts<FragmentPlayerBinding>(activity, R.layout.fragment_player,R.layout.fragment_player_tv)
|
|
|
|
testAllLayouts<FragmentPlayerTvBinding>(activity, R.layout.fragment_player,R.layout.fragment_player_tv)
|
|
|
|
|
2023-07-18 01:55:00 +00:00
|
|
|
// testAllLayouts<FragmentResultBinding>(activity, R.layout.fragment_result,R.layout.fragment_result_tv)
|
|
|
|
// testAllLayouts<FragmentResultTvBinding>(activity, R.layout.fragment_result,R.layout.fragment_result_tv)
|
|
|
|
|
|
|
|
testAllLayouts<PlayerCustomLayoutBinding>(activity, R.layout.player_custom_layout,R.layout.player_custom_layout_tv, R.layout.trailer_custom_layout)
|
|
|
|
testAllLayouts<PlayerCustomLayoutTvBinding>(activity, R.layout.player_custom_layout,R.layout.player_custom_layout_tv, R.layout.trailer_custom_layout)
|
|
|
|
testAllLayouts<TrailerCustomLayoutBinding>(activity, R.layout.player_custom_layout,R.layout.player_custom_layout_tv, R.layout.trailer_custom_layout)
|
2023-07-17 19:47:27 +00:00
|
|
|
|
|
|
|
testAllLayouts<RepositoryItemBinding>(activity, R.layout.repository_item_tv, R.layout.repository_item)
|
|
|
|
testAllLayouts<RepositoryItemTvBinding>(activity, R.layout.repository_item_tv, R.layout.repository_item)
|
|
|
|
|
2023-07-15 01:25:32 +00:00
|
|
|
testAllLayouts<RepositoryItemBinding>(activity, R.layout.repository_item_tv, R.layout.repository_item)
|
|
|
|
testAllLayouts<RepositoryItemTvBinding>(activity, R.layout.repository_item_tv, R.layout.repository_item)
|
|
|
|
|
|
|
|
testAllLayouts<FragmentHomeBinding>(activity, R.layout.fragment_home_tv, R.layout.fragment_home)
|
|
|
|
testAllLayouts<FragmentHomeTvBinding>(activity, R.layout.fragment_home_tv, R.layout.fragment_home)
|
|
|
|
|
|
|
|
testAllLayouts<FragmentSearchBinding>(activity, R.layout.fragment_search_tv, R.layout.fragment_search)
|
|
|
|
testAllLayouts<FragmentSearchTvBinding>(activity, R.layout.fragment_search_tv, R.layout.fragment_search)
|
|
|
|
|
|
|
|
testAllLayouts<HomeResultGridBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid)
|
|
|
|
//testAllLayouts<HomeResultGridExpandedBinding>(activity, R.layout.home_result_grid_expanded, R.layout.home_result_grid) ??? fails ???
|
2023-07-15 18:00:09 +00:00
|
|
|
|
|
|
|
testAllLayouts<SearchResultGridExpandedBinding>(activity, R.layout.search_result_grid, R.layout.search_result_grid_expanded)
|
|
|
|
testAllLayouts<SearchResultGridBinding>(activity, R.layout.search_result_grid, R.layout.search_result_grid_expanded)
|
|
|
|
|
|
|
|
|
|
|
|
// testAllLayouts<HomeScrollViewBinding>(activity, R.layout.home_scroll_view, R.layout.home_scroll_view_tv)
|
|
|
|
// testAllLayouts<HomeScrollViewTvBinding>(activity, R.layout.home_scroll_view, R.layout.home_scroll_view_tv)
|
|
|
|
|
2023-10-23 16:33:44 +00:00
|
|
|
testAllLayouts<HomepageParentTvBinding>(activity, R.layout.homepage_parent_tv, R.layout.homepage_parent_emulator, R.layout.homepage_parent)
|
|
|
|
testAllLayouts<HomepageParentEmulatorBinding>(activity, R.layout.homepage_parent_tv, R.layout.homepage_parent_emulator, R.layout.homepage_parent)
|
|
|
|
testAllLayouts<HomepageParentBinding>(activity, R.layout.homepage_parent_tv, R.layout.homepage_parent_emulator, R.layout.homepage_parent)
|
2023-07-15 18:00:09 +00:00
|
|
|
|
2023-10-10 15:16:35 +00:00
|
|
|
testAllLayouts<FragmentLibraryTvBinding>(activity, R.layout.fragment_library_tv, R.layout.fragment_library)
|
|
|
|
testAllLayouts<FragmentLibraryBinding>(activity, R.layout.fragment_library_tv, R.layout.fragment_library)
|
2023-07-15 01:25:32 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-01-30 22:02:57 +00:00
|
|
|
@Test
|
2023-02-15 20:40:10 +00:00
|
|
|
@Throws(AssertionError::class)
|
2022-01-30 22:02:57 +00:00
|
|
|
fun providerCorrectData() {
|
|
|
|
val isoNames = SubtitleHelper.languages.map { it.ISO_639_1 }
|
|
|
|
Assert.assertFalse("ISO does not contain any languages", isoNames.isNullOrEmpty())
|
|
|
|
for (api in getAllProviders()) {
|
|
|
|
Assert.assertTrue("Api does not contain a mainUrl", api.mainUrl != "NONE")
|
|
|
|
Assert.assertTrue("Api does not contain a name", api.name != "NONE")
|
|
|
|
Assert.assertTrue(
|
|
|
|
"Api ${api.name} does not contain a valid language code",
|
|
|
|
isoNames.contains(api.lang)
|
|
|
|
)
|
|
|
|
Assert.assertTrue(
|
|
|
|
"Api ${api.name} does not contain any supported types",
|
|
|
|
api.supportedTypes.isNotEmpty()
|
|
|
|
)
|
|
|
|
}
|
|
|
|
println("Done providerCorrectData")
|
|
|
|
}
|
|
|
|
|
|
|
|
@Test
|
|
|
|
fun providerCorrectHomepage() {
|
|
|
|
runBlocking {
|
2023-07-30 03:05:13 +00:00
|
|
|
getAllProviders().toList().amap { api ->
|
2023-02-15 20:40:10 +00:00
|
|
|
TestingUtils.testHomepage(api, ::println)
|
2022-01-30 22:02:57 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
println("Done providerCorrectHomepage")
|
|
|
|
}
|
|
|
|
|
2021-04-30 17:20:15 +00:00
|
|
|
@Test
|
2023-02-15 20:40:10 +00:00
|
|
|
fun testAllProvidersCorrect() {
|
2022-01-30 22:02:57 +00:00
|
|
|
runBlocking {
|
2023-02-15 20:40:10 +00:00
|
|
|
TestingUtils.getDeferredProviderTests(
|
|
|
|
this,
|
|
|
|
getAllProviders(),
|
|
|
|
::println
|
|
|
|
) { _, _ -> }
|
2022-01-30 22:02:57 +00:00
|
|
|
}
|
2021-04-30 17:20:15 +00:00
|
|
|
}
|
2022-01-30 22:02:57 +00:00
|
|
|
}
|