Skip to content

Commit

Permalink
Merge pull request #6805 from robolectric/piper_406297901
Browse files Browse the repository at this point in the history
Add ShadowTimePickerDialog.getIs24HourView
  • Loading branch information
hoisie committed Nov 10, 2021
2 parents 35f65d3 + 53b05c3 commit 76b8a59
Show file tree
Hide file tree
Showing 2 changed files with 39 additions and 9 deletions.
Expand Up @@ -4,6 +4,7 @@
import static org.robolectric.Shadows.shadowOf;

import android.app.TimePickerDialog;
import android.os.Bundle;
import androidx.test.core.app.ApplicationProvider;
import androidx.test.ext.junit.runners.AndroidJUnit4;
import org.junit.Test;
Expand All @@ -13,11 +14,23 @@
public class ShadowTimePickerDialogTest {

@Test
public void returnsTheIntialHourAndMinutePassedIntoTheTimePickerDialog() {
public void testGettersReturnInitialConstructorValues() {
TimePickerDialog timePickerDialog =
new TimePickerDialog(ApplicationProvider.getApplicationContext(), 0, null, 6, 55, false);
new TimePickerDialog(ApplicationProvider.getApplicationContext(), 0, null, 6, 55, true);
ShadowTimePickerDialog shadow = shadowOf(timePickerDialog);
assertThat(shadow.getHourOfDay()).isEqualTo(6);
assertThat(shadow.getMinute()).isEqualTo(55);
assertThat(shadow.getIs24HourView()).isEqualTo(true);
}

@Test
public void updateTime_shouldUpdateHourAndMinute() {
TimePickerDialog timePickerDialog =
new TimePickerDialog(ApplicationProvider.getApplicationContext(), 0, null, 6, 55, true);
timePickerDialog.updateTime(1, 2);

Bundle bundle = timePickerDialog.onSaveInstanceState();
assertThat(bundle.getInt("hour")).isEqualTo(1);
assertThat(bundle.getInt("minute")).isEqualTo(2);
}
}
@@ -1,20 +1,22 @@
package org.robolectric.shadows;

import static org.robolectric.util.ReflectionHelpers.ClassParameter;
import static org.robolectric.util.reflector.Reflector.reflector;

import android.app.TimePickerDialog;
import android.content.Context;
import android.widget.TimePicker;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
import org.robolectric.annotation.RealObject;
import org.robolectric.shadow.api.Shadow;
import org.robolectric.util.ReflectionHelpers.ClassParameter;
import org.robolectric.util.reflector.Accessor;
import org.robolectric.util.reflector.ForType;

@Implements(value = TimePickerDialog.class)
public class ShadowTimePickerDialog extends ShadowAlertDialog {
@RealObject
protected TimePickerDialog realTimePickerDialog;
private int hourOfDay;
private int minute;

@Implementation
protected void __constructor__(
Expand All @@ -24,8 +26,6 @@ protected void __constructor__(
int hourOfDay,
int minute,
boolean is24HourView) {
this.hourOfDay = hourOfDay;
this.minute = minute;

Shadow.invokeConstructor(TimePickerDialog.class, realTimePickerDialog,
ClassParameter.from(Context.class, context),
Expand All @@ -37,10 +37,27 @@ protected void __constructor__(
}

public int getHourOfDay() {
return hourOfDay;
return reflector(TimePickerDialogProvider.class, realTimePickerDialog)
.getTimePicker()
.getCurrentHour();
}

public int getMinute() {
return minute;
return reflector(TimePickerDialogProvider.class, realTimePickerDialog)
.getTimePicker()
.getCurrentMinute();
}

public boolean getIs24HourView() {
return reflector(TimePickerDialogProvider.class, realTimePickerDialog)
.getTimePicker()
.is24HourView();
}

@ForType(TimePickerDialog.class)
interface TimePickerDialogProvider {

@Accessor("mTimePicker")
TimePicker getTimePicker();
}
}

0 comments on commit 76b8a59

Please sign in to comment.