Merge "Move text coretests to JUnit (1)" into oc-dev

am: e0857a5800

Change-Id: I295b78a4397bb6409eef1963362b766c0ea78640
This commit is contained in:
Andrei Stingaceanu
2017-05-03 09:48:11 +00:00
committed by android-build-merger
12 changed files with 257 additions and 183 deletions

View File

@@ -16,17 +16,26 @@
package android.text;
import junit.framework.TestCase;
import static android.text.Layout.Alignment.ALIGN_NORMAL;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Tests DynamciLayout updateBlocks method.
* Tests DynamicLayout updateBlocks method.
*
* Requires disabling access checks in the vm since this calls package-private APIs.
*
*/
public class DynamicLayoutBlocksTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class DynamicLayoutBlocksTest {
private DynamicLayout dl = new DynamicLayout("", new TextPaint(), 0, ALIGN_NORMAL, 0, 0, false);
private static final int ___ = DynamicLayout.INVALID_BLOCK_INDEX;
@@ -88,6 +97,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState(sizes, ids);
}
@Test
public void testFrom0() {
defineInitialState( new int[] { 0 }, new int[] { 123 });
@@ -101,6 +111,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 10 } );
}
@Test
public void testFrom1ReplaceByEmpty() {
defineInitialState( new int[] { 100 }, new int[] { 123 });
@@ -126,6 +137,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 100 } );
}
@Test
public void testFrom1ReplaceFromFirstLine() {
defineInitialState( new int[] { 100 }, new int[] { 123 });
@@ -142,6 +154,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 20 } );
}
@Test
public void testFrom1ReplaceFromCenter() {
defineInitialState( new int[] { 100 }, new int[] { 123 });
@@ -158,6 +171,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 20, 50 } );
}
@Test
public void testFrom1ReplaceFromEnd() {
defineInitialState( new int[] { 100 }, new int[] { 123 });
@@ -171,6 +185,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 100, 10 } );
}
@Test
public void testFrom2ReplaceFromFirstLine() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -187,6 +202,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 50 }, new int[] { ___ } );
}
@Test
public void testFrom2ReplaceFromFirstBlock() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -203,6 +219,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 3, 50 }, new int[] { ___, ___ } );
}
@Test
public void testFrom2ReplaceFromBottomBoundary() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -216,6 +233,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 10, 50 }, new int[] { ___, ___ } );
}
@Test
public void testFrom2ReplaceFromTopBoundary() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -229,6 +247,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 11, 50 }, new int[] { 123, ___ } );
}
@Test
public void testFrom2ReplaceFromSecondBlock() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -242,6 +261,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 11, 14-11, 50 }, new int[] { 123, ___, ___ } );
}
@Test
public void testFrom2RemoveFromFirst() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -258,6 +278,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 0 }, new int[] { ___ } );
}
@Test
public void testFrom2RemoveFromFirstBlock() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -274,6 +295,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 4 }, new int[] { ___ } );
}
@Test
public void testFrom2RemoveFromSecondBlock() {
defineInitialState( new int[] { 10, 20 }, new int[] { 123, 456 });
@@ -284,6 +306,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 11, 14-11 }, new int[] { 123, ___ } );
}
@Test
public void testFrom3ReplaceFromFirstBlock() {
defineInitialState( new int[] { 10, 30, 60 }, new int[] { 123, 456, 789 });
@@ -306,6 +329,7 @@ public class DynamicLayoutBlocksTest extends TestCase {
assertState( new int[] { 3, 50 }, new int[] { ___, ___ } );
}
@Test
public void testFrom3ReplaceFromSecondBlock() {
defineInitialState( new int[] { 10, 30, 60 }, new int[] { 123, 456, 789 });

View File

@@ -17,16 +17,28 @@
package android.text;
import static android.text.Layout.Alignment.ALIGN_NORMAL;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import android.graphics.Canvas;
import android.graphics.Paint;
import android.graphics.Paint.FontMetricsInt;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.style.ReplacementSpan;
import junit.framework.TestCase;
public class DynamicLayoutTest extends TestCase {
import org.junit.Test;
import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class DynamicLayoutTest {
private static final int WIDTH = 10000;
@Test
public void testGetBlocksAlwaysNeedToBeRedrawn_en() {
final SpannableStringBuilder builder = new SpannableStringBuilder();
final DynamicLayout layout = new DynamicLayout(builder, new TextPaint(), WIDTH,
@@ -42,19 +54,7 @@ public class DynamicLayoutTest extends TestCase {
assertNull(layout.getBlocksAlwaysNeedToBeRedrawn());
}
private static class MockReplacementSpan extends ReplacementSpan {
@Override
public int getSize(Paint paint, CharSequence text, int start, int end, FontMetricsInt fm) {
return 10;
}
@Override
public void draw(Canvas canvas, CharSequence text, int start, int end, float x, int top,
int y, int bottom, Paint paint) {
}
}
@Test
public void testGetBlocksAlwaysNeedToBeRedrawn_replacementSpan() {
final SpannableStringBuilder builder = new SpannableStringBuilder();
final DynamicLayout layout = new DynamicLayout(builder, new TextPaint(), WIDTH,
@@ -66,11 +66,17 @@ public class DynamicLayoutTest extends TestCase {
builder.append("hijk lmn\n");
assertNull(layout.getBlocksAlwaysNeedToBeRedrawn());
builder.setSpan(new MockReplacementSpan(), 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
ReplacementSpan mockReplacementSpan = mock(ReplacementSpan.class);
when(mockReplacementSpan.getSize(any(), any(), any(), any(), any()))
.thenReturn(10);
doNothing().when(mockReplacementSpan)
.draw(any(), any(), any(), any(), any(), any(), any(), any(), any());
builder.setSpan(mockReplacementSpan, 0, 4, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
assertNotNull(layout.getBlocksAlwaysNeedToBeRedrawn());
assertTrue(layout.getBlocksAlwaysNeedToBeRedrawn().contains(0));
builder.setSpan(new MockReplacementSpan(), 9, 13, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
builder.setSpan(mockReplacementSpan, 9, 13, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
assertTrue(layout.getBlocksAlwaysNeedToBeRedrawn().contains(0));
assertTrue(layout.getBlocksAlwaysNeedToBeRedrawn().contains(1));
@@ -83,6 +89,7 @@ public class DynamicLayoutTest extends TestCase {
assertTrue(layout.getBlocksAlwaysNeedToBeRedrawn().isEmpty());
}
@Test
public void testGetBlocksAlwaysNeedToBeRedrawn_thai() {
final SpannableStringBuilder builder = new SpannableStringBuilder();
final DynamicLayout layout = new DynamicLayout(builder, new TextPaint(), WIDTH,

View File

@@ -16,17 +16,23 @@
package android.text;
import android.support.test.filters.SmallTest;
import static org.junit.Assert.assertEquals;
import junit.framework.TestCase;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* PackedIntVectorTest tests the features of android.util.PackedIntVector.
*/
public class PackedIntVectorTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class PackedIntVectorTest {
@SmallTest
public void testBasic() throws Exception {
@Test
public void testBasic() {
for (int width = 0; width < 10; width++) {
PackedIntVector p = new PackedIntVector(width);
int[] ins = new int[width];

View File

@@ -16,15 +16,20 @@
package android.text;
import android.test.InstrumentationTestCase;
import android.support.test.filters.MediumTest;
import android.support.test.runner.AndroidJUnit4;
import android.test.MoreAsserts;
import android.test.suitebuilder.annotation.MediumTest;
public abstract class SpannableTest extends InstrumentationTestCase {
import org.junit.Test;
import org.junit.runner.RunWith;
@MediumTest
@RunWith(AndroidJUnit4.class)
public abstract class SpannableTest {
protected abstract Spannable newSpannableWithText(String text);
@MediumTest
@Test
public void testGetSpans() {
Spannable spannable = newSpannableWithText("abcdef");
Object emptySpan = new Object();

View File

@@ -16,34 +16,40 @@
package android.text;
import static org.junit.Assert.assertEquals;
import android.graphics.Typeface;
import android.os.Parcel;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.style.CharacterStyle;
import android.text.style.StyleSpan;
import android.text.style.TextAppearanceSpan;
import android.text.style.TypefaceSpan;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* SpannedTest tests some features of Spanned
*/
public class SpannedTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class SpannedTest {
private int mExpect;
@SmallTest
public void testSpannableString() throws Exception {
@Test
public void testSpannableString() {
checkPriority(new SpannableString("the quick brown fox"));
}
@SmallTest
public void testSpannableStringBuilder() throws Exception {
@Test
public void testSpannableStringBuilder() {
checkPriority2(new SpannableStringBuilder("the quick brown fox"));
}
@SmallTest
public void testAppend() throws Exception {
@Test
public void testAppend() {
Object o = new Object();
SpannableString ss = new SpannableString("Test");
ss.setSpan(o, 0, ss.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
@@ -61,7 +67,7 @@ public class SpannedTest extends TestCase {
assertEquals(1, ssb.getSpans(4, 8, Object.class).length);
}
@SmallTest
@Test
public void testWrapParcel() {
SpannableString s = new SpannableString("Hello there world");
CharacterStyle mark = new StyleSpan(Typeface.BOLD);
@@ -129,16 +135,16 @@ public class SpannedTest extends TestCase {
mExpect = 0;
s.setSpan(new Watcher(2), 0, s.length(),
s.setSpan(new Watcher(2), 0, s.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE |
(2 << Spannable.SPAN_PRIORITY_SHIFT));
s.setSpan(new Watcher(4), 0, s.length(),
s.setSpan(new Watcher(4), 0, s.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE |
(4 << Spannable.SPAN_PRIORITY_SHIFT));
s.setSpan(new Watcher(1), 0, s.length(),
s.setSpan(new Watcher(1), 0, s.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE |
(1 << Spannable.SPAN_PRIORITY_SHIFT));
s.setSpan(new Watcher(3), 0, s.length(),
s.setSpan(new Watcher(3), 0, s.length(),
Spannable.SPAN_INCLUSIVE_INCLUSIVE |
(3 << Spannable.SPAN_PRIORITY_SHIFT));
@@ -162,10 +168,13 @@ public class SpannedTest extends TestCase {
mSequence = sequence;
}
public void onSpanChanged(Spannable b, Object o, int s, int e,
int st, int en) { }
@Override
public void onSpanChanged(Spannable b, Object o, int s, int e, int st, int en) { }
@Override
public void onSpanRemoved(Spannable b, Object o, int s, int e) { }
@Override
public void onSpanAdded(Spannable b, Object o, int s, int e) {
if (mExpect != 0) {
assertEquals(mSequence, mExpect);
@@ -173,16 +182,18 @@ public class SpannedTest extends TestCase {
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) { }
public void onTextChanged(CharSequence s, int start, int before,
int count) {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) { }
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
if (mExpect != 0) {
assertEquals(mSequence, mExpect);
mExpect = mSequence - 1;
}
}
@Override
public void afterTextChanged(Editable s) { }
}
}

View File

@@ -16,15 +16,21 @@
package android.text;
import static org.junit.Assert.assertEquals;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.util.Log;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Quick check of native bidi implementation.
*/
public class StaticLayoutBidiTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class StaticLayoutBidiTest {
public static final int REQ_DL = 2; // Layout.DIR_REQUEST_DEFAULT_LTR;
public static final int REQ_DR = -2; // Layout.DIR_REQUEST_DEFAULT_RTL;
@@ -39,47 +45,47 @@ public class StaticLayoutBidiTest extends TestCase {
public static final String GIMEL = "\u05d2";
public static final String DALET = "\u05d3";
@SmallTest
@Test
public void testAllLtr() {
expectNativeBidi(REQ_DL, "a test", "000000", L);
}
@SmallTest
@Test
public void testLtrRtl() {
expectNativeBidi(REQ_DL, "abc " + ALEF + BET + GIMEL, "0000111", L);
}
@SmallTest
@Test
public void testAllRtl() {
expectNativeBidi(REQ_DL, ALEF + SP + ALEF + BET + GIMEL + DALET, "111111", R);
}
@SmallTest
@Test
public void testRtlLtr() {
expectNativeBidi(REQ_DL, ALEF + BET + GIMEL + " abc", "1111222", R);
}
@SmallTest
@Test
public void testRAllLtr() {
expectNativeBidi(REQ_R, "a test", "222222", R);
}
@SmallTest
@Test
public void testRLtrRtl() {
expectNativeBidi(REQ_R, "abc " + ALEF + BET + GIMEL, "2221111", R);
}
@SmallTest
@Test
public void testLAllRtl() {
expectNativeBidi(REQ_L, ALEF + SP + ALEF + BET + GIMEL + DALET, "111111", L);
}
@SmallTest
@Test
public void testLRtlLtr() {
expectNativeBidi(REQ_DL, ALEF + BET + GIMEL + " abc", "1111222", R);
}
@SmallTest
@Test
public void testNativeBidi() {
expectNativeBidi(REQ_L, ALEF + BET + GIMEL + " abc", "1110000", L);
}

View File

@@ -16,16 +16,21 @@
package android.text;
import static org.junit.Assert.fail;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Directions;
import android.text.StaticLayoutTest.LayoutBuilder;
import junit.framework.TestCase;
import java.util.Arrays;
import java.util.Formatter;
import org.junit.Test;
import org.junit.runner.RunWith;
public class StaticLayoutDirectionsTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class StaticLayoutDirectionsTest {
private static final char ALEF = '\u05d0';
private static Directions dirs(int ... dirs) {
@@ -107,7 +112,7 @@ public class StaticLayoutDirectionsTest extends TestCase {
return new String(chars, 0, chars.length);
}
@SmallTest
@Test
public void testDirections() {
StringBuilder buf = new StringBuilder("\n");
Formatter f = new Formatter(buf);
@@ -122,7 +127,7 @@ public class StaticLayoutDirectionsTest extends TestCase {
}
}
@SmallTest
@Test
public void testTrailingWhitespace() {
LayoutBuilder b = StaticLayoutTest.builder();
b.setText(pseudoBidiToReal("Ab c"));
@@ -137,7 +142,7 @@ public class StaticLayoutDirectionsTest extends TestCase {
expectDirections("split line", expected, result);
}
@SmallTest
@Test
public void testNextToRightOf() {
LayoutBuilder b = StaticLayoutTest.builder();
b.setText(pseudoBidiToReal("aA1B2"));
@@ -161,7 +166,7 @@ public class StaticLayoutDirectionsTest extends TestCase {
}
}
@SmallTest
@Test
public void testNextToLeftOf() {
LayoutBuilder b = StaticLayoutTest.builder();
b.setText(pseudoBidiToReal("aA1B2"));
@@ -178,40 +183,6 @@ public class StaticLayoutDirectionsTest extends TestCase {
}
}
// utility, not really a test
/*
public void testMeasureText1() {
LayoutBuilder b = StaticLayoutTest.builder();
String text = "ABC"; // "abAB"
b.setText(pseudoBidiToReal(text));
Layout l = b.build();
Directions directions = l.getLineDirections(0);
TextPaint workPaint = new TextPaint();
int dir = -1; // LEFT_TO_RIGHT
boolean trailing = true;
boolean alt = true;
do {
dir = -dir;
do {
trailing = !trailing;
for (int offset = 0, end = b.text.length(); offset <= end; ++offset) {
float width = Layout.measureText(b.paint,
workPaint,
b.text,
0, offset, end,
dir, directions,
trailing, false,
null);
Log.i("BIDI", "dir: " + dir + " trail: " + trailing +
" offset: " + offset + " width: " + width);
}
} while (!trailing);
} while (dir > 0);
}
*/
// utility for displaying arrays in hex
private static String hexArray(int[] array) {
StringBuilder sb = new StringBuilder();

View File

@@ -16,25 +16,30 @@
package android.text;
import static android.text.Layout.Alignment.ALIGN_NORMAL;
import static org.junit.Assert.assertEquals;
import android.graphics.Paint.FontMetricsInt;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Alignment;
import android.text.method.EditorState;
import android.util.Log;
import junit.framework.TestCase;
import static android.text.Layout.Alignment.ALIGN_NORMAL;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Tests StaticLayout vertical metrics behavior.
*/
public class StaticLayoutTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class StaticLayoutTest {
/**
* Basic test showing expected behavior and relationship between font
* metrics and line metrics.
*/
@SmallTest
@Test
public void testGetters1() {
LayoutBuilder b = builder();
FontMetricsInt fmi = b.paint.getFontMetricsInt();
@@ -60,7 +65,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true with 1 line.
* Top and bottom padding are affected, as is the line descent and height.
*/
@SmallTest
@Test
public void testGetters2() {
LayoutBuilder b = builder()
.setIncludePad(true);
@@ -75,7 +80,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true wrapping to 2 lines.
* Ascent of top line and descent of bottom line are affected.
*/
@SmallTest
@Test
public void testGetters3() {
LayoutBuilder b = builder()
.setIncludePad(true)
@@ -92,7 +97,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true wrapping to 3 lines.
* First line ascent is top, bottom line descent is bottom.
*/
@SmallTest
@Test
public void testGetters4() {
LayoutBuilder b = builder()
.setText("This is a longer test")
@@ -112,7 +117,7 @@ public class StaticLayoutTest extends TestCase {
* large text. See effect of leading. Currently, we don't expect there to
* even be non-zero leading.
*/
@SmallTest
@Test
public void testGetters5() {
LayoutBuilder b = builder()
.setText("This is a longer test")
@@ -139,7 +144,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true, spacingAdd = 2, wrapping
* to 3 lines.
*/
@SmallTest
@Test
public void testGetters6() {
int spacingAdd = 2; // int so expressions return int
LayoutBuilder b = builder()
@@ -160,7 +165,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true, spacingAdd = 2,
* spacingMult = 1.5, wrapping to 3 lines.
*/
@SmallTest
@Test
public void testGetters7() {
LayoutBuilder b = builder()
.setText("This is a longer test")
@@ -182,7 +187,7 @@ public class StaticLayoutTest extends TestCase {
* Basic test showing effect of includePad = true, spacingAdd = 0,
* spacingMult = 0.8 when wrapping to 3 lines.
*/
@SmallTest
@Test
public void testGetters8() {
LayoutBuilder b = builder()
.setText("This is a longer test")
@@ -336,6 +341,7 @@ public class StaticLayoutTest extends TestCase {
* Tests for keycap, variation selectors, flags are in CTS.
* See {@link android.text.cts.StaticLayoutTest}.
*/
@Test
public void testEmojiOffset() {
EditorState state = new EditorState();
TextPaint paint = new TextPaint();

View File

@@ -16,15 +16,23 @@
package android.text;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import android.text.Layout.Alignment;
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* Tests for text measuring methods of StaticLayout.
*/
public class StaticLayoutTextMeasuringTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class StaticLayoutTextMeasuringTest {
private static final float SPACE_MULTI = 1.0f;
private static final float SPACE_ADD = 0.0f;
private static final int DEFAULT_OUTER_WIDTH = 150;
@@ -32,37 +40,36 @@ public class StaticLayoutTextMeasuringTest extends TestCase {
private TextPaint mDefaultPaint;
@Override
protected void setUp() throws Exception {
super.setUp();
@Before
public void setup() {
if (mDefaultPaint == null) {
mDefaultPaint = new TextPaint();
}
}
@SmallTest
@Test
public void testGetPrimaryHorizontal_zwnbsp() {
// a, ZERO WIDTH NO-BREAK SPACE
String testString = "a\uFEFF";
StaticLayout layout = new StaticLayout(testString, mDefaultPaint,
DEFAULT_OUTER_WIDTH, DEFAULT_ALIGN, SPACE_MULTI, SPACE_ADD, true);
assertEquals(0.0f, layout.getPrimaryHorizontal(0));
assertEquals(layout.getPrimaryHorizontal(2), layout.getPrimaryHorizontal(1));
assertEquals(0.0f, layout.getPrimaryHorizontal(0), 0f);
assertEquals(layout.getPrimaryHorizontal(2), layout.getPrimaryHorizontal(1), 0f);
}
@SmallTest
@Test
public void testGetPrimaryHorizontal_devanagari() {
// DEVANAGARI LETTER KA, DEVANAGARI VOWEL SIGN AA
String testString = "\u0915\u093E";
StaticLayout layout = new StaticLayout(testString, mDefaultPaint,
DEFAULT_OUTER_WIDTH, DEFAULT_ALIGN, SPACE_MULTI, SPACE_ADD, true);
assertEquals(0.0f, layout.getPrimaryHorizontal(0));
assertEquals(layout.getPrimaryHorizontal(2), layout.getPrimaryHorizontal(1));
assertEquals(0.0f, layout.getPrimaryHorizontal(0), 0f);
assertEquals(layout.getPrimaryHorizontal(2), layout.getPrimaryHorizontal(1), 0f);
}
@SmallTest
@Test
public void testGetPrimaryHorizontal_flagEmoji() {
// REGIONAL INDICATOR SYMBOL LETTER U, REGIONAL INDICATOR SYMBOL LETTER S, REGIONAL
// INDICATOR SYMBOL LETTER Z
@@ -71,12 +78,12 @@ public class StaticLayoutTextMeasuringTest extends TestCase {
StaticLayout layout = new StaticLayout(testString, mDefaultPaint,
DEFAULT_OUTER_WIDTH, DEFAULT_ALIGN, SPACE_MULTI, SPACE_ADD, true);
assertEquals(0.0f, layout.getPrimaryHorizontal(0));
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(1));
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(2));
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(3));
assertEquals(0.0f, layout.getPrimaryHorizontal(0), 0f);
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(1), 0f);
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(2), 0f);
assertEquals(layout.getPrimaryHorizontal(4), layout.getPrimaryHorizontal(3), 0f);
assertTrue(layout.getPrimaryHorizontal(6) > layout.getPrimaryHorizontal(4));
assertEquals(layout.getPrimaryHorizontal(6), layout.getPrimaryHorizontal(5));
assertEquals(layout.getPrimaryHorizontal(6), layout.getPrimaryHorizontal(5), 0f);
}
}

View File

@@ -17,31 +17,34 @@
package android.text;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import junit.framework.TestCase;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
@SmallTest
@RunWith(AndroidJUnit4.class)
public class TextLayoutTest {
private String mString;
private TextPaint mPaint;
public class TextLayoutTest extends TestCase {
protected String mString;
protected TextPaint mPaint;
protected void setUp() throws Exception {
super.setUp();
@Before
public void setup() {
mString = "The quick brown fox";
mPaint = new TextPaint();
}
@SmallTest
public void testStaticLayout() throws Exception {
Layout l = new StaticLayout(mString, mPaint, 200,
@Test
public void testStaticLayout() {
new StaticLayout(mString, mPaint, 200,
Layout.Alignment.ALIGN_NORMAL, 1, 0,
true);
}
@SmallTest
public void testDynamicLayoutTest() throws Exception {
Layout l = new DynamicLayout(mString, mPaint, 200,
@Test
public void testDynamicLayoutTest() {
new DynamicLayout(mString, mPaint, 200,
Layout.Alignment.ALIGN_NORMAL, 1, 0,
true);
}

View File

@@ -16,6 +16,14 @@
package android.text;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import android.support.test.runner.AndroidJUnit4;
import com.google.android.collect.Lists;
import android.os.Parcel;
@@ -27,19 +35,21 @@ import android.text.util.Rfc822Token;
import android.text.util.Rfc822Tokenizer;
import android.view.View;
import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import org.junit.Test;
import org.junit.runner.RunWith;
/**
* TextUtilsTest tests {@link TextUtils}.
*/
public class TextUtilsTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class TextUtilsTest {
@SmallTest
public void testBasic() throws Exception {
@Test
public void testBasic() {
assertEquals("", TextUtils.concat());
assertEquals("foo", TextUtils.concat("foo"));
assertEquals("foobar", TextUtils.concat("foo", "bar"));
@@ -71,8 +81,8 @@ public class TextUtilsTest extends TestCase {
assertTrue(TextUtils.concat(foo, bar) instanceof SpannedString);
}
@SmallTest
public void testTemplateString() throws Exception {
@Test
public void testTemplateString() {
CharSequence result;
result = TextUtils.expandTemplate("This is a ^1 of the ^2 broadcast ^3.",
@@ -136,7 +146,7 @@ public class TextUtilsTest extends TestCase {
/** Fail unless text+spans contains a span 'spanName' with the given start and end. */
private void checkContains(Spanned text, String[] spans, String spanName,
int start, int end) throws Exception {
int start, int end) {
for (String i: spans) {
if (i.equals(spanName)) {
assertEquals(start, text.getSpanStart(i));
@@ -147,8 +157,8 @@ public class TextUtilsTest extends TestCase {
fail();
}
@SmallTest
public void testTemplateSpan() throws Exception {
@Test
public void testTemplateSpan() {
SpannableString template;
Spanned result;
String[] spans;
@@ -186,27 +196,27 @@ public class TextUtilsTest extends TestCase {
checkContains(result, spans, "during+after", 1, 2);
}
@SmallTest
@Test
public void testStringSplitterSimple() {
stringSplitterTestHelper("a,b,cde", new String[] {"a", "b", "cde"});
}
@SmallTest
@Test
public void testStringSplitterEmpty() {
stringSplitterTestHelper("", new String[] {});
}
@SmallTest
@Test
public void testStringSplitterWithLeadingEmptyString() {
stringSplitterTestHelper(",a,b,cde", new String[] {"", "a", "b", "cde"});
}
@SmallTest
@Test
public void testStringSplitterWithInternalEmptyString() {
stringSplitterTestHelper("a,b,,cde", new String[] {"a", "b", "", "cde"});
}
@SmallTest
@Test
public void testStringSplitterWithTrailingEmptyString() {
// A single trailing emtpy string should be ignored.
stringSplitterTestHelper("a,b,cde,", new String[] {"a", "b", "cde"});
@@ -222,7 +232,7 @@ public class TextUtilsTest extends TestCase {
MoreAsserts.assertEquals(expectedStrings, strings.toArray(new String[]{}));
}
@SmallTest
@Test
public void testTrim() {
String[] strings = { "abc", " abc", " abc", "abc ", "abc ",
" abc ", " abc ", "\nabc\n", "\nabc", "abc\n" };
@@ -232,7 +242,7 @@ public class TextUtilsTest extends TestCase {
}
}
@SmallTest
@Test
public void testRfc822TokenizerFullAddress() {
Rfc822Token[] tokens = Rfc822Tokenizer.tokenize("Foo Bar (something) <foo@google.com>");
assertNotNull(tokens);
@@ -242,7 +252,7 @@ public class TextUtilsTest extends TestCase {
assertEquals("something",tokens[0].getComment());
}
@SmallTest
@Test
public void testRfc822TokenizeItemWithError() {
Rfc822Token[] tokens = Rfc822Tokenizer.tokenize("\"Foo Bar\\");
assertNotNull(tokens);
@@ -250,7 +260,7 @@ public class TextUtilsTest extends TestCase {
assertEquals("Foo Bar", tokens[0].getAddress());
}
@SmallTest
@Test
public void testRfc822FindToken() {
Rfc822Tokenizer tokenizer = new Rfc822Tokenizer();
// 0 1 2 3 4
@@ -262,12 +272,13 @@ public class TextUtilsTest extends TestCase {
assertEquals(46, tokenizer.findTokenEnd(address, 25));
}
@SmallTest
@Test
public void testRfc822FindTokenWithError() {
assertEquals(9, new Rfc822Tokenizer().findTokenEnd("\"Foo Bar\\", 0));
}
@LargeTest
@Test
public void testEllipsize() {
CharSequence s1 = "The quick brown fox jumps over \u00FEhe lazy dog.";
CharSequence s2 = new Wrapper(s1);
@@ -327,7 +338,7 @@ public class TextUtilsTest extends TestCase {
}
}
@SmallTest
@Test
public void testDelimitedStringContains() {
assertFalse(TextUtils.delimitedStringContains("", ',', null));
assertFalse(TextUtils.delimitedStringContains(null, ',', ""));
@@ -347,7 +358,7 @@ public class TextUtilsTest extends TestCase {
assertFalse(TextUtils.delimitedStringContains("network,mock,gpsx", ',', "gps"));
}
@SmallTest
@Test
public void testCharSequenceCreator() {
Parcel p = Parcel.obtain();
TextUtils.writeToParcel(null, p, 0);
@@ -360,7 +371,7 @@ public class TextUtilsTest extends TestCase {
assertEquals("conversion to/from parcel failed", "test", text);
}
@SmallTest
@Test
public void testCharSequenceCreatorNull() {
Parcel p;
CharSequence text;
@@ -371,7 +382,7 @@ public class TextUtilsTest extends TestCase {
assertNull("null CharSequence should generate null from parcel", text);
}
@SmallTest
@Test
public void testCharSequenceCreatorSpannable() {
Parcel p;
CharSequence text;
@@ -382,7 +393,7 @@ public class TextUtilsTest extends TestCase {
assertEquals("conversion to/from parcel failed", "test", text.toString());
}
@SmallTest
@Test
public void testCharSequenceCreatorString() {
Parcel p;
CharSequence text;
@@ -404,10 +415,12 @@ public class TextUtilsTest extends TestCase {
mString = s;
}
@Override
public int length() {
return mString.length();
}
@Override
public char charAt(int off) {
return mString.charAt(off);
}
@@ -417,12 +430,13 @@ public class TextUtilsTest extends TestCase {
return mString.toString();
}
@Override
public CharSequence subSequence(int start, int end) {
return new Wrapper(mString.subSequence(start, end));
}
}
@LargeTest
@Test
public void testRemoveEmptySpans() {
MockSpanned spanned = new MockSpanned();
@@ -484,14 +498,17 @@ public class TextUtilsTest extends TestCase {
}
}
@Override
public char charAt(int arg0) {
return 0;
}
@Override
public int length() {
return 0;
}
@Override
public CharSequence subSequence(int arg0, int arg1) {
return null;
}
@@ -522,7 +539,7 @@ public class TextUtilsTest extends TestCase {
}
}
@SmallTest
@Test
public void testGetLayoutDirectionFromLocale() {
assertEquals(View.LAYOUT_DIRECTION_LTR, TextUtils.getLayoutDirectionFromLocale(null));
assertEquals(View.LAYOUT_DIRECTION_LTR,

View File

@@ -16,17 +16,24 @@
package android.text;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import android.graphics.fonts.FontVariationAxis;
import android.test.suitebuilder.annotation.SmallTest;
import android.support.test.filters.SmallTest;
import android.support.test.runner.AndroidJUnit4;
import junit.framework.TestCase;
import org.junit.Test;
import org.junit.runner.RunWith;
public class VariationParserTest extends TestCase {
@SmallTest
@RunWith(AndroidJUnit4.class)
public class VariationParserTest {
private static final String[] INVALID_STYLE_VALUES = {
"", "x", "\t", "\n"
};
@SmallTest
@Test
public void testFromFontVariationSetting_InvalidStyleValue() {
// Test with invalid styleValue
for (String invalidStyle : INVALID_STYLE_VALUES) {
@@ -39,7 +46,8 @@ public class VariationParserTest extends TestCase {
}
for (String invalidStyle : INVALID_STYLE_VALUES) {
try {
FontVariationAxis.fromFontVariationSettings("'wght' 1, 'wdth' " + invalidStyle);
FontVariationAxis.fromFontVariationSettings("'wght' 1, 'wdth' "
+ invalidStyle);
fail();
} catch (IllegalArgumentException e) {
// pass
@@ -47,10 +55,13 @@ public class VariationParserTest extends TestCase {
}
}
@SmallTest
@Test
public void testOpenTypeTagValue() {
assertEquals(0x77647468, (new FontVariationAxis("wdth", 0).getOpenTypeTagValue()));
assertEquals(0x41582020, (new FontVariationAxis("AX ", 0).getOpenTypeTagValue()));
assertEquals(0x20202020, (new FontVariationAxis(" ", 0).getOpenTypeTagValue()));
assertEquals(0x77647468,
new FontVariationAxis("wdth", 0).getOpenTypeTagValue());
assertEquals(0x41582020,
new FontVariationAxis("AX ", 0).getOpenTypeTagValue());
assertEquals(0x20202020,
new FontVariationAxis(" ", 0).getOpenTypeTagValue());
}
}