Home | History | Annotate | Download | only in cts
      1 /*
      2  * Copyright (C) 2008 The Android Open Source Project
      3  *
      4  * Licensed under the Apache License, Version 2.0 (the "License");
      5  * you may not use this file except in compliance with the License.
      6  * You may obtain a copy of the License at
      7  *
      8  *      http://www.apache.org/licenses/LICENSE-2.0
      9  *
     10  * Unless required by applicable law or agreed to in writing, software
     11  * distributed under the License is distributed on an "AS IS" BASIS,
     12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     13  * See the License for the specific language governing permissions and
     14  * limitations under the License.
     15  */
     16 
     17 package android.text.style.cts;
     18 
     19 import static org.junit.Assert.assertEquals;
     20 import static org.junit.Assert.assertTrue;
     21 
     22 import android.graphics.Canvas;
     23 import android.graphics.Color;
     24 import android.graphics.Paint;
     25 import android.os.Parcel;
     26 import android.support.test.filters.SmallTest;
     27 import android.support.test.runner.AndroidJUnit4;
     28 import android.text.Html;
     29 import android.text.Spanned;
     30 import android.text.style.BulletSpan;
     31 
     32 import org.junit.Test;
     33 import org.junit.runner.RunWith;
     34 
     35 @SmallTest
     36 @RunWith(AndroidJUnit4.class)
     37 public class BulletSpanTest {
     38 
     39     @Test
     40     public void testDefaultConstructor() {
     41         BulletSpan bulletSpan = new BulletSpan();
     42         assertEquals(calculateLeadingMargin(bulletSpan.getGapWidth(), bulletSpan.getBulletRadius()),
     43                 bulletSpan.getLeadingMargin(true));
     44         assertEquals(0, bulletSpan.getColor());
     45         assertEquals(BulletSpan.STANDARD_GAP_WIDTH, bulletSpan.getGapWidth());
     46         assertTrue(bulletSpan.getBulletRadius() > 0);
     47     }
     48 
     49     @Test
     50     public void testConstructorFromGapWidth() {
     51         BulletSpan bulletSpan = new BulletSpan(2);
     52         assertEquals(calculateLeadingMargin(2, bulletSpan.getBulletRadius()),
     53                 bulletSpan.getLeadingMargin(true));
     54         assertEquals(0, bulletSpan.getColor());
     55         assertEquals(2, bulletSpan.getGapWidth());
     56         assertTrue(bulletSpan.getBulletRadius() > 0);
     57     }
     58 
     59     @Test
     60     public void testConstructorFromGapWidthColor() {
     61         BulletSpan bulletSpan = new BulletSpan(2, Color.RED);
     62         assertEquals(bulletSpan.getBulletRadius() * 2 + bulletSpan.getGapWidth(),
     63                 bulletSpan.getLeadingMargin(true));
     64         assertEquals(Color.RED, bulletSpan.getColor());
     65         assertEquals(2, bulletSpan.getGapWidth());
     66         assertTrue(bulletSpan.getBulletRadius() > 0);
     67     }
     68 
     69     @Test
     70     public void testConstructorFromGapWidthColorBulletRadius() {
     71         BulletSpan bulletSpan = new BulletSpan(2, Color.RED, 10);
     72         assertEquals(calculateLeadingMargin(2, 10), bulletSpan.getLeadingMargin(true));
     73         assertEquals(Color.RED, bulletSpan.getColor());
     74         assertEquals(2, bulletSpan.getGapWidth());
     75         assertEquals(10, bulletSpan.getBulletRadius());
     76     }
     77 
     78     @Test
     79     public void testGetLeadingMargin() {
     80         BulletSpan bulletSpan = new BulletSpan(1);
     81         int leadingMargin1 = bulletSpan.getLeadingMargin(true);
     82 
     83         bulletSpan = new BulletSpan(4);
     84         int leadingMargin2 = bulletSpan.getLeadingMargin(false);
     85 
     86         assertTrue(leadingMargin2 > leadingMargin1);
     87     }
     88 
     89     @Test
     90     public void testDrawLeadingMargin() {
     91         BulletSpan bulletSpan = new BulletSpan(10, 20);
     92 
     93         Canvas canvas = new Canvas();
     94         Paint paint = new Paint();
     95         Spanned text = Html.fromHtml("<b>hello</b>");
     96 
     97         bulletSpan.drawLeadingMargin(canvas, paint, 10, 0, 10, 0, 20, text, 0, 0, true, null);
     98     }
     99 
    100     @Test(expected = ClassCastException.class)
    101     public void testDrawLeadingMarginString() {
    102         BulletSpan bulletSpan = new BulletSpan(10, 20);
    103 
    104         String text = "cts test.";
    105         // Should throw ClassCastException when use a String as text
    106         bulletSpan.drawLeadingMargin(null, null, 0, 0, 0, 0, 0, text, 0, 0, true, null);
    107     }
    108 
    109     @Test(expected = NullPointerException.class)
    110     public void testDrawLeadingMarginNull() {
    111         BulletSpan bulletSpan = new BulletSpan(10, 20);
    112 
    113         // Should throw NullPointerException when text is null
    114         bulletSpan.drawLeadingMargin(null, null, 0, 0, 0, 0, 0, null, 0, 0, false, null);
    115     }
    116 
    117     @Test
    118     public void testDescribeContents() {
    119         BulletSpan bulletSpan = new BulletSpan();
    120         bulletSpan.describeContents();
    121     }
    122 
    123     @Test
    124     public void testGetSpanTypeId() {
    125         BulletSpan bulletSpan = new BulletSpan();
    126         bulletSpan.getSpanTypeId();
    127     }
    128 
    129     @Test
    130     public void testWriteToParcel() {
    131         int leadingMargin1 = 0;
    132         int leadingMargin2 = 0;
    133 
    134         Parcel p = Parcel.obtain();
    135         try {
    136             BulletSpan bulletSpan = new BulletSpan(2, Color.RED, 5);
    137             bulletSpan.writeToParcel(p, 0);
    138             p.setDataPosition(0);
    139             BulletSpan b = new BulletSpan(p);
    140             leadingMargin1 = b.getLeadingMargin(true);
    141             assertEquals(calculateLeadingMargin(2, 5), leadingMargin1);
    142             assertEquals(Color.RED, b.getColor());
    143             assertEquals(2, b.getGapWidth());
    144         } finally {
    145             p.recycle();
    146         }
    147 
    148         p = Parcel.obtain();
    149         try {
    150             BulletSpan bulletSpan = new BulletSpan();
    151             bulletSpan.writeToParcel(p, 0);
    152             p.setDataPosition(0);
    153             BulletSpan b = new BulletSpan(p);
    154             leadingMargin2 = b.getLeadingMargin(true);
    155             assertEquals(calculateLeadingMargin(b.getGapWidth(), b.getBulletRadius()),
    156                     leadingMargin2);
    157             assertEquals(0, bulletSpan.getColor());
    158             assertEquals(BulletSpan.STANDARD_GAP_WIDTH, bulletSpan.getGapWidth());
    159         } finally {
    160             p.recycle();
    161         }
    162     }
    163 
    164     private int calculateLeadingMargin(int gapWidth, int bulletRadius) {
    165         return 2 * bulletRadius + gapWidth;
    166     }
    167 }
    168