1
0
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:
Emanuel Gestosa 2023-09-07 17:33:58 +01:00 committed by lippfi
parent 44736a51b9
commit 4e42198c09

View File

@ -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)
}
} }
} }
} }