package org.robolectric.shadows;
import android.widget.SeekBar;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.Shadows;
import org.robolectric.TestRunners;
import java.util.ArrayList;
import java.util.List;
import static org.assertj.core.api.Assertions.assertThat;
@RunWith(TestRunners.MultiApiSelfTest.class)
public class ShadowSeekBarTest {
private SeekBar seekBar;
private ShadowSeekBar shadow;
private SeekBar.OnSeekBarChangeListener listener;
private List<String> transcript;
@Before
public void setup() {
seekBar = new SeekBar(RuntimeEnvironment.application);
shadow = Shadows.shadowOf(seekBar);
listener = new TestSeekBarChangedListener();
transcript = new ArrayList<>();
seekBar.setOnSeekBarChangeListener(listener);
}
@Test
public void testOnSeekBarChangedListener() {
assertThat(shadow.getOnSeekBarChangeListener()).isSameAs(listener);
seekBar.setOnSeekBarChangeListener(null);
assertThat(shadow.getOnSeekBarChangeListener()).isNull();
}
@Test
public void testOnChangeNotification() {
seekBar.setProgress(5);
assertThat(transcript).containsExactly("onProgressChanged() - 5");
}
private class TestSeekBarChangedListener implements SeekBar.OnSeekBarChangeListener {
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
transcript.add("onProgressChanged() - " + progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
}
}
}