Fix bug #5197549 android.text.cts.StaticLayoutTest#testGetEllipsisCount fails on IRK49E mysid-userdebug
- update tests to reflect the Framework code:
allow ellipsizing only and only if
- not MARQUEE
- single line
- END only on the last visible line when multiple lines
Change-Id: Iab4dbc6ac8da9636c0961eb7523a45b3d0b7050f
diff --git a/tests/tests/text/src/android/text/cts/StaticLayoutTest.java b/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
index f0f9627..a806e0a 100644
--- a/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
+++ b/tests/tests/text/src/android/text/cts/StaticLayoutTest.java
@@ -19,6 +19,7 @@
import android.test.AndroidTestCase;
import android.text.Editable;
import android.text.StaticLayout;
+import android.text.TextDirectionHeuristics;
import android.text.TextPaint;
import android.text.TextUtils;
import android.text.Layout.Alignment;
@@ -43,6 +44,8 @@
private static final CharSequence LAYOUT_TEXT = "CharSe\tq\nChar"
+ "Sequence\nCharSequence\nHelllo\n, world\nLongLongLong";
+ private static final CharSequence LAYOUT_TEXT_SINGLE_LINE = "CharSequence";
+
private static final int VERTICAL_BELOW_TEXT = 1000;
private static final Alignment DEFAULT_ALIGN = Alignment.ALIGN_CENTER;
@@ -74,6 +77,19 @@
TextUtils.TruncateAt.MIDDLE, ELLIPSIZE_WIDTH);
}
+ private StaticLayout createEllipsizeStaticLayout(CharSequence text,
+ TextUtils.TruncateAt ellipsize, int maxLines) {
+ return new StaticLayout(text, 0, text.length(),
+ mDefaultPaint, DEFAULT_OUTER_WIDTH, DEFAULT_ALIGN,
+ TextDirectionHeuristics.FIRSTSTRONG_LTR,
+ SPACE_MULTI, SPACE_ADD, true /* include pad */,
+ ellipsize,
+ ELLIPSIZE_WIDTH,
+ maxLines);
+ }
+
+
+
/**
* Constructor test
*/
@@ -362,9 +378,17 @@
@ToBeFixed(bug = "1695243", explanation = "should add @throws clause into javadoc "
+ " of StaticLayout#getEllipsisCount(int) when line is out of bound")
public void testGetEllipsisCount() {
- mDefaultLayout = createEllipsizeStaticLayout();
- assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
- assertTrue(mDefaultLayout.getEllipsisCount(1) > 0);
+ // Multilines (6 lines) and TruncateAt.START so no ellipsis at all
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT,
+ TextUtils.TruncateAt.MIDDLE,
+ Integer.MAX_VALUE /* maxLines */);
+
+ assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(1) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(2) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(3) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(4) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(5) == 0);
try {
mDefaultLayout.getEllipsisCount(-1);
@@ -377,6 +401,66 @@
fail("should throw ArrayIndexOutOfBoundsException");
} catch (ArrayIndexOutOfBoundsException e) {
}
+
+ // Multilines (6 lines) and TruncateAt.MIDDLE so no ellipsis at all
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT,
+ TextUtils.TruncateAt.MIDDLE,
+ Integer.MAX_VALUE /* maxLines */);
+
+ assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(1) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(2) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(3) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(4) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(5) == 0);
+
+ // Multilines (6 lines) and TruncateAt.END so ellipsis only on the last line
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT,
+ TextUtils.TruncateAt.END,
+ Integer.MAX_VALUE /* maxLines */);
+
+ assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(1) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(2) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(3) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(4) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(5) > 0);
+
+ // Multilines (6 lines) and TruncateAt.MARQUEE so ellipsis only on the last line
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT,
+ TextUtils.TruncateAt.END,
+ Integer.MAX_VALUE /* maxLines */);
+
+ assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(1) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(2) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(3) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(4) == 0);
+ assertTrue(mDefaultLayout.getEllipsisCount(5) > 0);
+
+ // Single line case and TruncateAt.END so that we have some ellipsis
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.END,
+ 1);
+ assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
+
+ // Single line case and TruncateAt.MIDDLE so that we have some ellipsis
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.MIDDLE,
+ 1);
+ assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
+
+ // Single line case and TruncateAt.END so that we have some ellipsis
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.END,
+ 1);
+ assertTrue(mDefaultLayout.getEllipsisCount(0) > 0);
+
+ // Single line case and TruncateAt.MARQUEE so that we have NO ellipsis
+ mDefaultLayout = createEllipsizeStaticLayout(LAYOUT_TEXT_SINGLE_LINE,
+ TextUtils.TruncateAt.MARQUEE,
+ 1);
+ assertTrue(mDefaultLayout.getEllipsisCount(0) == 0);
}
/*