Files
harbour-core/harbour/tests/working/strings3.prg

148 lines
2.9 KiB
Plaintext

#include "set.ch"
function main
local cStr := "This is " + CHR(0) + " a test."
local cTest, nI, nJ, crlf := CHR(13)+CHR(10)
// Test various string operators.
OUTSTD (LEN(cStr))
OUTSTD (cStr)
OUTSTD (UPPER (cStr))
OUTSTD (LOWER (cStr))
OUTSTD (crlf)
OUTSTD (ASC (SUBSTR (cStr, 8)))
OUTSTD (ASC (SUBSTR (cStr, 9)))
OUTSTD (ASC (SUBSTR (cStr, 10)))
OUTSTD (crlf)
OUTSTD (crlf)
OUTSTD (crlf)
OUTSTD (">")
OUTSTD (LEFT (cStr, 8))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (">")
OUTSTD (RIGHT (cStr, 8))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (ISDIGIT ("9"))
OUTSTD (crlf)
OUTSTD (ISDIGIT ("9A"))
OUTSTD (crlf)
OUTSTD (ISDIGIT ("AA"))
OUTSTD (crlf)
OUTSTD (ISDIGIT ("A"))
OUTSTD (crlf)
OUTSTD (crlf)
cTest := " " + CHR (0) + "ABC" + CHR (0) + " "
OUTSTD (crlf)
OUTSTD (">")
OUTSTD(LTRIM (cTest))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (">")
OUTSTD(TRIM (cTest))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (">")
OUTSTD(ALLTRIM (cTest))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (crlf)
OUTSTD (crlf)
OUTSTD (">")
OUTSTD (REPLICATE ("!", 32))
OUTSTD("<")
OUTSTD (crlf)
OUTSTD (">")
OUTSTD (SPACE (32))
OUTSTD("<")
// Test string copying.
cTest := cStr
OUTSTD (crlf)
OUTSTD (cStr)
OUTSTD (crlf)
OUTSTD (cTest)
OUTSTD (crlf)
OUTSTD (crlf)
// Test string concatenation.
cTest += cStr
OUTSTD (crlf)
OUTSTD (cStr)
OUTSTD (crlf)
OUTSTD (cTest)
OUTSTD (crlf)
OUTSTD (crlf)
// Test the string comparison operators in the HVM.
// Note: SET (_SET_EXACT) defaults to .F.
TestStr ()
OUTSTD (crlf)
OUTSTD (crlf)
SET (_SET_EXACT, .T.)
TestStr ()
OUTSTD (crlf)
return nil
function TestStr ()
OUTSTD ("EXACT ")
IF SET (_SET_EXACT)
OUTSTD ("ON")
ELSE
OUTSTD ("OFF")
ENDIF
StrTest ("ABC", "")
StrTest ("ABC", " ")
StrTest ("ABC", "ABC")
StrTest ("ABC", "ABCD")
StrTest ("ABC", "ABC ")
StrTest ("ABC", "DEF")
StrTest ("ABC", "DEFG")
StrTest ("ABCD", "DEF")
return nil
function StrTest (Str1, Str2)
OUTSTD (CHR(13)+CHR(10)+CHR(10))
OUTSTD ("'")
OUTSTD (Str1)
OUTSTD ("', '")
OUTSTD (Str2)
OUTSTD ("' == ")
OUTSTD (Str1 == Str2)
OUTSTD (" = ")
OUTSTD (Str1 = Str2)
OUTSTD (", != ")
OUTSTD (Str1 != Str2)
OUTSTD (", < ")
OUTSTD (Str1 < Str2)
OUTSTD (", <= ")
OUTSTD (Str1 <= Str2)
OUTSTD (", > ")
OUTSTD (Str1 > Str2)
OUTSTD (", >= ")
OUTSTD (Str1 >= Str2)
OUTSTD (CHR(13)+CHR(10))
OUTSTD ("'")
OUTSTD (Str2)
OUTSTD ("', '")
OUTSTD (Str1)
OUTSTD ("' == ")
OUTSTD (Str2 == Str1)
OUTSTD (" = ")
OUTSTD (Str2 = Str1)
OUTSTD (", != ")
OUTSTD (Str2 != Str1)
OUTSTD (", < ")
OUTSTD (Str2 < Str1)
OUTSTD (", <= ")
OUTSTD (Str2 <= Str1)
OUTSTD (", > ")
OUTSTD (Str2 > Str1)
OUTSTD (", >= ")
OUTSTD (Str2 >= Str1)
return nil