@ -25,6 +25,7 @@ import com.otaliastudios.cameraview.engine.CameraEngine; 
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.filter.Filter ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.filter.Filters ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.filter.NoFilter ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.filters.DuotoneFilter ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.frame.Frame ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.frame.FrameProcessor ;  
			
		
	
		
			
				
					import  com.otaliastudios.cameraview.gesture.Gesture ;  
			
		
	
	
		
			
				
					
						
							
								 
						
						
							
								 
						
						
					 
				
				@ -355,6 +356,90 @@ public class CameraViewTest extends BaseTest { 
			
		
	
		
			
				
					        assertTrue ( mockController . mExposureCorrectionChanged ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    @Test   
			
		
	
		
			
				
					    public  void  testGestureAction_filterControl1 ( )  {   
			
		
	
		
			
				
					        mockController . setMockEngineState ( true ) ;   
			
		
	
		
			
				
					        mockController . setMockCameraOptions ( mock ( CameraOptions . class ) ) ;   
			
		
	
		
			
				
					        DuotoneFilter  filter  =  new  DuotoneFilter ( ) ;  // supports two parameters
   
			
		
	
		
			
				
					        filter . setParameter1 ( 0F ) ;   
			
		
	
		
			
				
					        filter  =  spy ( filter ) ;   
			
		
	
		
			
				
					        cameraView . setExperimental ( true ) ;   
			
		
	
		
			
				
					        cameraView . setFilter ( filter ) ;   
			
		
	
		
			
				
					        mockController . mExposureCorrectionChanged  =  false ;   
			
		
	
		
			
				
					        MotionEvent  event  =  MotionEvent . obtain ( 0L ,  0L ,  0 ,  0f ,  0f ,  0 ) ;   
			
		
	
		
			
				
					        final  FactorHolder  factor  =  new  FactorHolder ( ) ;   
			
		
	
		
			
				
					        uiSync ( new  Runnable ( )  {   
			
		
	
		
			
				
					            @Override   
			
		
	
		
			
				
					            public  void  run ( )  {   
			
		
	
		
			
				
					                cameraView . mScrollGestureFinder  =  new  ScrollGestureFinder ( cameraView . mCameraCallbacks )  {   
			
		
	
		
			
				
					                    @Override   
			
		
	
		
			
				
					                    protected  boolean  handleTouchEvent ( @NonNull  MotionEvent  event )  {   
			
		
	
		
			
				
					                        setGesture ( Gesture . SCROLL_HORIZONTAL ) ;   
			
		
	
		
			
				
					                        return  true ;   
			
		
	
		
			
				
					                    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    @Override   
			
		
	
		
			
				
					                    protected  float  getFactor ( )  {   
			
		
	
		
			
				
					                        return  factor . value ;   
			
		
	
		
			
				
					                    }   
			
		
	
		
			
				
					                } ;   
			
		
	
		
			
				
					                cameraView . mapGesture ( Gesture . SCROLL_HORIZONTAL ,  GestureAction . FILTER_CONTROL_1 ) ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // If factor is 0, we return the same value. The filter should not be notified.
   
			
		
	
		
			
				
					        factor . value  =  0f ;   
			
		
	
		
			
				
					        cameraView . dispatchTouchEvent ( event ) ;   
			
		
	
		
			
				
					        verify ( filter ,  never ( ) ) . setParameter1 ( anyFloat ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // For larger factors, the value is scaled. The filter should be notified.
   
			
		
	
		
			
				
					        factor . value  =  1f ;   
			
		
	
		
			
				
					        cameraView . dispatchTouchEvent ( event ) ;   
			
		
	
		
			
				
					        verify ( filter ,  times ( 1 ) ) . setParameter1 ( anyFloat ( ) ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    @Test   
			
		
	
		
			
				
					    public  void  testGestureAction_filterControl2 ( )  {   
			
		
	
		
			
				
					        mockController . setMockEngineState ( true ) ;   
			
		
	
		
			
				
					        mockController . setMockCameraOptions ( mock ( CameraOptions . class ) ) ;   
			
		
	
		
			
				
					        DuotoneFilter  filter  =  new  DuotoneFilter ( ) ;  // supports two parameters
   
			
		
	
		
			
				
					        filter . setParameter2 ( 0F ) ;   
			
		
	
		
			
				
					        filter  =  spy ( filter ) ;   
			
		
	
		
			
				
					        cameraView . setExperimental ( true ) ;   
			
		
	
		
			
				
					        cameraView . setFilter ( filter ) ;   
			
		
	
		
			
				
					        mockController . mExposureCorrectionChanged  =  false ;   
			
		
	
		
			
				
					        MotionEvent  event  =  MotionEvent . obtain ( 0L ,  0L ,  0 ,  0f ,  0f ,  0 ) ;   
			
		
	
		
			
				
					        final  FactorHolder  factor  =  new  FactorHolder ( ) ;   
			
		
	
		
			
				
					        uiSync ( new  Runnable ( )  {   
			
		
	
		
			
				
					            @Override   
			
		
	
		
			
				
					            public  void  run ( )  {   
			
		
	
		
			
				
					                cameraView . mScrollGestureFinder  =  new  ScrollGestureFinder ( cameraView . mCameraCallbacks )  {   
			
		
	
		
			
				
					                    @Override   
			
		
	
		
			
				
					                    protected  boolean  handleTouchEvent ( @NonNull  MotionEvent  event )  {   
			
		
	
		
			
				
					                        setGesture ( Gesture . SCROLL_HORIZONTAL ) ;   
			
		
	
		
			
				
					                        return  true ;   
			
		
	
		
			
				
					                    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					                    @Override   
			
		
	
		
			
				
					                    protected  float  getFactor ( )  {   
			
		
	
		
			
				
					                        return  factor . value ;   
			
		
	
		
			
				
					                    }   
			
		
	
		
			
				
					                } ;   
			
		
	
		
			
				
					                cameraView . mapGesture ( Gesture . SCROLL_HORIZONTAL ,  GestureAction . FILTER_CONTROL_2 ) ;   
			
		
	
		
			
				
					            }   
			
		
	
		
			
				
					        } ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // If factor is 0, we return the same value. The filter should not be notified.
   
			
		
	
		
			
				
					        factor . value  =  0f ;   
			
		
	
		
			
				
					        cameraView . dispatchTouchEvent ( event ) ;   
			
		
	
		
			
				
					        verify ( filter ,  never ( ) ) . setParameter2 ( anyFloat ( ) ) ;   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					        // For larger factors, the value is scaled. The filter should be notified.
   
			
		
	
		
			
				
					        factor . value  =  1f ;   
			
		
	
		
			
				
					        cameraView . dispatchTouchEvent ( event ) ;   
			
		
	
		
			
				
					        verify ( filter ,  times ( 1 ) ) . setParameter2 ( anyFloat ( ) ) ;   
			
		
	
		
			
				
					    }   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    //endregion
   
			
		
	
		
			
				
					
 
			
		
	
		
			
				
					    //region testMeasure