Files
odfstudio/basic/qa/basic_coverage/test_string_replace.bas
T
Andreas Heinisch 7e5c9220ef tdf#142487 - use utl::TextSearch in order to implement the replace algorithm
In the old algorithm, some special unicode characters lead to a
malfunction of basic's replace function. For instance, replacing a
German ß to uppercase in the insensitive case will lead to SS, breaking
the replace positions.

Change-Id: I4e6f6e5fba3d560b8cfd0786fa2439ed5174a928
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118760
Tested-by: Jenkins
Reviewed-by: Andreas Heinisch <andreas.heinisch@yahoo.de>
2021-07-12 20:30:19 +02:00

40 lines
1.6 KiB
VB.net
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
Option VBASupport 0
Option Explicit
Function doUnitTest() As String
TestUtil.TestInit
verify_stringReplace
doUnitTest = TestUtil.GetResult()
End Function
Sub verify_stringReplace()
On Error GoTo errorHandler
' tdf#132389 - case-insensitive operation for non-ASCII characters
Dim retStr
retStr = Replace("ABCabc", "b", "*")
TestUtil.AssertEqual(retStr, "A*Ca*c", "case-insensitive ASCII: " & retStr)
retStr = Replace("АБВабв", "б", "*")
TestUtil.AssertEqual(retStr, "А*Ва*в", "case-insensitive non-ASCII: " & retStr)
' tdf#141045 - different length of search and replace string. It is important
' that the search string starts with the original string in order to test the error.
' Without the fix in place, the string index calculations result in a crash.
retStr = Replace("a", "abc", "ab")
TestUtil.AssertEqual(retStr, "a", "different length of search and replace string: " & retStr)
' tdf#143081 - Without the fix in place, this test would have crashed here
retStr = Replace("""Straße""", """", "&quot;")
TestUtil.AssertEqual(retStr, "&quot;Straße&quot;", "replace doesn't crash: " & retStr)
' tdf#142487 - replace of special unicode characters.
' Without the fix in place, this test would have failed with:
' - Expected: Straßen
' - Actual : Straßeen
retStr = Replace("Straße", "e", "en")
TestUtil.AssertEqual(retStr, "Straßen", "special unicode character: " & retStr)
Exit Sub
errorHandler:
TestUtil.ReportErrorHandler("verify_stringReplace", Err, Error$, Erl)
End Sub