Home | History | Annotate | Download | only in shadows
      1 package org.robolectric.shadows;
      2 
      3 import static com.google.common.truth.Truth.assertThat;
      4 import static org.robolectric.Robolectric.buildActivity;
      5 
      6 import android.app.Activity;
      7 import android.os.Bundle;
      8 import android.view.SurfaceHolder;
      9 import android.view.SurfaceView;
     10 import android.view.Window;
     11 import androidx.test.ext.junit.runners.AndroidJUnit4;
     12 import org.junit.Test;
     13 import org.junit.runner.RunWith;
     14 import org.robolectric.Shadows;
     15 
     16 @RunWith(AndroidJUnit4.class)
     17 public class ShadowSurfaceViewTest {
     18 
     19   private SurfaceHolder.Callback callback1 = new TestCallback();
     20   private SurfaceHolder.Callback callback2 = new TestCallback();
     21 
     22   private SurfaceView view = new SurfaceView(buildActivity(Activity.class).create().get());
     23   private SurfaceHolder surfaceHolder = view.getHolder();
     24   private ShadowSurfaceView shadowSurfaceView = (ShadowSurfaceView) Shadows.shadowOf(view);
     25   private ShadowSurfaceView.FakeSurfaceHolder fakeSurfaceHolder =
     26       shadowSurfaceView.getFakeSurfaceHolder();
     27 
     28   @Test
     29   public void addCallback() {
     30     assertThat(fakeSurfaceHolder.getCallbacks()).isEmpty();
     31 
     32     surfaceHolder.addCallback(callback1);
     33 
     34     assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback1);
     35 
     36     surfaceHolder.addCallback(callback2);
     37 
     38     assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback1);
     39     assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback2);
     40   }
     41 
     42   @Test
     43   public void removeCallback() {
     44     surfaceHolder.addCallback(callback1);
     45     surfaceHolder.addCallback(callback2);
     46 
     47     assertThat(fakeSurfaceHolder.getCallbacks().size()).isEqualTo(2);
     48 
     49     surfaceHolder.removeCallback(callback1);
     50 
     51     assertThat(fakeSurfaceHolder.getCallbacks()).doesNotContain(callback1);
     52     assertThat(fakeSurfaceHolder.getCallbacks()).contains(callback2);
     53   }
     54 
     55   @Test
     56   public void canCreateASurfaceView_attachedToAWindowWithActionBar() throws Exception {
     57     TestActivity testActivity = buildActivity(TestActivity.class).create().start().resume().visible().get();
     58     assertThat(testActivity).isNotNull();
     59   }
     60 
     61   private static class TestCallback implements SurfaceHolder.Callback {
     62     @Override
     63     public void surfaceCreated(SurfaceHolder holder) {
     64     }
     65 
     66     @Override
     67     public void surfaceDestroyed(SurfaceHolder holder) {
     68     }
     69 
     70     @Override
     71     public void surfaceChanged(SurfaceHolder holder, int format, int w, int h) {
     72     }
     73   }
     74 
     75   private static class TestActivity extends Activity {
     76     @Override
     77     protected void onCreate(Bundle savedInstanceState) {
     78       super.onCreate(savedInstanceState);
     79       requestWindowFeature(Window.FEATURE_ACTION_BAR);
     80       setContentView(new SurfaceView(this));
     81     }
     82   }
     83 }
     84