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