mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-05-10 03:34:06 +02:00
Add tests for existing word/WORD motion behaviour
This commit is contained in:
parent
fa4c89e134
commit
4bc75e0a9b
src/test/java/org/jetbrains/plugins/ideavim/action/motion/text
@ -0,0 +1,135 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimBehaviorDiffers
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionBigWordEndLeftActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test move to previous WORD end`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"Lorem ip${c}sum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end from end of word`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end from whitespace`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"Lorem ${c} ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end stops at non-word characters`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"Lorem ipsum dolor sit amet, con${c}sectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end moves to end at non-word characters`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"Lorem ipsum dolor sit amet,,, con${c}sectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet,,${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end with count`() {
|
||||
doTest(
|
||||
"3gE",
|
||||
"Lorem ipsum dolor sit a${c}met, consectetur adipiscing elit",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end with count over non-word characters`() {
|
||||
doTest(
|
||||
"3gE",
|
||||
"Lorem ipsum dolor sit amet, conse${c}ctetur adipiscing elit",
|
||||
"Lorem ipsum dolo${c}r sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end wraps to previous line`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous WORD end wraps to previous line skipping trailing whitespace`() {
|
||||
doTest(
|
||||
"gE",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t....
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
)
|
||||
}
|
||||
|
||||
// TODO: Fix this bug
|
||||
@VimBehaviorDiffers(originalVimAfter = "${c}Lorem ipsum")
|
||||
@Test
|
||||
fun `test move to previous word end on first word moves to start of file`() {
|
||||
doTest("gE", "Lore${c}m ipsum", "Lore${c}m ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end on first word with leading whitespace moves to start of file`() {
|
||||
doTest("gE", " Lore${c}m ipsum", "${c} Lorem ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end at start of file reports error`() {
|
||||
doTest("gE", "${c}Lorem ipsum", "${c}Lorem ipsum")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
// TODO: Fix this bug
|
||||
@VimBehaviorDiffers(originalVimAfter = "${c}Lorem ipsum")
|
||||
@Test
|
||||
fun `test move to previous word end with large count moves to start of file without reporting error`() {
|
||||
doTest("100gE", "Lorem ip${c}sum", "Lore${c}m ipsum")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimBehaviorDiffers
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionBigWordEndRightActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test move to WORD end`() {
|
||||
doTest(
|
||||
"E",
|
||||
"${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end from end of word`() {
|
||||
doTest(
|
||||
"E",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end from leading whitespace`() {
|
||||
doTest(
|
||||
"E",
|
||||
" ${c} Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
" Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end ignores non-word characters`() {
|
||||
doTest(
|
||||
"E",
|
||||
"Lorem ipsum dolor sit ${c}amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end moves to end of non-word characters`() {
|
||||
doTest(
|
||||
"E",
|
||||
"Lorem ipsum dolor sit a${c}met,,,, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet,,,${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end with count`() {
|
||||
doTest(
|
||||
"3E",
|
||||
"${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolo${c}r sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end with count over non-word characters`() {
|
||||
doTest(
|
||||
"3E",
|
||||
"Lorem ipsum dolor si${c}t amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet, consectetur adipiscin${c}g elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end wraps to next line`() {
|
||||
doTest(
|
||||
"E",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end wraps to next line skipping trailing whitespace`() {
|
||||
doTest(
|
||||
"E",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t....
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to WORD end at end of file reports error`() {
|
||||
doTest("E", "Lorem ipsu${c}m", "Lorem ipsu${c}m")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
@VimBehaviorDiffers(description = "IdeaVim cannot move and have an error at the same time")
|
||||
@Test
|
||||
fun `test move to WORD end with large count moves to end of file and reports error`() {
|
||||
doTest("300E", "${c}Lorem ipsum", "Lorem ipsu${c}m")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("RemoveCurlyBracesFromTemplate")
|
||||
class MotionBigWordLeftActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test WORD left from within word`() {
|
||||
doTest("B", "Lorem ip${c}sum", "Lorem ${c}ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left from start of word`() {
|
||||
doTest("B", "Lorem ${c}ipsum", "${c}Lorem ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left ignores non-word characters`() {
|
||||
doTest("B", "Lorem ipsum;dolor.sit,a${c}met", "Lorem ${c}ipsum;dolor.sit,amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left with CTRL-Left`() {
|
||||
doTest("<C-Left>", "Lorem ipsum;dolor.sit,a${c}met", "Lorem ${c}ipsum;dolor.sit,amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left from trailing whitespace`() {
|
||||
doTest("B", "Lorem Ipsum ${c} ", "Lorem ${c}Ipsum ")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left from trailing whitespace 2`() {
|
||||
doTest("B", "Lorem ${c} Ipsum", "${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left with count from within word`() {
|
||||
doTest(
|
||||
"3B",
|
||||
"""
|
||||
|Lorem ipsum dolor s${c}it amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ${c}ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left with count from start of word`() {
|
||||
doTest(
|
||||
"3B",
|
||||
"""
|
||||
|Lorem ipsum dolor ${c}sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left with count across non-word characters`() {
|
||||
doTest(
|
||||
"3B",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, cons${c}ectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor ${c}sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left at start of line wraps to previous line`() {
|
||||
doTest(
|
||||
"B",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit
|
||||
|${c}Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing ${c}elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left at start of line wraps to previous line with trailing whitespace`() {
|
||||
doTest(
|
||||
"B",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit....
|
||||
|${c}Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing ${c}elit....
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left at start of line with count wraps to previous line`() {
|
||||
doTest(
|
||||
"3B",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur ${c}adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left at start of line across non-word characters`() {
|
||||
doTest(
|
||||
"B",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|${c}consectetur adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit ${c}amet,
|
||||
|consectetur adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left on first word moves caret to start of word`() {
|
||||
doTest("B", "Lo${c}rem Ipsum", "${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left on leading whitespace at start of file moves caret to start of file`() {
|
||||
doTest("B", " ${c} Lorem Ipsum", "${c} Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD left on first character of file reports error`() {
|
||||
doTest("B", "${c}Lorem Ipsum", "${c}Lorem Ipsum")
|
||||
assertPluginError(true)
|
||||
}
|
||||
}
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionBigWordRightActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test simple WORD right`() {
|
||||
doTest("W", "${c}Lorem Ipsum", "Lorem ${c}Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right ignoring non-alpha characters`() {
|
||||
doTest("W", "Lo${c}rem,ipsum;dolor.sit amet", "Lorem,ipsum;dolor.sit ${c}amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right with CTRL-Right`() {
|
||||
doTest("<C-Right>", "Lo${c}rem,ipsum;dolor.sit amet", "Lorem,ipsum;dolor.sit ${c}amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right from leading whitespace`() {
|
||||
doTest("W", "${c} Lorem Ipsum", " ${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right from leading whitespace 2`() {
|
||||
doTest("W", "Lorem ${c} Ipsum", "Lorem ${c}Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right with count`() {
|
||||
doTest(
|
||||
"3W",
|
||||
"""
|
||||
|Lo${c}rem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor ${c}sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right with count across non-word characters`() {
|
||||
doTest(
|
||||
"3W",
|
||||
"""
|
||||
|Lorem ipsum dolor s${c}it amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur ${c}adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right at end of line wraps to next line`() {
|
||||
doTest(
|
||||
"W",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing e${c}lit
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
| ${c}Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right at end of line with trailing whitespace wraps to next line`() {
|
||||
doTest(
|
||||
"W",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing e${c}lit....
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
| ${c}Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right at end of line with count wraps to next line`() {
|
||||
doTest(
|
||||
"3W",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur a${c}dipiscing elit
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
| Sed ${c}in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right on last word moves caret to end of word`() {
|
||||
doTest("W", "Lorem I${c}psum", "Lorem Ipsu${c}m")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right on last word with trailing whitespace moves to end of whitespace`() {
|
||||
doTest("W", "Lorem Ipsu${c}m ", "Lorem Ipsum ${c} ")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right on last character of file reports error`() {
|
||||
doTest("W", "Lorem Ipsu${c}m", "Lorem Ipsu${c}m")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test WORD right at end of file with large count does not report error`() {
|
||||
doTest("100W", "L${c}orem Ipsum", "Lorem Ipsu${c}m")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
@ -0,0 +1,135 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimBehaviorDiffers
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionWordEndLeftActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test move to previous word end`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"Lorem ip${c}sum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end from end of word`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end from whitespace`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"Lorem ${c} ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end stops at non-word characters`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"Lorem ipsum dolor sit amet, con${c}sectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end moves to end at non-word characters`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"Lorem ipsum dolor sit amet,,, con${c}sectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet,,${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end with count`() {
|
||||
doTest(
|
||||
"3ge",
|
||||
"Lorem ipsum dolor sit a${c}met, consectetur adipiscing elit",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end with count over non-word characters`() {
|
||||
doTest(
|
||||
"3ge",
|
||||
"Lorem ipsum dolor sit amet, conse${c}ctetur adipiscing elit",
|
||||
"Lorem ipsum dolor si${c}t amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end wraps to previous line`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end wraps to previous line skipping trailing whitespace`() {
|
||||
doTest(
|
||||
"ge",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t....
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
)
|
||||
}
|
||||
|
||||
// TODO: Fix this bug
|
||||
@VimBehaviorDiffers(originalVimAfter = "${c}Lorem ipsum")
|
||||
@Test
|
||||
fun `test move to previous word end on first word moves to start of file`() {
|
||||
doTest("ge", "Lore${c}m ipsum", "Lore${c}m ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end on first word with leading whitespace moves to start of file`() {
|
||||
doTest("ge", " Lore${c}m ipsum", "${c} Lorem ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to previous word end at start of file reports error`() {
|
||||
doTest("ge", "${c}Lorem ipsum", "${c}Lorem ipsum")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
// TODO: Fix this bug
|
||||
@VimBehaviorDiffers(originalVimAfter = "${c}Lorem ipsum")
|
||||
@Test
|
||||
fun `test move to previous word end with large count moves to start of file without reporting error`() {
|
||||
doTest("100ge", "Lorem ip${c}sum", "Lore${c}m ipsum")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
@ -0,0 +1,122 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimBehaviorDiffers
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionWordEndRightActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test move to word end`() {
|
||||
doTest(
|
||||
"e",
|
||||
"${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end from end of word`() {
|
||||
doTest(
|
||||
"e",
|
||||
"Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lorem ipsu${c}m dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end from leading whitespace`() {
|
||||
doTest(
|
||||
"e",
|
||||
" ${c} Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
" Lore${c}m ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end stops at non-word characters`() {
|
||||
doTest(
|
||||
"e",
|
||||
"Lorem ipsum dolor sit ${c}amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit ame${c}t, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end moves to end of non-word characters`() {
|
||||
doTest(
|
||||
"e",
|
||||
"Lorem ipsum dolor sit ame${c}t,,,, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet,,,${c}, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end with count`() {
|
||||
doTest(
|
||||
"3e",
|
||||
"${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolo${c}r sit amet, consectetur adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end with count over non-word characters`() {
|
||||
doTest(
|
||||
"3e",
|
||||
"Lorem ipsum dolor si${c}t amet, consectetur adipiscing elit",
|
||||
"Lorem ipsum dolor sit amet, consectetu${c}r adipiscing elit",
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end wraps to next line`() {
|
||||
doTest(
|
||||
"e",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end wraps to next line skipping trailing whitespace`() {
|
||||
doTest(
|
||||
"e",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing eli${c}t....
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
|Se${c}d in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test move to word end at end of file reports error`() {
|
||||
doTest("e", "Lorem ipsu${c}m", "Lorem ipsu${c}m")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
@VimBehaviorDiffers(description = "IdeaVim cannot move and have an error at the same time")
|
||||
@Test
|
||||
fun `test move to word end with large count moves to end of file and reports error`() {
|
||||
doTest("300e", "${c}Lorem ipsum", "Lorem ipsu${c}m")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
@ -0,0 +1,198 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("RemoveCurlyBracesFromTemplate", "SpellCheckingInspection")
|
||||
class MotionWordLeftActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test word left from within word`() {
|
||||
doTest("b", "Lorem ip${c}sum", "Lorem ${c}ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left from start of word`() {
|
||||
doTest("b", "Lorem ${c}ipsum", "${c}Lorem ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left stops at non-word characters`() {
|
||||
doTest("b", "Lorem ipsum;dolor.sit,a${c}met", "Lorem ipsum;dolor.sit,${c}amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left with Shift-Left`() {
|
||||
doTest("<S-Left>", "Lorem ipsum;dolor.sit,a${c}met", "Lorem ipsum;dolor.sit,${c}amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left from trailing whitespace`() {
|
||||
doTest("b", "Lorem Ipsum ${c} ", "Lorem ${c}Ipsum ")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left from trailing whitespace 2`() {
|
||||
doTest("b", "Lorem ${c} Ipsum", "${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left with count from within word`() {
|
||||
doTest(
|
||||
"3b",
|
||||
"""
|
||||
|Lorem ipsum dolor s${c}it amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ${c}ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left with count from start of word`() {
|
||||
doTest(
|
||||
"3b",
|
||||
"""
|
||||
|Lorem ipsum dolor ${c}sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|${c}Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left with count across non-word characters`() {
|
||||
doTest(
|
||||
"3b",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, cons${c}ectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit ${c}amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left at start of line wraps to previous line`() {
|
||||
doTest(
|
||||
"b",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit
|
||||
|${c}Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing ${c}elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left at start of line wraps to previous line with trailing whitespace`() {
|
||||
doTest(
|
||||
"b",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit....
|
||||
|${c}Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing ${c}elit....
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left at start of line with count wraps to previous line`() {
|
||||
doTest(
|
||||
"3b",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur adipiscing elit
|
||||
|Se${c}d in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|consectetur ${c}adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left at start of line across non-word characters`() {
|
||||
doTest(
|
||||
"b",
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet,
|
||||
|${c}consectetur adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem Ipsum
|
||||
|
|
||||
|Lorem ipsum dolor sit amet${c},
|
||||
|consectetur adipiscing elit
|
||||
|Sed in orci mauris.
|
||||
|Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left on first word moves caret to start of word`() {
|
||||
doTest("b", "Lo${c}rem Ipsum", "${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left on leading whitespace at start of file moves caret to start of file`() {
|
||||
doTest("b", " ${c} Lorem Ipsum", "${c} Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word left on first character of file reports error`() {
|
||||
doTest("b", "${c}Lorem Ipsum", "${c}Lorem Ipsum")
|
||||
assertPluginError(true)
|
||||
}
|
||||
}
|
@ -0,0 +1,137 @@
|
||||
/*
|
||||
* Copyright 2003-2025 The IdeaVim authors
|
||||
*
|
||||
* Use of this source code is governed by an MIT-style
|
||||
* license that can be found in the LICENSE.txt file or at
|
||||
* https://opensource.org/licenses/MIT.
|
||||
*/
|
||||
|
||||
package org.jetbrains.plugins.ideavim.action.motion.text
|
||||
|
||||
import org.jetbrains.plugins.ideavim.VimTestCase
|
||||
import org.junit.jupiter.api.Test
|
||||
|
||||
@Suppress("SpellCheckingInspection", "RemoveCurlyBracesFromTemplate")
|
||||
class MotionWordRightActionTest : VimTestCase() {
|
||||
@Test
|
||||
fun `test simple word right`() {
|
||||
doTest("w", "${c}Lorem Ipsum", "Lorem ${c}Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right with non-alpha characters`() {
|
||||
doTest("w", "Lo${c}rem,ipsum;dolor.sit amet", "Lorem${c},ipsum;dolor.sit amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right with Shift-Right`() {
|
||||
doTest("<S-Right>", "Lo${c}rem,ipsum;dolor.sit amet", "Lorem${c},ipsum;dolor.sit amet")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right from leading whitespace`() {
|
||||
doTest("w", "${c} Lorem Ipsum", " ${c}Lorem Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right from leading whitespace 2`() {
|
||||
doTest("w", "Lorem ${c} Ipsum", "Lorem ${c}Ipsum")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right with count`() {
|
||||
doTest(
|
||||
"3w",
|
||||
"""
|
||||
|Lo${c}rem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor ${c}sit amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right with count across non-word characters`() {
|
||||
doTest(
|
||||
"3w",
|
||||
"""
|
||||
|Lorem ipsum dolor s${c}it amet, consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, ${c}consectetur adipiscing elit
|
||||
|Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right at end of line wraps to next line`() {
|
||||
doTest(
|
||||
"w",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing e${c}lit
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
| ${c}Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right at end of line with trailing whitespace wraps to next line`() {
|
||||
doTest(
|
||||
"w",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing e${c}lit....
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit....
|
||||
| ${c}Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin().dotToSpace()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right at end of line with count wraps to next line`() {
|
||||
doTest(
|
||||
"3w",
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur a${c}dipiscing elit
|
||||
| Sed in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin(),
|
||||
"""
|
||||
|Lorem ipsum dolor sit amet, consectetur adipiscing elit
|
||||
| Sed ${c}in orci mauris. Cras id tellus in ex imperdiet egestas.
|
||||
""".trimMargin()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right on last word moves caret to end of word`() {
|
||||
doTest("w", "Lorem I${c}psum", "Lorem Ipsu${c}m")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right on last word with trailing whitespace moves to end of whitespace`() {
|
||||
doTest("w", "Lorem Ipsu${c}m ", "Lorem Ipsum ${c} ")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right on last character of file reports error`() {
|
||||
doTest("w", "Lorem Ipsu${c}m", "Lorem Ipsu${c}m")
|
||||
assertPluginError(true)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun `test word right at end of file with large count does not report error`() {
|
||||
doTest("100w", "L${c}orem Ipsum", "Lorem Ipsu${c}m")
|
||||
assertPluginError(false)
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user