mirror of
https://github.com/chylex/IntelliJ-IdeaVim.git
synced 2025-06-02 13:34:07 +02:00
using multi line strings in VimRegexTest
This commit is contained in:
parent
44736a51b9
commit
4e42198c09
@ -20,12 +20,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test single word contains match in editor`() {
|
fun `test single word contains match in editor`() {
|
||||||
assertContainsMatchIn(
|
assertContainsMatchIn(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"dolor",
|
"dolor",
|
||||||
true
|
true
|
||||||
)
|
)
|
||||||
@ -34,12 +36,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test single word does not contain match in editor`() {
|
fun `test single word does not contain match in editor`() {
|
||||||
assertContainsMatchIn(
|
assertContainsMatchIn(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"IdeaVim",
|
"IdeaVim",
|
||||||
false
|
false
|
||||||
)
|
)
|
||||||
@ -48,12 +52,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test find single word starting at beginning`() {
|
fun `test find single word starting at beginning`() {
|
||||||
assertFind(
|
assertFind(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
TextRange(0, 5)
|
TextRange(0, 5)
|
||||||
)
|
)
|
||||||
@ -62,12 +68,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test find single word starting from offset`() {
|
fun `test find single word starting from offset`() {
|
||||||
assertFind(
|
assertFind(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
TextRange(13, 18),
|
TextRange(13, 18),
|
||||||
1
|
1
|
||||||
@ -77,12 +85,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test find all occurrences of word`() {
|
fun `test find all occurrences of word`() {
|
||||||
assertFindAll(
|
assertFindAll(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
setOf(TextRange(0, 5), TextRange(13, 18))
|
setOf(TextRange(0, 5), TextRange(13, 18))
|
||||||
)
|
)
|
||||||
@ -91,12 +101,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test find all occurrences of word from offset`() {
|
fun `test find all occurrences of word from offset`() {
|
||||||
assertFindAll(
|
assertFindAll(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
setOf(TextRange(13, 18)),
|
setOf(TextRange(13, 18)),
|
||||||
10
|
10
|
||||||
@ -106,12 +118,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test find all occurrences of word case insensitive`() {
|
fun `test find all occurrences of word case insensitive`() {
|
||||||
assertFindAll(
|
assertFindAll(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"lorem\\c",
|
"lorem\\c",
|
||||||
setOf(TextRange(0, 5), TextRange(13, 18))
|
setOf(TextRange(0, 5), TextRange(13, 18))
|
||||||
)
|
)
|
||||||
@ -120,12 +134,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test word matches at index`() {
|
fun `test word matches at index`() {
|
||||||
assertMatchAt(
|
assertMatchAt(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
13,
|
13,
|
||||||
TextRange(13, 18)
|
TextRange(13, 18)
|
||||||
@ -135,12 +151,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test word does not match at index`() {
|
fun `test word does not match at index`() {
|
||||||
assertMatchAt(
|
assertMatchAt(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
12,
|
12,
|
||||||
null
|
null
|
||||||
@ -150,12 +168,14 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test pattern matches entire editor`() {
|
fun `test pattern matches entire editor`() {
|
||||||
val text =
|
val text =
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas."
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas
|
||||||
|
""".trimMargin()
|
||||||
|
|
||||||
assertMatchEntire(
|
assertMatchEntire(
|
||||||
text,
|
text,
|
||||||
@ -167,61 +187,65 @@ class VimRegexTest {
|
|||||||
@Test
|
@Test
|
||||||
fun `test pattern matches string only partially`() {
|
fun `test pattern matches string only partially`() {
|
||||||
assertMatchEntire(
|
assertMatchEntire(
|
||||||
"Lorem Ipsum\n" +
|
"""
|
||||||
"\n" +
|
|Lorem Ipsum
|
||||||
"Lorem ipsum dolor sit amet,\n" +
|
|
|
||||||
"consectetur adipiscing elit\n" +
|
|Lorem ipsum dolor sit amet,
|
||||||
"Sed in orci mauris.\n" +
|
|consectetur adipiscing elit
|
||||||
"Cras id tellus in ex imperdiet egestas.",
|
|Sed in orci mauris.
|
||||||
|
|Cras id tellus in ex imperdiet egestas.
|
||||||
|
""".trimMargin(),
|
||||||
"Lorem",
|
"Lorem",
|
||||||
null
|
null
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun assertContainsMatchIn(text: CharSequence, pattern: String, expectedResult : Boolean) {
|
companion object {
|
||||||
val editor = mockEditorFromText(text)
|
private fun assertContainsMatchIn(text: CharSequence, pattern: String, expectedResult : Boolean) {
|
||||||
val regex = VimRegex(pattern)
|
val editor = mockEditorFromText(text)
|
||||||
val matchResult = regex.containsMatchIn(editor)
|
val regex = VimRegex(pattern)
|
||||||
assertEquals(expectedResult, matchResult)
|
val matchResult = regex.containsMatchIn(editor)
|
||||||
}
|
assertEquals(expectedResult, matchResult)
|
||||||
|
|
||||||
private fun assertFind(text: CharSequence, pattern: String, expectedResult: TextRange, startIndex: Int = 0) {
|
|
||||||
val editor = mockEditorFromText(text)
|
|
||||||
val regex = VimRegex(pattern)
|
|
||||||
val matchResult = regex.find(editor, startIndex)
|
|
||||||
when (matchResult) {
|
|
||||||
is VimMatchResult.Failure -> fail("Expected to find match")
|
|
||||||
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun assertFindAll(text: CharSequence, pattern: String, expectedResult: Set<TextRange>, startIndex: Int = 0) {
|
private fun assertFind(text: CharSequence, pattern: String, expectedResult: TextRange, startIndex: Int = 0) {
|
||||||
val editor = mockEditorFromText(text)
|
val editor = mockEditorFromText(text)
|
||||||
val regex = VimRegex(pattern)
|
val regex = VimRegex(pattern)
|
||||||
val matchResults = regex.findAll(editor, startIndex)
|
val matchResult = regex.find(editor, startIndex)
|
||||||
assertEquals(expectedResult, matchResults
|
when (matchResult) {
|
||||||
.map { it.range }
|
is VimMatchResult.Failure -> fail("Expected to find match")
|
||||||
.toSet()
|
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
||||||
)
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun assertMatchAt(text: CharSequence, pattern: String, index: Int, expectedResult: TextRange? = null) {
|
|
||||||
val editor = mockEditorFromText(text)
|
|
||||||
val regex = VimRegex(pattern)
|
|
||||||
val matchResult = regex.matchAt(editor, index)
|
|
||||||
when (matchResult) {
|
|
||||||
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
|
||||||
is VimMatchResult.Failure -> assertEquals(expectedResult, null)
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun assertMatchEntire(text: CharSequence, pattern: String, expectedResult: TextRange? = null) {
|
private fun assertFindAll(text: CharSequence, pattern: String, expectedResult: Set<TextRange>, startIndex: Int = 0) {
|
||||||
val editor = mockEditorFromText(text)
|
val editor = mockEditorFromText(text)
|
||||||
val regex = VimRegex(pattern)
|
val regex = VimRegex(pattern)
|
||||||
val matchResult = regex.matchEntire(editor)
|
val matchResults = regex.findAll(editor, startIndex)
|
||||||
when (matchResult) {
|
assertEquals(expectedResult, matchResults
|
||||||
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
.map { it.range }
|
||||||
is VimMatchResult.Failure -> assertEquals(expectedResult, null)
|
.toSet()
|
||||||
|
)
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertMatchAt(text: CharSequence, pattern: String, index: Int, expectedResult: TextRange? = null) {
|
||||||
|
val editor = mockEditorFromText(text)
|
||||||
|
val regex = VimRegex(pattern)
|
||||||
|
val matchResult = regex.matchAt(editor, index)
|
||||||
|
when (matchResult) {
|
||||||
|
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
||||||
|
is VimMatchResult.Failure -> assertEquals(expectedResult, null)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun assertMatchEntire(text: CharSequence, pattern: String, expectedResult: TextRange? = null) {
|
||||||
|
val editor = mockEditorFromText(text)
|
||||||
|
val regex = VimRegex(pattern)
|
||||||
|
val matchResult = regex.matchEntire(editor)
|
||||||
|
when (matchResult) {
|
||||||
|
is VimMatchResult.Success -> assertEquals(expectedResult, matchResult.range)
|
||||||
|
is VimMatchResult.Failure -> assertEquals(expectedResult, null)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue
Block a user