aboutsummaryrefslogtreecommitdiff
path: root/robolectric/src/test/java/org/robolectric/shadows/ShadowViewConfigurationTest.java
blob: d0dfeadfb538e0721c63824a5463ff9f820b56ee (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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
package org.robolectric.shadows;

import static com.google.common.truth.Truth.assertThat;
import static org.junit.Assert.assertEquals;
import static org.robolectric.Shadows.shadowOf;

import android.app.Application;
import android.view.ViewConfiguration;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.annotation.Config;

@RunWith(AndroidJUnit4.class)
public class ShadowViewConfigurationTest {

  private Application context;

  @Before
  public void setUp() throws Exception {
    context = ApplicationProvider.getApplicationContext();
  }

  @Test
  public void methodsShouldReturnAndroidConstants() {
    ViewConfiguration viewConfiguration = ViewConfiguration.get(context);

    assertEquals(10, ViewConfiguration.getScrollBarSize());
    assertEquals(250, ViewConfiguration.getScrollBarFadeDuration());
    assertEquals(300, ViewConfiguration.getScrollDefaultDelay());
    assertEquals(12, ViewConfiguration.getFadingEdgeLength());
    assertEquals(125, ViewConfiguration.getPressedStateDuration());
    assertEquals(500, ViewConfiguration.getLongPressTimeout());
    assertEquals(115, ViewConfiguration.getTapTimeout());
    assertEquals(500, ViewConfiguration.getJumpTapTimeout());
    assertEquals(300, ViewConfiguration.getDoubleTapTimeout());
    assertEquals(12, ViewConfiguration.getEdgeSlop());
    assertEquals(16, ViewConfiguration.getTouchSlop());
    assertEquals(16, ViewConfiguration.getWindowTouchSlop());
    assertEquals(50, ViewConfiguration.getMinimumFlingVelocity());
    assertEquals(4000, ViewConfiguration.getMaximumFlingVelocity());
    assertEquals(480 * 800 * 4, ViewConfiguration.getMaximumDrawingCacheSize());
    assertEquals(3000, ViewConfiguration.getZoomControlsTimeout());
    assertEquals(500, ViewConfiguration.getGlobalActionKeyTimeout());
    assertThat(ViewConfiguration.getScrollFriction()).isEqualTo(0.015f);

    assertThat(context.getResources().getDisplayMetrics().density).isEqualTo(1f);

    assertEquals(10, viewConfiguration.getScaledScrollBarSize());
    assertEquals(12, viewConfiguration.getScaledFadingEdgeLength());
    assertEquals(12, viewConfiguration.getScaledEdgeSlop());
    assertEquals(16, viewConfiguration.getScaledTouchSlop());
    assertEquals(32, viewConfiguration.getScaledPagingTouchSlop());
    assertEquals(100, viewConfiguration.getScaledDoubleTapSlop());
    assertEquals(16, viewConfiguration.getScaledWindowTouchSlop());
    assertEquals(50, viewConfiguration.getScaledMinimumFlingVelocity());
    assertEquals(4000, viewConfiguration.getScaledMaximumFlingVelocity());
    // The min value of getScaledMaximumDrawingCacheSize is 480 * 800 * 4.
    assertEquals(480 * 800 * 4, viewConfiguration.getScaledMaximumDrawingCacheSize());
  }

  @Test
  public void methodsShouldReturnScaledAndroidConstantsDependingOnPixelDensity() {
    context.getResources().getDisplayMetrics().density = 1.5f;
    ViewConfiguration viewConfiguration = ViewConfiguration.get(context);

    assertEquals(15, viewConfiguration.getScaledScrollBarSize());
    assertEquals(18, viewConfiguration.getScaledFadingEdgeLength());
    assertEquals(18, viewConfiguration.getScaledEdgeSlop());
    assertEquals(24, viewConfiguration.getScaledTouchSlop());
    assertEquals(48, viewConfiguration.getScaledPagingTouchSlop());
    assertEquals(150, viewConfiguration.getScaledDoubleTapSlop());
    assertEquals(24, viewConfiguration.getScaledWindowTouchSlop());
    assertEquals(75, viewConfiguration.getScaledMinimumFlingVelocity());
    assertEquals(6000, viewConfiguration.getScaledMaximumFlingVelocity());
  }

  @Test
  public void testHasPermanentMenuKey() {
    ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
    assertThat(viewConfiguration.hasPermanentMenuKey()).isTrue();

    ShadowViewConfiguration shadowViewConfiguration = shadowOf(viewConfiguration);
    shadowViewConfiguration.setHasPermanentMenuKey(false);
    assertThat(viewConfiguration.hasPermanentMenuKey()).isFalse();
  }

  @Config(qualifiers = "w420dp-h800dp-xxxhdpi")
  @Test
  public void getScaledMaximumFlingVelocity_scalesWithDisplaySize() {
    ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
    int expected = 4 * (4 * 420) * (4 * 800);
    assertThat(viewConfiguration.getScaledMaximumDrawingCacheSize()).isEqualTo(expected);
  }

  @Config(qualifiers = "w100dp-h500dp")
  @Test
  public void getScaledMaximumFlingVelocity_minValue() {
    ViewConfiguration viewConfiguration = ViewConfiguration.get(context);
    int expected = 480 * 800 * 4; // The min value
    assertThat(viewConfiguration.getScaledMaximumDrawingCacheSize()).isEqualTo(expected);
  }
}