pull/696/head
Mattia Iavarone 6 years ago
parent abe74ebf35
commit a4f958a43d
  1. 9
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/internal/GridLinesLayoutTest.java
  2. 7
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/Retry.java
  3. 46
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/tools/RetryRule.java
  4. 1
      cameraview/src/main/java/com/otaliastudios/cameraview/picture/Full2PictureRecorder.java

@ -5,6 +5,8 @@ import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.TestActivity;
import com.otaliastudios.cameraview.controls.Grid;
import com.otaliastudios.cameraview.tools.Op;
import com.otaliastudios.cameraview.tools.Retry;
import com.otaliastudios.cameraview.tools.RetryRule;
import androidx.annotation.NonNull;
import androidx.test.ext.junit.runners.AndroidJUnit4;
@ -26,6 +28,9 @@ public class GridLinesLayoutTest extends BaseTest {
@Rule
public ActivityTestRule<TestActivity> rule = new ActivityTestRule<>(TestActivity.class);
@Rule
public RetryRule retryRule = new RetryRule(3);
private GridLinesLayout layout;
@NonNull
@ -59,24 +64,28 @@ public class GridLinesLayoutTest extends BaseTest {
return result;
}
@Retry
@Test
public void testOff() {
int linesDrawn = setGridAndWait(Grid.OFF);
assertEquals(0, linesDrawn);
}
@Retry
@Test
public void test3x3() {
int linesDrawn = setGridAndWait(Grid.DRAW_3X3);
assertEquals(2, linesDrawn);
}
@Retry
@Test
public void testPhi() {
int linesDrawn = setGridAndWait(Grid.DRAW_PHI);
assertEquals(2, linesDrawn);
}
@Retry
@Test
public void test4x4() {
int linesDrawn = setGridAndWait(Grid.DRAW_4X4);

@ -0,0 +1,7 @@
package com.otaliastudios.cameraview.tools;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.RUNTIME)
public @interface Retry {}

@ -0,0 +1,46 @@
package com.otaliastudios.cameraview.tools;
import com.otaliastudios.cameraview.CameraLogger;
import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;
import java.util.concurrent.atomic.AtomicInteger;
public class RetryRule implements TestRule {
private final static String TAG = RetryRule.class.getSimpleName();
private final static CameraLogger LOG = CameraLogger.create(TAG);
private AtomicInteger retries;
public RetryRule(int retries) {
this.retries = new AtomicInteger(retries);
}
@Override
public Statement apply(final Statement base, final Description description) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
if (description.getAnnotation(Retry.class) == null) {
base.evaluate();
} else {
Throwable caught = null;
while (retries.getAndDecrement() > 0) {
try {
base.evaluate();
return;
} catch (Throwable throwable) {
caught = throwable;
}
}
if (caught != null) {
throw caught;
}
}
}
};
}
}

@ -71,6 +71,7 @@ public class Full2PictureRecorder extends PictureRecorder
mResult = null;
mError = e;
dispatchResult();
setState(STATE_COMPLETED);
}
}

Loading…
Cancel
Save