Skip to content

Commit fc7123d

Browse files
Add Robolectric tests for edge-to-edge delegate
1 parent a82cdd8 commit fc7123d

File tree

3 files changed

+68
-0
lines changed

3 files changed

+68
-0
lines changed

app/build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,7 @@ dependencies {
105105
// Testing
106106
testImplementation libs.junit
107107
testImplementation libs.androidx.core.testing
108+
testImplementation libs.robolectric
108109
testImplementation libs.mockito.core
109110
testImplementation libs.mockito.inline
110111
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.d4rk.androidtutorials.java.utils;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import android.app.Activity;
6+
import android.view.View;
7+
8+
import androidx.core.graphics.Insets;
9+
import androidx.core.view.ViewCompat;
10+
import androidx.core.view.WindowInsetsCompat;
11+
12+
import org.junit.Test;
13+
import org.junit.runner.RunWith;
14+
import org.robolectric.Robolectric;
15+
import org.robolectric.RobolectricTestRunner;
16+
17+
@RunWith(RobolectricTestRunner.class)
18+
public class EdgeToEdgeDelegateTest {
19+
20+
@Test
21+
public void apply_setsContainerPaddingToSystemBarInsets() {
22+
Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
23+
View container = new View(activity);
24+
25+
EdgeToEdgeDelegate.apply(activity, container);
26+
27+
Insets bars = Insets.of(4, 8, 12, 16);
28+
WindowInsetsCompat windowInsets = new WindowInsetsCompat.Builder()
29+
.setInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout(), bars)
30+
.build();
31+
32+
ViewCompat.dispatchApplyWindowInsets(container, windowInsets);
33+
34+
assertEquals(bars.left, container.getPaddingLeft());
35+
assertEquals(bars.top, container.getPaddingTop());
36+
assertEquals(bars.right, container.getPaddingRight());
37+
assertEquals(bars.bottom, container.getPaddingBottom());
38+
}
39+
40+
@Test
41+
public void applyBottomBar_setsContainerTopPaddingAndBottomBarPadding() {
42+
Activity activity = Robolectric.buildActivity(Activity.class).setup().get();
43+
View container = new View(activity);
44+
View bottomBar = new View(activity);
45+
46+
EdgeToEdgeDelegate.applyBottomBar(activity, container, bottomBar);
47+
48+
Insets bars = Insets.of(3, 6, 9, 12);
49+
WindowInsetsCompat windowInsets = new WindowInsetsCompat.Builder()
50+
.setInsets(WindowInsetsCompat.Type.systemBars() | WindowInsetsCompat.Type.displayCutout(), bars)
51+
.build();
52+
53+
ViewCompat.dispatchApplyWindowInsets(container, windowInsets);
54+
55+
assertEquals(bars.left, container.getPaddingLeft());
56+
assertEquals(bars.top, container.getPaddingTop());
57+
assertEquals(bars.right, container.getPaddingRight());
58+
assertEquals(0, container.getPaddingBottom());
59+
60+
assertEquals(0, bottomBar.getPaddingLeft());
61+
assertEquals(0, bottomBar.getPaddingTop());
62+
assertEquals(0, bottomBar.getPaddingRight());
63+
assertEquals(bars.bottom, bottomBar.getPaddingBottom());
64+
}
65+
}

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ lifecycle = "2.9.3"
1717
lottie = "6.6.7"
1818
mockitoCore = "5.19.0"
1919
mockitoInline = "5.2.0"
20+
robolectric = "4.12.2"
2021
navigationUi = "2.9.4"
2122
preference = "1.2.1"
2223
review = "2.0.2"
@@ -61,6 +62,7 @@ material = { module = "com.google.android.material:material", version.ref = "mat
6162
materialratingbar-library = { module = "me.zhanghai.android.materialratingbar:library", version.ref = "libraryVersion" }
6263
mockito-core = { module = "org.mockito:mockito-core", version.ref = "mockitoCore" }
6364
mockito-inline = { module = "org.mockito:mockito-inline", version.ref = "mockitoInline" }
65+
robolectric = { module = "org.robolectric:robolectric", version.ref = "robolectric" }
6466
play-services-ads = { module = "com.google.android.gms:play-services-ads", version.ref = "playServicesAds" }
6567
review = { module = "com.google.android.play:review", version.ref = "review" }
6668
volley = { module = "com.android.volley:volley", version.ref = "volley" }

0 commit comments

Comments
 (0)