terminal/src/interactivity/win32/ut_interactivity_win32/GeneratedUiaTextRangeMovementTests.g.cpp
Carlos Zamora 1678b58dde
Improve UIA movement testing methodology (#10886)
Introduces a new methodology to maintain tests for UI Automation. This includes...
- `UiaTests.csv`: an excel spreadsheet designed to store UIA movement tests in a compact format
- `GeneratedTests.ps1`: a PowerShell script that imports `UiaTests.csv` and outputs a C++ TEST_METHOD for `UiaTextRangeTests.

This new system can be used to easily add more UIA movement tests.

Read https://github.com/microsoft/terminal/blob/dev/cazamor/a11y-7000/testing/tools/TestTableWriter/README.md for more details.

Follow-up work items:
- #10924 **Failing Tests**: this found some failing tests. We should make them not fail.
- #10925 **Missing Tests: Word navigation**: Word navigation is missing.
- #10926 **MoveEndpoint Tests**: an additional column can be added to the CSV "EndpointTarget", which can be "start", "end", or "both". This will allow us to test `MoveEndpoint` in addition to `Move`.
2021-08-19 20:47:07 +00:00

3172 lines
98 KiB
C++

// Copyright (c) Microsoft Corporation.
// Licensed under the MIT license.
// DO NOT MODIFY THESE TESTS DIRECTLY
// These were generated by tools\TestTableWriter\GenerateTests.ps1
// Read tools\TestTableWriter\README.md for more details
// Define a few helpful variables
constexpr til::rectangle bufferSize{ 0, 0, 80, 300 };
constexpr short midX{ 40 };
constexpr short midY{ 150 };
constexpr short midPopulatedY{ 75 };
constexpr til::point origin{ 0, 0 };
constexpr til::point midTop{ midX, 0 };
constexpr til::point midHistory{ midX, midPopulatedY };
constexpr til::point midDocEnd{ midX, midY };
constexpr til::point lastCharPos{ 79, midY };
constexpr til::point docEnd{ 0, midY + 1 };
constexpr til::point midEmptySpace{ midX, midY + midPopulatedY };
constexpr til::point bufferEnd{ 79, 299 };
constexpr til::point endExclusive{ 0, 300 };
constexpr til::point bufferEndLeft{ bufferSize.left(), bufferEnd.y() };
constexpr auto bufferEndM1C{ point_offset_by_char(bufferEnd, bufferSize, -1) };
constexpr auto bufferEndM1L{ point_offset_by_line(bufferEnd, bufferSize, -1) };
constexpr auto bufferEndM4C{ point_offset_by_char(bufferEnd, bufferSize, -4) };
constexpr auto bufferEndM4L{ point_offset_by_line(bufferEnd, bufferSize, -4) };
constexpr auto bufferEndM5C{ point_offset_by_char(bufferEnd, bufferSize, -5) };
constexpr auto bufferEndM5L{ point_offset_by_line(bufferEnd, bufferSize, -5) };
constexpr til::point docEndLeft{ bufferSize.left(), docEnd.y() };
constexpr auto docEndM1C{ point_offset_by_char(docEnd, bufferSize, -1) };
constexpr auto docEndM4L{ point_offset_by_line(docEnd, bufferSize, -4) };
constexpr auto docEndM5C{ point_offset_by_char(docEnd, bufferSize, -5) };
constexpr auto docEndP1C{ point_offset_by_char(docEnd, bufferSize, 1) };
constexpr til::point lastCharPosLeft{ bufferSize.left(), lastCharPos.y() };
constexpr auto lastCharPosM1C{ point_offset_by_char(lastCharPos, bufferSize, -1) };
constexpr auto lastCharPosM1L{ point_offset_by_line(lastCharPos, bufferSize, -1) };
constexpr auto lastCharPosM4C{ point_offset_by_char(lastCharPos, bufferSize, -4) };
constexpr auto lastCharPosM4L{ point_offset_by_line(lastCharPos, bufferSize, -4) };
constexpr auto lastCharPosM5C{ point_offset_by_char(lastCharPos, bufferSize, -5) };
constexpr auto lastCharPosM5L{ point_offset_by_line(lastCharPos, bufferSize, -5) };
constexpr auto lastCharPosP1C{ point_offset_by_char(lastCharPos, bufferSize, 1) };
constexpr til::point midDocEndLeft{ bufferSize.left(), midDocEnd.y() };
constexpr auto midDocEndM1C{ point_offset_by_char(midDocEnd, bufferSize, -1) };
constexpr auto midDocEndM1L{ point_offset_by_line(midDocEnd, bufferSize, -1) };
constexpr auto midDocEndM4C{ point_offset_by_char(midDocEnd, bufferSize, -4) };
constexpr auto midDocEndM4L{ point_offset_by_line(midDocEnd, bufferSize, -4) };
constexpr auto midDocEndM5C{ point_offset_by_char(midDocEnd, bufferSize, -5) };
constexpr auto midDocEndM5L{ point_offset_by_line(midDocEnd, bufferSize, -5) };
constexpr auto midDocEndP1C{ point_offset_by_char(midDocEnd, bufferSize, 1) };
constexpr auto midDocEndP2C{ point_offset_by_char(midDocEnd, bufferSize, 2) };
constexpr auto midDocEndP5C{ point_offset_by_char(midDocEnd, bufferSize, 5) };
constexpr auto midDocEndP6C{ point_offset_by_char(midDocEnd, bufferSize, 6) };
constexpr auto midEmptySpaceP1C{ point_offset_by_char(midEmptySpace, bufferSize, 1) };
constexpr til::point midHistoryLeft{ bufferSize.left(), midHistory.y() };
constexpr auto midHistoryM1C{ point_offset_by_char(midHistory, bufferSize, -1) };
constexpr auto midHistoryM1L{ point_offset_by_line(midHistory, bufferSize, -1) };
constexpr auto midHistoryM4C{ point_offset_by_char(midHistory, bufferSize, -4) };
constexpr auto midHistoryM4L{ point_offset_by_line(midHistory, bufferSize, -4) };
constexpr auto midHistoryM5C{ point_offset_by_char(midHistory, bufferSize, -5) };
constexpr auto midHistoryM5L{ point_offset_by_line(midHistory, bufferSize, -5) };
constexpr auto midHistoryP1C{ point_offset_by_char(midHistory, bufferSize, 1) };
constexpr auto midHistoryP1L{ point_offset_by_line(midHistory, bufferSize, 1) };
constexpr auto midHistoryP2C{ point_offset_by_char(midHistory, bufferSize, 2) };
constexpr auto midHistoryP2L{ point_offset_by_line(midHistory, bufferSize, 2) };
constexpr auto midHistoryP5C{ point_offset_by_char(midHistory, bufferSize, 5) };
constexpr auto midHistoryP5L{ point_offset_by_line(midHistory, bufferSize, 5) };
constexpr auto midHistoryP6C{ point_offset_by_char(midHistory, bufferSize, 6) };
constexpr auto midHistoryP6L{ point_offset_by_line(midHistory, bufferSize, 6) };
constexpr auto midTopM1C{ point_offset_by_char(midTop, bufferSize, -1) };
constexpr auto midTopM4C{ point_offset_by_char(midTop, bufferSize, -4) };
constexpr auto midTopM5C{ point_offset_by_char(midTop, bufferSize, -5) };
constexpr auto midTopP1C{ point_offset_by_char(midTop, bufferSize, 1) };
constexpr auto midTopP1L{ point_offset_by_line(midTop, bufferSize, 1) };
constexpr auto midTopP2C{ point_offset_by_char(midTop, bufferSize, 2) };
constexpr auto midTopP5C{ point_offset_by_char(midTop, bufferSize, 5) };
constexpr auto midTopP5L{ point_offset_by_line(midTop, bufferSize, 5) };
constexpr auto midTopP6C{ point_offset_by_char(midTop, bufferSize, 6) };
constexpr auto originP1C{ point_offset_by_char(origin, bufferSize, 1) };
constexpr auto originP1L{ point_offset_by_line(origin, bufferSize, 1) };
constexpr auto originP2C{ point_offset_by_char(origin, bufferSize, 2) };
constexpr auto originP2L{ point_offset_by_line(origin, bufferSize, 2) };
constexpr auto originP5C{ point_offset_by_char(origin, bufferSize, 5) };
constexpr auto originP5L{ point_offset_by_line(origin, bufferSize, 5) };
constexpr auto originP6C{ point_offset_by_char(origin, bufferSize, 6) };
constexpr auto originP6L{ point_offset_by_line(origin, bufferSize, 6) };
struct GeneratedMovementTestInput
{
TextUnit unit;
int moveAmount;
til::point start;
til::point end;
};
struct GeneratedMovementTestExpected
{
int moveAmount;
til::point start;
til::point end;
};
struct GeneratedMovementTest
{
std::wstring_view name;
GeneratedMovementTestInput input;
GeneratedMovementTestExpected expected;
bool skip;
};
static constexpr std::array<GeneratedMovementTest, 255> s_movementTests{
GeneratedMovementTest{
L"Move degenerate range at position 1 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
origin,
origin },
GeneratedMovementTestExpected{
1,
originP1C,
originP1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
origin,
origin },
GeneratedMovementTestExpected{
5,
originP5C,
originP5C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
origin,
originP1C },
GeneratedMovementTestExpected{
1,
originP1C,
originP2C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
origin,
originP1C },
GeneratedMovementTestExpected{
5,
originP5C,
originP6C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midTop,
midTop },
GeneratedMovementTestExpected{
-5,
midTopM5C,
midTopM5C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midTop,
midTop },
GeneratedMovementTestExpected{
-1,
midTopM1C,
midTopM1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midTop,
midTop },
GeneratedMovementTestExpected{
0,
midTop,
midTop },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midTop,
midTop },
GeneratedMovementTestExpected{
1,
midTopP1C,
midTopP1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midTop,
midTop },
GeneratedMovementTestExpected{
5,
midTopP5C,
midTopP5C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
-5,
midTopM5C,
midTopM4C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
-1,
midTopM1C,
midTop },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
midTop,
midTopP1C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
1,
midTopP1C,
midTopP2C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
5,
midTopP5C,
midTopP6C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-5,
midHistoryM5C,
midHistoryM5C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-1,
midHistoryM1C,
midHistoryM1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midHistory,
midHistory },
GeneratedMovementTestExpected{
0,
midHistory,
midHistory },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
1,
midHistoryP1C,
midHistoryP1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
5,
midHistoryP5C,
midHistoryP5C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
-5,
midHistoryM5C,
midHistoryM4C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
-1,
midHistoryM1C,
midHistory },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
midHistory,
midHistoryP1C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
1,
midHistoryP1C,
midHistoryP2C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
5,
midHistoryP5C,
midHistoryP6C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
origin,
origin },
GeneratedMovementTestExpected{
1,
originP1L,
originP1L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
origin,
origin },
GeneratedMovementTestExpected{
5,
originP5L,
originP5L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
origin,
originP1C },
GeneratedMovementTestExpected{
1,
originP1L,
originP2L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
origin,
originP1C },
GeneratedMovementTestExpected{
5,
originP5L,
originP6L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midTop,
midTop },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 2 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midTop,
midTop },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 2 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midTop,
midTop },
GeneratedMovementTestExpected{
0,
midTop,
midTop },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midTop,
midTop },
GeneratedMovementTestExpected{
1,
midTopP1L,
midTopP1L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midTop,
midTop },
GeneratedMovementTestExpected{
5,
midTopP5L,
midTopP5L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
originP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
1,
originP1L,
originP2L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
5,
originP5L,
originP6L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-5,
midHistoryM4L,
midHistoryM4L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-1,
midHistoryLeft,
midHistoryLeft },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midHistory,
midHistory },
GeneratedMovementTestExpected{
0,
midHistory,
midHistory },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
1,
midHistoryP1L,
midHistoryP1L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
5,
midHistoryP5L,
midHistoryP5L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
-5,
midHistoryM5L,
midHistoryM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
-1,
midHistoryM1L,
midHistoryLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
midHistoryLeft,
midHistoryP1L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
1,
midHistoryP1L,
midHistoryP2L },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
5,
midHistoryP5L,
midHistoryP6L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
origin,
origin },
GeneratedMovementTestExpected{
0,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 1 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
origin,
origin },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 1 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
origin,
origin },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 1 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
origin,
originP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 2 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midTop,
midTop },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midTop,
midTop },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midTop,
midTop },
GeneratedMovementTestExpected{
0,
midTop,
midTop },
false },
GeneratedMovementTest{
L"Move degenerate range at position 2 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midTop,
midTop },
GeneratedMovementTestExpected{
1,
bufferEnd,
bufferEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 2 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midTop,
midTop },
GeneratedMovementTestExpected{
1,
bufferEnd,
bufferEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
bufferEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
bufferEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
bufferEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
bufferEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 2 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midTop,
midTopP1C },
GeneratedMovementTestExpected{
0,
origin,
bufferEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 3 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midHistory,
midHistory },
GeneratedMovementTestExpected{
0,
midHistory,
midHistory },
false },
GeneratedMovementTest{
L"Move degenerate range at position 3 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midHistory,
midHistory },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 3 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midHistory,
midHistory },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 3 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midHistory,
midHistoryP1C },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 8 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-5,
bufferEndM5C,
bufferEndM5C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-1,
bufferEndM1C,
bufferEndM1C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
0,
bufferEnd,
bufferEnd },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 8 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
-5,
bufferEndM5C,
bufferEndM4C },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
-1,
bufferEndM1C,
bufferEnd },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEnd,
endExclusive },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEnd,
endExclusive },
false },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEnd,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-5,
bufferEndM4L,
bufferEndM4L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-1,
bufferEndLeft,
bufferEndLeft },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
0,
bufferEnd,
bufferEnd },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 8 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
-5,
bufferEndM5L,
bufferEndM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
-1,
bufferEndM1L,
bufferEndLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEndLeft,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEndLeft,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
bufferEndLeft,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 8 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
0,
bufferEnd,
bufferEnd },
false },
GeneratedMovementTest{
L"Move degenerate range at position 8 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 8 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
bufferEnd,
bufferEnd },
GeneratedMovementTestExpected{
1,
endExclusive,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 8 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
bufferEnd,
endExclusive },
GeneratedMovementTestExpected{
0,
origin,
endExclusive },
true },
GeneratedMovementTest{
L"Move degenerate range at position 9 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-5,
bufferEndM4C,
bufferEndM4C },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-1,
bufferEnd,
bufferEnd },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-5,
bufferEndM4L,
bufferEndM4L },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-1,
bufferEndLeft,
bufferEndLeft },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
-1,
origin,
origin },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 9 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
endExclusive,
endExclusive },
GeneratedMovementTestExpected{
0,
endExclusive,
endExclusive },
false },
GeneratedMovementTest{
L"Move degenerate range at position 4 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-5,
midDocEndM5C,
midDocEndM5C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-1,
midDocEndM1C,
midDocEndM1C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
0,
midDocEnd,
midDocEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
1,
midDocEndP1C,
midDocEndP1C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
5,
midDocEndP5C,
midDocEndP5C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
-5,
midDocEndM5C,
midDocEndM4C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
-1,
midDocEndM1C,
midDocEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
midDocEnd,
midDocEndP1C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
1,
midDocEndP1C,
midDocEndP2C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
5,
midDocEndP5C,
midDocEndP6C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-5,
midDocEndM4L,
midDocEndM4L },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-1,
midDocEndLeft,
midDocEndLeft },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
0,
midDocEnd,
midDocEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
-5,
midDocEndM5L,
midDocEndM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
-1,
midDocEndM1L,
midDocEndLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
midDocEndLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
midDocEndLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
midDocEndLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
0,
midDocEnd,
midDocEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 4 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midDocEnd,
midDocEnd },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 4 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midDocEnd,
midDocEndP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-5,
lastCharPosM5C,
lastCharPosM5C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-1,
lastCharPosM1C,
lastCharPosM1C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
0,
lastCharPos,
lastCharPos },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
-5,
lastCharPosM5C,
lastCharPosM4C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
-1,
lastCharPosM1C,
lastCharPos },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPos,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPos,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPos,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-5,
lastCharPosM4L,
lastCharPosM4L },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-1,
lastCharPosLeft,
lastCharPosLeft },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
0,
lastCharPos,
lastCharPos },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
-5,
lastCharPosM5L,
lastCharPosM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
-1,
lastCharPosM1L,
lastCharPosLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPosLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPosLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
lastCharPosLeft,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
0,
lastCharPos,
lastCharPos },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 5 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
lastCharPos,
lastCharPos },
GeneratedMovementTestExpected{
1,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 5 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
lastCharPos,
lastCharPosP1C },
GeneratedMovementTestExpected{
0,
origin,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-5,
docEndM5C,
docEndM5C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-1,
docEndM1C,
docEndM1C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-5,
docEndM5C,
docEndM5C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-1,
docEndM1C,
docEndM1C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-5,
docEndM4L,
docEndM4L },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-1,
docEndLeft,
docEndLeft },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-5,
docEndM4L,
docEndM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-1,
docEndLeft,
docEndLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 6 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
docEnd,
docEnd },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 6 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
docEnd,
docEndP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-5,
docEndM5C,
docEndM5C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-1,
docEndM1C,
docEndM1C },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-5,
docEndM5C,
docEndM5C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
-1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-1,
docEndM1C,
docEndM1C },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 0 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
0,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 1 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 5 times by Character",
GeneratedMovementTestInput{
TextUnit::TextUnit_Character,
5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-5,
docEndM4L,
docEndM4L },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-1,
docEndLeft,
docEndLeft },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-5,
docEndM4L,
docEndM4L },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
-1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-1,
docEndLeft,
docEndLeft },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 0 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
0,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 1 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 5 times by Line",
GeneratedMovementTestInput{
TextUnit::TextUnit_Line,
5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move degenerate range at position 7 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midEmptySpace,
midEmptySpace },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 -1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
-1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
-1,
origin,
origin },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 0 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
0,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 1 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
1,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
GeneratedMovementTest{
L"Move non-degenerate range at position 7 5 times by Document",
GeneratedMovementTestInput{
TextUnit::TextUnit_Document,
5,
midEmptySpace,
midEmptySpaceP1C },
GeneratedMovementTestExpected{
0,
docEnd,
docEnd },
true },
};