1package com.xtremelabs.robolectric.shadows;
2
3import static com.xtremelabs.robolectric.Robolectric.shadowOf;
4import static org.hamcrest.CoreMatchers.equalTo;
5import static org.hamcrest.CoreMatchers.is;
6import static org.junit.Assert.assertThat;
7
8import org.junit.Before;
9import org.junit.Test;
10import org.junit.runner.RunWith;
11
12import android.app.Activity;
13import android.content.Context;
14import android.os.Vibrator;
15
16import com.xtremelabs.robolectric.WithTestDefaultsRunner;
17
18@RunWith(WithTestDefaultsRunner.class)
19public class VibratorTest {
20    private Vibrator vibrator;
21    private ShadowVibrator shadowVibrator;
22
23    @Before
24    public void before() {
25        vibrator = (Vibrator) new Activity().getSystemService(Context.VIBRATOR_SERVICE);
26        shadowVibrator = shadowOf(vibrator);
27    }
28
29    @Test
30    public void vibrateMilliseconds() {
31        vibrator.vibrate(5000);
32
33        assertThat(shadowVibrator.isVibrating(), is(true));
34        assertThat(shadowVibrator.getMilliseconds(), equalTo(5000L));
35    }
36
37    @Test
38    public void vibratePattern() {
39        long[] pattern = new long[] { 0, 200 };
40        vibrator.vibrate(pattern, 2);
41
42        assertThat(shadowVibrator.isVibrating(), is(true));
43        assertThat(shadowVibrator.getPattern(), equalTo(pattern));
44        assertThat(shadowVibrator.getRepeat(), equalTo(2));
45    }
46
47    @Test
48    public void cancelled() {
49        vibrator.vibrate(5000);
50        assertThat(shadowVibrator.isVibrating(), is(true));
51        assertThat(shadowVibrator.isCancelled(), is(false));
52        vibrator.cancel();
53
54        assertThat(shadowVibrator.isVibrating(), is(false));
55        assertThat(shadowVibrator.isCancelled(), is(true));
56    }
57}