Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit fc77869e authored by Roozbeh Pournader's avatar Roozbeh Pournader
Browse files

Set up empty lines for DynamicLayout#updateBlocks() tests

The changes in I666da5eeb39f780c341597f347bfcba21eb34295 introduced
the concept of lines that need to be always redrawn, but it broke
tests for DynamicLayout#updateBlocks() that didn't need to set up the
actual lines.

Now, during the test setup, we insert empty lines to match the number
of lines needed.

Test: adb shell am instrument -w -e class android.text.DynamicLayoutBlocksTest com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
Test: adb shell am instrument -w -e class android.text.DynamicLayoutTest#testGetBlocksAlwaysNeedToBeRedrawn_thai com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
Test: adb shell am instrument -w -e class android.text.DynamicLayoutTest#testGetBlocksAlwaysNeedToBeRedrawn_en com.android.frameworks.coretests/android.support.test.runner.AndroidJUnitRunner
Test: cts-tradefed run cts-dev --module CtsTextTestCases
Change-Id: I4bfc82db4beef1b740433a25a3ae29201f54d9d3
Fixes: 38029583
parent 7ed8a579
Loading
Loading
Loading
Loading
+6 −4
Original line number Diff line number Diff line
@@ -491,8 +491,6 @@ public class DynamicLayout extends Layout
     * An index is associated to each block (which will be used by display lists),
     * this class simply invalidates the index of blocks overlapping a modification.
     *
     * This method is package private and not private so that it can be tested.
     *
     * @param startLine the first line of the range of modified lines
     * @param endLine the last line of the range, possibly equal to startLine, lower
     * than getLineCount()
@@ -613,16 +611,20 @@ public class DynamicLayout extends Layout
    }

    /**
     * This package private method is used for test purposes only
     * This method is used for test purposes only.
     * @hide
     */
    @VisibleForTesting(visibility = VisibleForTesting.Visibility.PACKAGE)
    public void setBlocksDataForTest(int[] blockEndLines, int[] blockIndices, int numberOfBlocks) {
    public void setBlocksDataForTest(int[] blockEndLines, int[] blockIndices, int numberOfBlocks,
            int totalLines) {
        mBlockEndLines = new int[blockEndLines.length];
        mBlockIndices = new int[blockIndices.length];
        System.arraycopy(blockEndLines, 0, mBlockEndLines, 0, blockEndLines.length);
        System.arraycopy(blockIndices, 0, mBlockIndices, 0, blockIndices.length);
        mNumberOfBlocks = numberOfBlocks;
        while (mInts.size() < totalLines) {
            mInts.insertAt(mInts.size(), new int[COLUMNS_NORMAL]);
        }
    }

    /**
+4 −1
Original line number Diff line number Diff line
@@ -67,7 +67,10 @@ public class DynamicLayoutBlocksTest {
    }

    private void update(int startLine, int endLine, int newLineCount) {
        dl.setBlocksDataForTest(initialBlockEnds, initialBlockIndices, initialBlockEnds.length);
        final int totalLines = initialBlockEnds[initialBlockEnds.length - 1]
                + newLineCount - endLine + startLine;
        dl.setBlocksDataForTest(
                initialBlockEnds, initialBlockIndices, initialBlockEnds.length, totalLines);
        checkInvariants();
        dl.updateBlocks(startLine, endLine, newLineCount);
    }