Files
MoGoEagleEye/app/src/androidTest/java/com/mogo/functions/test/ReminderTest.kt
2023-05-08 15:10:46 +08:00

426 lines
16 KiB
Kotlin

//package com.mogo.functions.test
//
//import android.animation.Animator
//import android.app.Activity
//import android.content.Context
//import android.content.Intent
//import android.graphics.Color
//import android.view.Gravity
//import android.view.View
//import android.view.ViewGroup
//import android.view.WindowManager
//import android.view.animation.OvershootInterpolator
//import android.widget.PopupWindow
//import androidx.core.view.ViewCompat
//import androidx.lifecycle.lifecycleScope
//import androidx.test.core.app.ActivityScenario
//import androidx.test.ext.junit.runners.AndroidJUnit4
//import androidx.test.filters.LargeTest
//import com.mogo.eagle.core.function.api.hmi.warning.IMoGoWarningStatusListener
//import com.mogo.eagle.core.function.hmi.notification.WarningFloat
//import com.mogo.eagle.core.function.hmi.notification.anim.DefaultAnimator
//import com.mogo.eagle.core.data.enums.SidePattern
//import com.mogo.eagle.core.function.hmi.ui.*
//import com.mogo.eagle.core.function.main.MainLauncherActivity
//import com.mogo.eagle.core.utilcode.kotlin.shape
//import com.mogo.eagle.core.utilcode.reminder.Reminder
//import com.mogo.eagle.core.utilcode.reminder.api.impl.ActivityReminder
//import com.mogo.eagle.core.utilcode.reminder.api.impl.PopupWindowReminder
//import com.mogo.eagle.core.utilcode.reminder.api.impl.ViewReminder
//import com.mogo.eagle.core.utilcode.util.AppStateManager
//import kotlinx.coroutines.*
//import kotlinx.coroutines.flow.*
//import org.junit.Before
//import org.junit.Test
//import org.junit.runner.RunWith
//import java.lang.Integer.min
//import java.util.concurrent.*
//import java.util.concurrent.TimeUnit.MILLISECONDS
//
//
//@RunWith(AndroidJUnit4::class)
//@LargeTest
//class ReminderTest {
//
// lateinit var launch: ActivityScenario<MainLauncherActivity>
//
// @Before
// fun before() {
// launch = ActivityScenario.launch(MainLauncherActivity::class.java)
// }
//
// @Test
// fun testViewReminderNotOverride() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenResumed {
// for (i in 1..10) {
// val reminder = WindowManagerViewUnOverrideReminder(View(it).also { itx -> itx.background = shape(solid = color(i)) }, 300, 300)
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(3))
// reminder.hide()
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// return@runBlocking
// }
//
// @Test
// fun testShowWarningV2x() = runBlocking {
// val f = ensureMoGoHmiFragmentShow()
//
// delay(5000)
// (1 until 20).map {
// it
// }.asFlow()
// .onEach {
// f.showWarningV2X("10006", "test", "测试$it", "$it", null, true, 5000)
// }
// .flowOn(Dispatchers.Default)
// .collect()
// delay(3000000)
// }
//
// private suspend fun ensureMoGoHmiFragmentShow(): MoGoHmiProvider = suspendCancellableCoroutine {
// launch.onActivity { itx ->
// val executor = Executors.newSingleThreadScheduledExecutor()
// executor.scheduleAtFixedRate({
// var find =
// itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
// while (find == null) {
// find =
// itx.supportFragmentManager.fragments.find { it is MoGoHmiProvider } as? MoGoHmiProvider
// }
// while (!find.isResumed) {
// Thread.sleep(500)
// }
// it.resumeWith(Result.success(find))
// try {
// Thread.sleep(500)
// executor.shutdownNow()
// } catch (e: Throwable) {
// e.printStackTrace()
// }
// }, 50, 500, MILLISECONDS)
// }
// }
//
// @Test
// fun testViewReminderOverride() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenCreated {
// for (i in 1..10) {
// val reminder = WindowManagerViewOverrideReminder(View(it).also { itx -> itx.background = shape(solid = color(i)) }, 300, 300)
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(3))
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// return@runBlocking
// }
//
// @Test
// fun testViewReminderWhenActivityDestroyed() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenCreated {
// for (i in 1..10) {
// val reminder = WindowManagerViewOverrideReminder(View(it).also { itx -> itx.background = shape(solid = color(i)) }, 300, 300)
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(3))
//
// if (i == 8) {
// it.finish()
// }
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
// @Test
// fun testWarningFloat() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenCreated {
// for (i in 1..10) {
// val v = View(it).also {
// it.background = shape(solid = color(i))
// it.layoutParams = WindowManager.LayoutParams().also { itx ->
// itx.width = 300
// itx.height = 400
// }
// }
// val builder = WarningFloat.with(it).setTag("test${i}").setLayout(v).setSidePattern(SidePattern.RESULT_TOP).setCountDownTime(TimeUnit.SECONDS.toMillis(10)).setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110).setImmersionStatusBar(true).addWarningStatusListener(object :
// IMoGoWarningStatusListener {
// override fun onShow() {
//
// }
// }).setAnimator(object : DefaultAnimator() {
// override fun enterAnim(view: View, params: WindowManager.LayoutParams, windowManager: WindowManager, sidePattern: SidePattern): Animator? = super.enterAnim(view, params, windowManager, sidePattern)?.apply {
// interpolator = OvershootInterpolator()
// }
//
// override fun exitAnim(view: View, params: WindowManager.LayoutParams, windowManager: WindowManager, sidePattern: SidePattern): Animator? = super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200)
// })
// Reminder.enqueue(it, WarningFloatReminder(builder))
// delay(TimeUnit.SECONDS.toMillis(3))
// }
//
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
//
// @Test
// fun testActivityReminder() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenResumed {
// for (i in 1..10) {
// val reminder = ActivityNameReminder(it, "com.mogo.launcher.TestActivity")
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(6))
// reminder.hide()
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
// @Test
// fun testActivityReminderOverride() = runBlocking(Dispatchers.Main) {
// launch.onActivity {
// it.lifecycleScope.launchWhenResumed {
// for (i in 1..10) {
// val reminder = ActivityNameOverrideReminder(it, "com.mogo.launcher.TestActivity")
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(6))
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
//
// @Test
// fun testPopupWindowReminder() = runBlocking {
// launch.onActivity {
// it.lifecycleScope.launchWhenResumed {
// for (i in 1..10) {
//
// val reminder = TestPopupWindowReminder(it.findViewById(android.R.id.content), PopupWindow(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT).also { itx ->
// itx.contentView = View(it).also {
// xx -> xx.background = shape(solid = color(i))
// xx.layoutParams = ViewGroup.LayoutParams(300, 400)
// }
// })
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(3))
// reminder.hide()
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
// @Test
// fun testPopupWindowReminderOverride() = runBlocking {
// launch.onActivity {
// it.lifecycleScope.launchWhenResumed {
// for (i in 1..10) {
//
// val reminder = TestPopupWindowReminderOverride(it.findViewById(android.R.id.content), PopupWindow(WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT).also { itx ->
// itx.contentView = View(it).also {
// xx -> xx.background = shape(solid = color(i))
// xx.layoutParams = ViewGroup.LayoutParams(300, 400)
// }
// })
// Reminder.enqueue(it, reminder)
// delay(TimeUnit.SECONDS.toMillis(3))
// }
// }
// }
// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
// @Test
// fun testWarningFloatForProject() = runBlocking {
//// launch.onActivity {
//// it.lifecycleScope.launchWhenResumed {
//// for (i in 1..10) {
//// val notificationView = V2XNotificationView(it)
//// notificationView.setWarningIcon(EventTypeEnum.getWarningIcon("10003"))
//// notificationView.setWarningContent("XXXXXX${i}")
//// WarningFloat.with(it)
//// .setTag("tag")
//// .setLayout(notificationView)
//// .setSidePattern(SidePattern.RESULT_TOP)
//// .setCountDownTime(5000)
//// .setGravity(Gravity.CENTER_HORIZONTAL, offsetY = 110)
//// .setImmersionStatusBar(true)
//// .addWarningStatusListener(object : IMoGoWarningStatusListener {
//// override fun onShow() {
//// }
//// })
//// .setAnimator(object : DefaultAnimator() {
//// override fun enterAnim(
//// view: View,
//// params: WindowManager.LayoutParams,
//// windowManager: WindowManager,
//// sidePattern: SidePattern
//// ): Animator? =
//// super.enterAnim(view, params, windowManager, sidePattern)?.apply {
//// interpolator = OvershootInterpolator()
//// }
////
//// override fun exitAnim(
//// view: View,
//// params: WindowManager.LayoutParams,
//// windowManager: WindowManager,
//// sidePattern: SidePattern
//// ): Animator? =
//// super.exitAnim(view, params, windowManager, sidePattern)?.setDuration(200)
//// })
//// .show()
//// delay(2000)
//// }
//// }
//// }
//// delay(TimeUnit.SECONDS.toMillis(100))
// }
//
//
// class WarningFloatReminder(private val builder: WarningFloat.Builder) : ViewReminder(builder.config.layoutView!!) {
//
// override fun show() {
// builder.show()
// }
//
// override fun hide() {
// WarningFloat.dismiss(builder.config.floatTag, false)
// }
//
// override fun isOverride(): Boolean {
// return true
// }
// }
//
//
// class WindowManagerViewUnOverrideReminder(private val content: View, private val width: Int, private val height: Int) : ViewReminder(content) {
//
// private val wm by lazy {
// content.context.getSystemService(Activity.WINDOW_SERVICE) as WindowManager
// }
//
// private var isAdd = false
//
// override fun show() {
// if (!isAdd) {
// val params = WindowManager.LayoutParams().also {
// it.width = width
// it.height = height
// }
// params.gravity = Gravity.CENTER
// wm.addView(content, params)
// isAdd = true
// }
// }
//
// override fun hide() {
// if (isAdd && ViewCompat.isAttachedToWindow(content)) {
// wm.removeView(content)
// isAdd = false
// }
// }
// }
//
//
// class WindowManagerViewOverrideReminder(private val content: View, private val width: Int, private val height: Int) : ViewReminder(content) {
//
// private val wm by lazy {
// content.context.getSystemService(Activity.WINDOW_SERVICE) as WindowManager
// }
//
// private var isAdd = false
//
// override fun show() {
// if (!isAdd) {
// val params = WindowManager.LayoutParams().also {
// it.width = width
// it.height = height
// }
// params.gravity = Gravity.CENTER
// wm.addView(content, params)
// isAdd = true
// }
// }
//
// override fun hide() {
// if (isAdd && ViewCompat.isAttachedToWindow(content)) {
// wm.removeView(content)
// isAdd = false
// }
// }
//
// override fun isOverride(): Boolean {
// return true
// }
// }
//
//
// class ActivityNameReminder(private val context: Context, private val className: String): ActivityReminder(className) {
//
// override fun show() {
// Intent(context, Class.forName(className)).also {
// context.startActivity(it)
// }
// }
//
// override fun hide() {
// AppStateManager.currentActivity()?.takeIf { it.javaClass.name == className }?.finish()
// }
// }
//
// class ActivityNameOverrideReminder(private val context: Context, private val className: String): ActivityReminder(className) {
//
// override fun show() {
// Intent(context, Class.forName(className)).also {
// context.startActivity(it)
// }
// }
//
// override fun hide() {
// AppStateManager.currentActivity()?.takeIf { it.javaClass.name == className }?.finish()
// }
//
// override fun isOverride(): Boolean {
// return true
// }
// }
//
// class TestPopupWindowReminder(private val anchor: View, override val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) {
//
// override fun show() {
// popupWindow.showAtLocation(anchor, Gravity.CENTER, 0, 0)
// }
// }
//
// class TestPopupWindowReminderOverride(private val anchor: View, override val popupWindow: PopupWindow): PopupWindowReminder(popupWindow) {
//
// override fun show() {
// popupWindow.showAtLocation(anchor, Gravity.CENTER, 0, 0)
// }
//
// override fun isOverride(): Boolean {
// return true
// }
// }
//
// private fun color(index: Int): Int {
// if (index > 10) {
// return Color.BLACK
// }
// val alpha = min(255, 255 - index * 20)
// return Color.argb(alpha, Color.red(Color.RED), Color.green(Color.RED), Color.blue(Color.RED))
// }
//}