blob: ac20dcf07059d6b09ebc9f8c4f1226b99f367cdc [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE script:module PUBLIC "-//OpenOffice.org//DTD OfficeDocument 1.0//EN" "module.dtd">
<script:module xmlns:script="http://openoffice.org/2000/script" script:name="i18n_XTransliteration" script:language="StarBasic">
'*************************************************************************
'
' Licensed to the Apache Software Foundation (ASF) under one
' or more contributor license agreements. See the NOTICE file
' distributed with this work for additional information
' regarding copyright ownership. The ASF licenses this file
' to you under the Apache License, Version 2.0 (the
' "License"); you may not use this file except in compliance
' with the License. You may obtain a copy of the License at
'
' http://www.apache.org/licenses/LICENSE-2.0
'
' Unless required by applicable law or agreed to in writing,
' software distributed under the License is distributed on an
' "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
' KIND, either express or implied. See the License for the
' specific language governing permissions and limitations
' under the License.
'
'*************************************************************************
'*************************************************************************
' This Interface/Service test depends on the following GLOBAL variables,
' which must be specified in the object creation:
' - Global oLocale As Object
'*************************************************************************
Sub RunTest()
'*************************************************************************
' INTERFACE:
' com.sun.star.i18n.XTransliteration
'*************************************************************************
On Error Goto ErrHndl
Dim bOK As Boolean
Dim availableModules As Variant
Dim _string As String
Dim i As Integer
Test.StartMethod("getAvailableModules()")
bOK = true
availableModules = oObj.getAvailableModules(oLocale, com.sun.star.i18n.TransliterationModules.UPPERCASE_LOWERCASE)
_string = ""
for i = 0 to ubound(availableModules)
_string = _string + availableModules(i) + "; "
next i
Out.Log("AvailableModules: " + _string)
bOK = bOK AND _string &lt;&gt; ""
Test.MethodTested("getAvailableModules()", bOK)
Test.StartMethod("loadModuleByImplName()")
bOK = true
oObj.loadModuleByImplName("LOWERCASE_UPPERCASE", oLocale)
Dim module_name As String
module_name = oObj.getName()
out.log("getName return: " + module_name)
bOK = module_name = "lower_to_upper(generic)"
Test.MethodTested("loadModuleByImplName()", bOK)
Test.StartMethod("getName()")
bOK = true
Out.Log("Module name is " + oObj.getName())
bOK = bOK AND oObj.getName() &lt;&gt; ""
Test.MethodTested("getName()", bOK)
Test.StartMethod("getType()")
bOK = true
Out.Log("Type is " + oObj.getType())
bOK = bOK AND oObj.getType() = 1 ' for UPPERCASE_LOWERCASE it is ONE_TO_ONE
Test.MethodTested("getType()", bOK)
Test.StartMethod("loadModule()")
bOK = true
oObj.loadModule(com.sun.star.i18n.TransliterationModules.LOWERCASE_UPPERCASE, oLocale)
bOK = bOK AND oObj.getType = com.sun.star.i18n.TransliterationType.ONE_TO_ONE
Test.MethodTested("loadModule()", bOK)
Test.StartMethod("loadModulesByImplNames()")
bOK = true
Dim Names(0) As String
Names(0) = "UPPERCASE_LOWERCASE"
oObj.loadModulesByImplNames(Names(), oLocale)
module_name = oObj.getName()
out.log("getName return: " + module_name)
bOK = module_name = "upper_to_lower(generic)"
Test.MethodTested("loadModulesByImplNames()", bOK)
Test.StartMethod("loadModuleNew()")
bOK = true
Dim ModulesNew(0) As Variant
ModulesNew(0) = com.sun.star.i18n.TransliterationModulesNew.LOWERCASE_UPPERCASE
oObj.loadModuleNew(ModulesNew(), oLocale)
bOK = bOK AND oObj.getType = com.sun.star.i18n.TransliterationType.ONE_TO_ONE
Test.MethodTested("loadModuleNew()", bOK)
Test.StartMethod("transliterate()")
Dim offset() As Variant
bOK = true
Out.Log("LOWERCASE_UPPERCASE-transliterate part of string 'AaBbCc'")
_string = oObj.transliterate("AaBbCc", 1, 4, offset())
Out.Log("Result of transliteration: " + _string)
bOK = bOK AND "ABBC" = _string
bOK = bOK AND ubound(offset()) = 3
for i = 0 to ubound(offset())
bOK = bOK AND offset(i) = i + 1
next i
Test.MethodTested("transliterate()", bOK)
Test.StartMethod("equals()")
bOK = true
Dim Match1 As Variant, Match2 As Variant
bOK = bOK AND oObj.equals("This is an example string to be transliterate", 2, 20, Match1, _
"IS IS AN EXAMPLE STR", 0, 20, Match2)
Test.MethodTested("equals()", bOK)
Test.StartMethod("folding()")
bOK = true
_string = oObj.folding("AaBbCc", 1, 4, offset())
Out.Log("Result of folding: " + _string)
bOK = bOK AND "ABBC" = _string
bOK = bOK AND ubound(offset()) = 3
for i = 0 to ubound(offset())
bOK = bOK AND offset(i) = i + 1
next i
Test.MethodTested("folding()", bOK)
Test.StartMethod("transliterateRange()")
Dim Result As Variant
bOK = true
oObj.loadModule(com.sun.star.i18n.TransliterationModules.IGNORE_CASE, _Locale)
Result = oObj.transliterateRange("a", "c")
for i = 0 to ubound(Result)
Out.Log(Result(i))
next i
bOK = bOK AND ubound(Result()) = 3 AND _
((Result(0) = "a" AND Result(1) = "c" AND Result(2) = "A" AND Result(3) = "C" ) OR _
(Result(0) = "A" AND Result(1) = "C" AND Result(2) = "a" AND Result(3) = "c" ))
Test.MethodTested("transliterateRange()", bOK)
Test.StartMethod("compareString()")
oObj.loadModule(com.sun.star.i18n.TransliterationModules.LOWERCASE_UPPERCASE, _Locale)
bOK = true
bOK = bOK AND testString("", "", 0)
bOK = bOK AND testString("a", "", 1)
bOK = bOK AND testString("a", "a", 0)
bOK = bOK AND testString("A", "a", 1)
bOK = bOK AND testString("b", "a", 1)
bOK = bOK AND testString(chr(10), chr(10), 0)
bOK = bOK AND testString(chr(10), chr(9), 1)
bOK = bOK AND testString("aaa", "aaa", 0)
bOK = bOK AND testString("aaA", "aaa", 1)
bOK = bOK AND testString("aaa", "aa", 1)
bOK = bOK AND testString("ab", "aaa", 1)
bOK = bOK AND testString("aba", "aa", 1)
bOK = bOK AND testString("aaa" + chr(10) + chr(9) + "a", "aaa" + chr(10) + chr(9) + "a", 0)
bOK = bOK AND testString("aaa" + chr(9) + chr(10) + "b", "aaa" + chr(9) + chr(10) + "a", 1)
Test.MethodTested("compareString()", bOK)
Test.StartMethod("compareSubstring()")
bOK = true
' substrings below must be equal
bOK = bOK AND testSubstring("", 0, 0, "", 0, 0, 0)
bOK = bOK AND testSubstring("aa", 1, 0, "", 0, 0, 0)
bOK = bOK AND testSubstring("aa", 1, 0, "aa", 2, 0, 0)
bOK = bOK AND testSubstring("a", 0, 1, "a", 0, 1, 0)
bOK = bOK AND testSubstring("ab", 0, 2, "ab", 0, 2, 0)
bOK = bOK AND testSubstring("abc", 1, 2, "abc", 1, 2, 0)
bOK = bOK AND testSubstring("abcdef", 0, 3, "123abc", 3, 3, 0)
bOK = bOK AND testSubstring("abcdef", 1, 1, "123abc", 4, 1, 0)
' substrings below must NOT be equal
bOK = bOK AND testSubstring("a", 0, 1, "a", 0, 0, 1)
bOK = bOK AND testSubstring("aaa", 1, 1, "", 0, 0, 1)
bOK = bOK AND testSubstring("bbb", 2, 1, "aaa", 2, 1, 1)
bOK = bOK AND testSubstring("abc", 0, 3, "abc", 0, 2, 1)
bOK = bOK AND testSubstring("bbc", 1, 2, "bbc", 0, 2, 1)
Test.MethodTested("compareSubstring()", bOK)
Exit Sub
ErrHndl:
Test.Exception()
bOK = false
resume next
End Sub
Function testString(str1 As String, str2 As String, expRes As Integer) As Boolean
if expRes = 0 then
testString = testStringCommon(str1, str2, expRes, false)
else
testString = testStringCommon(str1, str2, expRes, true)
end if
End Function
Function testStringCommon(str1 As String, str2 As String, expRes As Integer, testReverse As Boolean) As Boolean
Dim res As Integer
testStringCommon = true
res = -666
res = oObj.compareString(str1, str2)
if res = expRes then
Out.Log("Comparing of '" + str1 + "' and '" + str2 + "' OK" )
else
Out.Log("Comparing of '" + str1 + "' and '" + str2 + _
"' FAILED; return: " + res + ", expected: " + expRes)
testStringCommon = false
end if
if NOT testReverse then
Exit Function
end if
res = -666
res = oObj.compareString(str2, str1)
if res = -expRes then
Out.Log("Comparing of '" + str2 + "' and '" + str1 + "' OK" )
else
Out.Log("Comparing of '" + str2 + "' and '" + str1 + _
"' FAILED; return: " + res + ", expected: " + -expRes)
testStringCommon = false
end if
End Function
Function testSubstring(str1 As String, p1 As Integer, len1 As Integer, _
str2 As String, p2 As Integer, len2 As Integer, expRes As Integer) As Boolean
testSubstring = true
Dim res As Integer
res = -666
res = oObj.compareSubstring(str1, p1, len1, str2, p2, len2)
if res &lt;&gt; expRes then
Out.Log("Comparing FAILED; return: " + res + ", expected: " + expRes + " ")
testSubstring = false
else
Out.Log("Comparing OK : ")
end if
Out.Log("('" + str1 + "', " + p1 + ", " + len1 + ", '" + _
str2 + "', " + p2 + ", " + len2 + ")")
res = -666
res = oObj.compareSubstring(str2, p2, len2, str1, p1, len1)
if res &lt;&gt; -expRes then
Out.Log("Comparing FAILED; return: " + res + ", expected: " + _
-expRes + " ")
testSubstring = false
else
Out.Log("Comparing OK :")
end if
Out.Log("('" + str2 + "', " + p2 + ", " + len2 + ", '" + _
str1 + "', " + p1 + ", " + len1 + ")")
End Function
</script:module>