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