1 /* 2 * Copyright (C) 2016 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 com.android.internal.widget; 18 19 import static org.junit.Assert.assertTrue; 20 21 import android.content.Context; 22 import android.support.test.InstrumentationRegistry; 23 import android.support.test.filters.SmallTest; 24 import android.view.View.MeasureSpec; 25 import android.widget.TextView; 26 27 import org.junit.Before; 28 import org.junit.Test; 29 30 @SmallTest 31 public class ImageFloatingTextViewTest { 32 33 private Context mContext; 34 private ImageFloatingTextView mView; 35 private TextView mTextView; 36 37 @Before 38 public void setup() { 39 mContext = InstrumentationRegistry.getTargetContext(); 40 mView = new ImageFloatingTextView(mContext, null, 0, 0); 41 mView.setMaxLines(9); 42 mTextView = new TextView(mContext, null, 0, 0); 43 mTextView.setMaxLines(9); 44 } 45 46 @Test 47 public void testEmpty() { 48 parametrizedTest(""); 49 } 50 51 @Test 52 public void testSingleLine() { 53 parametrizedTest("Hello, World!"); 54 } 55 56 @Test 57 public void testTwoLine() { 58 parametrizedTest("Hello, World!\nWhat a nice day!"); 59 } 60 61 @Test 62 public void testShort() { 63 parametrizedTest("Hello, World! What a nice day! Let's try some more text. " 64 + "Yada yada, yada yada. Lorem ipsum dolor sit amet."); 65 } 66 67 @Test 68 public void testLong() { 69 parametrizedTest("Hello, World! What a nice day! Let's try some more text. " 70 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 71 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 72 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 73 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 74 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 75 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 76 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 77 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 78 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 79 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 80 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 81 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 82 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 83 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 84 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 85 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 86 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 87 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 88 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 89 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 90 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 91 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 92 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 93 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 94 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 95 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 96 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 97 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 98 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 99 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 100 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 101 + "Yada yada, yada yada. Lorem ipsum dolor sit amet." 102 + "Yada yada, yada yada. Lorem ipsum dolor sit amet."); 103 } 104 105 private void parametrizedTest(CharSequence text) { 106 int heightMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.AT_MOST); 107 int widthMeasureSpec = MeasureSpec.makeMeasureSpec(500, MeasureSpec.EXACTLY); 108 109 mTextView.setText(text); 110 mView.setText(text); 111 112 mTextView.measure(widthMeasureSpec, heightMeasureSpec); 113 mView.measure(widthMeasureSpec, heightMeasureSpec); 114 115 // We're at most allowed to be the same height as the regular textview and maybe a bit 116 // smaller since our layout snaps to full textlines. 117 assertTrue("The measured view should never be taller then the normal textview!", 118 mView.getMeasuredHeight() <= mTextView.getMeasuredHeight()); 119 } 120 } 121