MarkerParserTest and improve MarkerLayoutTest

pull/507/head
Mattia Iavarone 6 years ago
parent 2d37de7b62
commit 575f256fce
  1. 46
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/markers/MarkerLayoutTest.java
  2. 79
      cameraview/src/androidTest/java/com/otaliastudios/cameraview/markers/MarkerParserTest.java

@ -3,6 +3,9 @@ package com.otaliastudios.cameraview.markers;
import android.annotation.TargetApi;
import android.content.Context;
import android.graphics.PointF;
import android.view.View;
import android.view.ViewGroup;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.TestActivity;
@ -13,9 +16,20 @@ import org.junit.Rule;
import org.junit.Test;
import org.mockito.Mockito;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.test.annotation.UiThreadTest;
import androidx.test.rule.ActivityTestRule;
import static org.mockito.ArgumentMatchers.anyFloat;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.reset;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
@TargetApi(17)
public class MarkerLayoutTest extends BaseTest {
@ -32,9 +46,9 @@ public class MarkerLayoutTest extends BaseTest {
@Override
public void run() {
TestActivity a = rule.getActivity();
markerLayout = Mockito.spy(new MarkerLayout(a));
markerLayout = spy(new MarkerLayout(a));
a.inflate(markerLayout);
autoFocusMarker = Mockito.spy(new DefaultAutoFocusMarker());
autoFocusMarker = spy(new DefaultAutoFocusMarker());
}
});
}
@ -43,7 +57,7 @@ public class MarkerLayoutTest extends BaseTest {
@UiThreadTest
public void testOnMarker_callsOnAttach() {
markerLayout.onMarker(MarkerLayout.TYPE_AUTOFOCUS, autoFocusMarker);
Mockito.verify(autoFocusMarker, Mockito.times(1)).onAttach(
Mockito.verify(autoFocusMarker, times(1)).onAttach(
Mockito.any(Context.class),
Mockito.eq(markerLayout));
}
@ -66,8 +80,32 @@ public class MarkerLayoutTest extends BaseTest {
markerLayout.onMarker(MarkerLayout.TYPE_AUTOFOCUS, null);
Assert.assertEquals(markerLayout.getChildCount(), 0);
Mockito.verify(autoFocusMarker, Mockito.times(2)).onAttach(
Mockito.verify(autoFocusMarker, times(2)).onAttach(
Mockito.any(Context.class),
Mockito.eq(markerLayout));
}
@Test
@UiThreadTest
public void testOnEvent() {
final View mockView = spy(new View(getContext()));
// These fail, however it's not really needed.
// when(mockView.getWidth()).thenReturn(50);
// when(mockView.getHeight()).thenReturn(50);
AutoFocusMarker mockMarker = new AutoFocusMarker() {
public void onAutoFocusStart(@NonNull AutoFocusTrigger trigger, @NonNull PointF point) { }
public void onAutoFocusEnd(@NonNull AutoFocusTrigger trigger, boolean successful, @NonNull PointF point) { }
@Override
public View onAttach(@NonNull Context context, @NonNull ViewGroup container) {
return mockView;
}
};
markerLayout.onMarker(MarkerLayout.TYPE_AUTOFOCUS, mockMarker);
reset(mockView);
markerLayout.onEvent(MarkerLayout.TYPE_AUTOFOCUS, new PointF[]{new PointF(0, 0)});
verify(mockView, times(1)).clearAnimation();
verify(mockView, times(1)).setTranslationX(anyFloat());
verify(mockView, times(1)).setTranslationY(anyFloat());
}
}

@ -0,0 +1,79 @@
package com.otaliastudios.cameraview.markers;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.PointF;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.StyleableRes;
import androidx.arch.core.util.Function;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import androidx.test.filters.SmallTest;
import com.otaliastudios.cameraview.BaseTest;
import com.otaliastudios.cameraview.R;
import com.otaliastudios.cameraview.size.Size;
import com.otaliastudios.cameraview.size.SizeSelectorParser;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import java.util.Arrays;
import java.util.List;
import static junit.framework.TestCase.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.ArgumentMatchers.anyBoolean;
import static org.mockito.ArgumentMatchers.anyInt;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
@RunWith(AndroidJUnit4.class)
@SmallTest
public class MarkerParserTest extends BaseTest {
@Test
public void testNullConstructor() {
TypedArray array = mock(TypedArray.class);
when(array.hasValue(R.styleable.CameraView_cameraAutoFocusMarker)).thenReturn(false);
when(array.getString(R.styleable.CameraView_cameraAutoFocusMarker)).thenReturn(null);
MarkerParser parser = new MarkerParser(array);
assertNull(parser.getAutoFocusMarker());
}
@Test
public void testConstructor() {
TypedArray array = mock(TypedArray.class);
when(array.hasValue(R.styleable.CameraView_cameraAutoFocusMarker)).thenReturn(true);
when(array.getString(R.styleable.CameraView_cameraAutoFocusMarker)).thenReturn(Marker.class.getName());
MarkerParser parser = new MarkerParser(array);
assertNotNull(parser.getAutoFocusMarker());
assertTrue(parser.getAutoFocusMarker() instanceof Marker);
}
public static class Marker implements AutoFocusMarker {
public Marker() { }
@Nullable
@Override
public View onAttach(@NonNull Context context, @NonNull ViewGroup container) {
return null;
}
@Override
public void onAutoFocusStart(@NonNull AutoFocusTrigger trigger, @NonNull PointF point) { }
@Override
public void onAutoFocusEnd(@NonNull AutoFocusTrigger trigger, boolean successful, @NonNull PointF point) { }
}
}
Loading…
Cancel
Save