| package com.airbnb.lottie.samples |
| |
| import android.graphics.Color |
| import android.graphics.drawable.ColorDrawable |
| import androidx.fragment.app.Fragment |
| import androidx.fragment.app.testing.launchFragmentInContainer |
| import androidx.lifecycle.Lifecycle |
| import androidx.test.espresso.Espresso.onView |
| import androidx.test.espresso.assertion.ViewAssertions.matches |
| import androidx.test.espresso.matcher.ViewMatchers.isDisplayed |
| import androidx.test.espresso.matcher.ViewMatchers.withId |
| import androidx.test.ext.junit.runners.AndroidJUnit4 |
| import androidx.test.filters.LargeTest |
| import com.airbnb.lottie.LottieAnimationView |
| import com.airbnb.lottie.LottieCompositionFactory |
| import com.airbnb.lottie.LottieDrawable |
| import org.junit.Assert.assertFalse |
| import org.junit.Assert.assertTrue |
| import org.junit.Test |
| import org.junit.runner.RunWith |
| |
| @RunWith(AndroidJUnit4::class) |
| @LargeTest |
| class LottieAnimationViewTest { |
| @Test |
| fun inflateShouldNotCrash() { |
| class TestFragment : Fragment(R.layout.lottie_activity_main) |
| launchFragmentInContainer<TestFragment>() |
| onView(withId(R.id.animation_view)).check(matches(isDisplayed())) |
| } |
| |
| @Test |
| fun testCanSetAnAnimationAndChangeItBack() { |
| class TestFragment : Fragment(R.layout.lottie_activity_main) |
| |
| val scenario = launchFragmentInContainer<TestFragment>() |
| scenario.moveToState(Lifecycle.State.RESUMED) |
| scenario.onFragment { fragment -> |
| val composition = LottieCompositionFactory.fromRawResSync(fragment.requireContext(), R.raw.hamburger_arrow).value!! |
| val view = fragment.requireView().findViewById<LottieAnimationView>(R.id.animation_view) |
| view.setComposition(composition) |
| assertTrue(view.drawable is LottieDrawable) |
| view.setImageDrawable(ColorDrawable(Color.GREEN)) |
| assertTrue(view.drawable is ColorDrawable) |
| view.setComposition(composition) |
| assertTrue(view.drawable is LottieDrawable) |
| } |
| } |
| |
| @Test |
| fun testStopsPlayingWhenDrawableSwitched() { |
| class TestFragment : Fragment(R.layout.lottie_activity_main) |
| |
| val scenario = launchFragmentInContainer<TestFragment>() |
| scenario.moveToState(Lifecycle.State.RESUMED) |
| scenario.onFragment { fragment -> |
| val composition = LottieCompositionFactory.fromRawResSync(fragment.requireContext(), R.raw.hamburger_arrow).value!! |
| val view = fragment.requireView().findViewById<LottieAnimationView>(R.id.animation_view) |
| view.setComposition(composition) |
| view.playAnimation() |
| view.setImageDrawable(ColorDrawable(Color.GREEN)) |
| assertFalse(view.isAnimating) |
| } |
| } |
| } |