1package org.robolectric.shadows;
2
3import static org.assertj.core.api.Assertions.assertThat;
4import static org.junit.Assert.assertFalse;
5import static org.junit.Assert.assertTrue;
6import static org.robolectric.Shadows.shadowOf;
7
8import android.graphics.Color;
9import android.graphics.Paint;
10import org.junit.Test;
11import org.junit.runner.RunWith;
12import org.robolectric.RobolectricTestRunner;
13import org.robolectric.shadow.api.Shadow;
14
15@RunWith(RobolectricTestRunner.class)
16public class ShadowPaintTest {
17
18  @Test
19  public void shouldGetIsDitherInfo() {
20    Paint paint = Shadow.newInstanceOf(Paint.class);
21    assertFalse(paint.isAntiAlias());
22    ShadowPaint shadowPaint = shadowOf(paint);
23    shadowPaint.setAntiAlias(true);
24    assertTrue(paint.isAntiAlias());
25  }
26
27  @Test
28  public void shouldGetIsAntiAlias() {
29    Paint paint = Shadow.newInstanceOf(Paint.class);
30    assertFalse(paint.isAntiAlias());
31    ShadowPaint shadowPaint = shadowOf(paint);
32    shadowPaint.setAntiAlias(true);
33    assertTrue(paint.isAntiAlias());
34    shadowPaint.setAntiAlias(false);
35    assertFalse(paint.isAntiAlias());
36  }
37
38  @Test
39  public void testCtor() {
40    Paint paint = Shadow.newInstanceOf(Paint.class);
41    assertFalse(paint.isAntiAlias());
42    ShadowPaint shadowPaint = shadowOf(paint);
43    shadowPaint.__constructor__( Paint.ANTI_ALIAS_FLAG );
44    assertTrue(paint.isAntiAlias());
45  }
46
47  @Test
48  public void testCtorWithPaint() {
49    Paint paint = new Paint();
50    paint.setColor(Color.RED);
51    paint.setAlpha(72);
52    paint.setFlags(2345);
53
54    Paint other = new Paint(paint);
55    assertThat(other.getColor()).isEqualTo(Color.RED);
56    assertThat(other.getAlpha()).isEqualTo(72);
57    assertThat(other.getFlags()).isEqualTo(2345);
58  }
59
60  @Test
61  public void shouldGetAndSetTextAlignment() throws Exception {
62    Paint paint = Shadow.newInstanceOf(Paint.class);
63    assertThat(paint.getTextAlign()).isEqualTo(Paint.Align.LEFT);
64    paint.setTextAlign(Paint.Align.CENTER);
65    assertThat(paint.getTextAlign()).isEqualTo(Paint.Align.CENTER);
66  }
67
68  @Test
69  public void measureTextActuallyMeasuresLength() throws Exception {
70    Paint paint = Shadow.newInstanceOf(Paint.class);
71    assertThat(paint.measureText("Hello")).isEqualTo(5);
72    assertThat(paint.measureText("Hello", 1, 3)).isEqualTo(2);
73    assertThat(paint.measureText(new StringBuilder("Hello"), 1, 4)).isEqualTo(3);
74  }
75
76  @Test
77  public void createPaintFromPaint() throws Exception {
78    Paint origPaint = new Paint();
79    assertThat(new Paint(origPaint).getTextLocale()).isSameAs(origPaint.getTextLocale());
80  }
81}
82