1f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project/* 2f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project 3f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 4f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * you may not use this file except in compliance with the License. 6f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * You may obtain a copy of the License at 7f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 8f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * 10f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * See the License for the specific language governing permissions and 14f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project * limitations under the License. 15f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project */ 16f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 17f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpackage android.text.style.cts; 18f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 19f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 204f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubachimport android.os.Parcel; 214f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubachimport android.text.TextPaint; 224f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubachimport android.text.style.RelativeSizeSpan; 234f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 244f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubachimport junit.framework.TestCase; 254f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 26f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Projectpublic class RelativeSizeSpanTest extends TestCase { 27f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testConstructor() { 284f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(1.0f); 294f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 304f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach Parcel p = Parcel.obtain(); 3130a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot try { 3230a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot relativeSizeSpan.writeToParcel(p, 0); 3330a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot p.setDataPosition(0); 3430a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot new RelativeSizeSpan(p); 35f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 3630a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot new RelativeSizeSpan(-1.0f); 3730a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot } finally { 3830a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot p.recycle(); 3930a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot } 40f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 41f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 42f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testGetSizeChange() { 43f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(2.0f); 44f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(2.0f, relativeSizeSpan.getSizeChange()); 45f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 46f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan = new RelativeSizeSpan(-2.0f); 47f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(-2.0f, relativeSizeSpan.getSizeChange()); 48f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 49f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 50f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testUpdateMeasureState() { 51f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project float proportion = 3.0f; 52f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(proportion); 53f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 54f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project TextPaint tp = new TextPaint(); 55f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project tp.setTextSize(2.0f); 56f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project float oldSize = tp.getTextSize(); 57f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateMeasureState(tp); 58f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(2.0f * proportion, tp.getTextSize()); 59f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 60f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // setTextSize, the value must >0, so set to negative is useless. 61f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project tp.setTextSize(-3.0f); 62f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project oldSize = tp.getTextSize(); 63f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateMeasureState(tp); 64f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(oldSize * proportion, tp.getTextSize()); 65f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 66f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 67f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateMeasureState(null); 68f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("should throw NullPointerException."); 69f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (NullPointerException e) { 70f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // expected, test success. 71f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 72f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 73f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 74f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project public void testUpdateDrawState() { 75f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project float proportion = 3.0f; 76f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(proportion); 77f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 78f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project TextPaint tp = new TextPaint(); 79f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project tp.setTextSize(2.0f); 80f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project float oldSize = tp.getTextSize(); 81f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateDrawState(tp); 82f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(oldSize * proportion, tp.getTextSize()); 83f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 84f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // setTextSize, the value must >0, so set to negative is useless. 85f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project tp.setTextSize(-3.0f); 86f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project oldSize = tp.getTextSize(); 87f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateDrawState(tp); 88f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project assertEquals(oldSize * proportion, tp.getTextSize()); 89f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project 90f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project try { 91f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project relativeSizeSpan.updateDrawState(null); 92f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project fail("should throw NullPointerException."); 93f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } catch (NullPointerException e) { 94f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project // expected, test success. 95f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 96f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project } 974f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 984f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach public void testDescribeContents() { 994f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(2.0f); 1004f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach relativeSizeSpan.describeContents(); 1014f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach } 1024f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 1034f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach public void testGetSpanTypeId() { 1044f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(2.0f); 1054f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach relativeSizeSpan.getSpanTypeId(); 1064f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach } 1074f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach 1084f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach public void testWriteToParcel() { 1094f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach Parcel p = Parcel.obtain(); 11030a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot try { 11130a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot float proportion = 3.0f; 11230a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot RelativeSizeSpan relativeSizeSpan = new RelativeSizeSpan(proportion); 11330a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot relativeSizeSpan.writeToParcel(p, 0); 11430a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot p.setDataPosition(0); 11530a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot RelativeSizeSpan newSpan = new RelativeSizeSpan(p); 11630a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot assertEquals(proportion, newSpan.getSizeChange()); 11730a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot } finally { 11830a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot p.recycle(); 11930a5c5d2b1caa999829a7924ff24ab33efed5c5bBrett Chabot } 1204f5067b94980b162e7cb8678f4a37fa401f6a8d5Phil Dubach } 121f8057104af9cae031b544e971a52adafa7c0d9eThe Android Open Source Project} 122