package com.airbnb.lottie.samples

import androidx.activity.ComponentActivity
import androidx.compose.foundation.layout.Box
import androidx.compose.foundation.layout.fillMaxSize
import androidx.compose.foundation.layout.padding
import androidx.compose.material.Text
import androidx.compose.runtime.getValue
import androidx.compose.ui.Alignment
import androidx.compose.ui.Modifier
import androidx.compose.ui.test.assertIsDisplayed
import androidx.compose.ui.test.junit4.createAndroidComposeRule
import androidx.compose.ui.test.onNodeWithText
import androidx.compose.ui.unit.dp
import com.airbnb.lottie.LottieCompositionFactory
import com.airbnb.lottie.compose.LottieAnimation
import com.airbnb.lottie.compose.LottieConstants
import com.airbnb.lottie.compose.animateLottieCompositionAsState
import com.airbnb.lottie.sample.compose.ComposeActivity
import com.airbnb.lottie.sample.compose.R
import org.junit.Rule
import org.junit.Test

class InfiniteAnimationTest {

    @get:Rule
    val composeTestRule = createAndroidComposeRule(ComponentActivity::class.java)

    @Test
    fun testInfiniteAnimation() {
        val composition = LottieCompositionFactory.fromRawResSync(composeTestRule.activity, R.raw.heart).value!!
        composeTestRule.setContent {
            val progress by animateLottieCompositionAsState(composition, iterations = LottieConstants.IterateForever)
            Box(
                modifier = Modifier
                    .fillMaxSize()
            ) {
                LottieAnimation(
                    composition,
                    { progress },
                )
                Text(
                    "Composition Loaded!",
                    modifier = Modifier
                        .align(Alignment.TopCenter)
                        .padding(
                            top = 16.dp
                        )
                )
            }
        }


        composeTestRule
            .onNodeWithText("Composition Loaded!")
            .assertIsDisplayed()
    }
}
