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);
}
}
|