+ String.replace
This commit is contained in:
1 parent
368ce2ce8c
commit
12fb4fe0ba
7 files changed
+322
-6
No files matched your search
@@ -4160,6 +4160,30 @@ class ScriptTest {
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testStringReplaceVariants() = runTest {
|
||||
eval(
|
||||
"""
|
||||
assertEquals("bonono", "banana".replace('a', 'o'))
|
||||
assertEquals("bxnxnx", "banana".replace('a', "x"))
|
||||
assertEquals("a-b-c", "a.b.c".replace(".", "-"))
|
||||
assertEquals("bonana", "banana".replaceFirst('a', 'o'))
|
||||
assertEquals("bxnana", "banana".replaceFirst('a', "x"))
|
||||
assertEquals("a-b.c", "a.b.c".replaceFirst(".", "-"))
|
||||
|
||||
assertEquals("foo-#-bar-#", "foo-42-bar-17".replace("\d+".re, "#"))
|
||||
assertEquals("foo-[42]-bar-[17]", "foo-42-bar-17".replace("(\d+)".re) { m ->
|
||||
"[" + m[1] + "]"
|
||||
})
|
||||
assertEquals("foo-[42]-bar-17", "foo-42-bar-17".replaceFirst("(\d+)".re) { m ->
|
||||
"[" + m[1] + "]"
|
||||
})
|
||||
assertEquals("YEAR-04-08", "2026-04-08".replaceFirst("\d+".re, "YEAR"))
|
||||
"""
|
||||
.trimIndent()
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun extensionsMustBeLocalPerScope() = runTest {
|
||||
val scope1 = Script.newScope()
|
||||
|
||||
@@ -102,6 +102,27 @@ class LyngLanguageToolsTest {
|
||||
assertTrue(local.typeText?.contains("String") == true, "Expected type for local, got ${local.typeText}")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun languageTools_docs_for_builtin_string_replace() = runTest {
|
||||
val code = """
|
||||
val s = "a.b.c".replace(".", "-")
|
||||
""".trimIndent()
|
||||
val res = LyngLanguageTools.analyze(code, "replace_docs.lyng")
|
||||
val replaceOffset = code.indexOf("replace")
|
||||
val doc = LyngLanguageTools.docAt(res, replaceOffset)
|
||||
assertNotNull(doc, "Docs should resolve for built-in String.replace")
|
||||
assertEquals("replace", doc.target.name)
|
||||
assertEquals("String", doc.target.containerName)
|
||||
assertTrue(
|
||||
doc.signature?.startsWith("fun String.replace(") == true,
|
||||
"Expected String.replace signature, got ${doc.signature}"
|
||||
)
|
||||
assertTrue(
|
||||
doc.doc?.summary?.contains("string with all literal or regex matches replaced") == true,
|
||||
"Expected replace summary, got ${doc.doc?.summary}"
|
||||
)
|
||||
}
|
||||
|
||||
@Test
|
||||
fun languageTools_definition_and_usages() = runTest {
|
||||
val code = """
|
||||
|
||||
Reference in new issue
Block a user