aboutsummaryrefslogtreecommitdiff
path: root/robolectric/src/test/java/org/robolectric/shadows/ShadowDisplayEventReceiverTest.java
blob: 9a5f4538f5220be76ab299c52dfbb8d5dc037f50 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package org.robolectric.shadows;

import static com.google.common.truth.Truth.assertThat;

import android.os.Looper;
import android.view.DisplayEventReceiver;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import dalvik.system.CloseGuard;
import java.util.concurrent.atomic.AtomicBoolean;
import org.junit.Test;
import org.junit.runner.RunWith;

/** Tests for {@link ShadowDisplayEventReceiver}. */
@RunWith(AndroidJUnit4.class)
public class ShadowDisplayEventReceiverTest {

  static class MyDisplayEventReceiver extends DisplayEventReceiver {

    public MyDisplayEventReceiver(Looper looper) {
      super(looper);
    }

    @Override
    protected void finalize() throws Throwable {
      super.finalize();
    }
  }

  @Test
  public void closeGuard_autoCloses() throws Throwable {
    final AtomicBoolean closeGuardWarned = new AtomicBoolean(false);
    CloseGuard.Reporter originalReporter = CloseGuard.getReporter();
    try {
      CloseGuard.setReporter((s, throwable) -> closeGuardWarned.set(true));
      new MyDisplayEventReceiver(Looper.getMainLooper()).finalize();
      assertThat(closeGuardWarned.get()).isFalse();
    } finally {
      CloseGuard.setReporter(originalReporter);
    }
  }
}