Don't allow minFrame > maxFrame in LottieValueAnimator (#969)

diff --git a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
index 18b4863..d5378a7 100644
--- a/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
+++ b/lottie/src/main/java/com/airbnb/lottie/utils/LottieValueAnimator.java
@@ -163,6 +163,9 @@
   }
 
   public void setMinAndMaxFrames(int minFrame, int maxFrame) {
+    if (minFrame > maxFrame) {
+      throw new IllegalArgumentException(String.format("minFrame (%s) must be <= maxFrame (%s)", minFrame, maxFrame));
+    }
     float compositionMinFrame = composition == null ? -Float.MAX_VALUE : composition.getStartFrame();
     float compositionMaxFrame = composition == null ? Float.MAX_VALUE : composition.getEndFrame();
     this.minFrame = MiscUtils.clamp(minFrame, compositionMinFrame, compositionMaxFrame);
diff --git a/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java b/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
index 0ed3c86..03620c7 100644
--- a/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
+++ b/lottie/src/test/java/com/airbnb/lottie/LottieValueAnimatorUnitTest.java
@@ -164,6 +164,23 @@
   }
 
   @Test
+  public void testSetFrameIntegrity() {
+    animator.setMinAndMaxFrames(200, 800);
+
+    // setFrame < minFrame should clamp to minFrame
+    animator.setFrame(100);
+    assertEquals(200, animator.getFrame());
+
+    animator.setFrame(900);
+    assertEquals(800, animator.getFrame());
+  }
+
+  @Test(expected = IllegalArgumentException.class)
+  public void testMinAndMaxFrameIntegrity() {
+    animator.setMinAndMaxFrames(800, 200);
+  }
+
+  @Test
   public void testDefaultAnimator() {
     testAnimator(new VerifyListener() {
       @Override public void verify(InOrder inOrder) {