114 lines
6.4 KiB
Plaintext
114 lines
6.4 KiB
Plaintext
|
|
/* TODO: Add checks for string parameters with embedded NUL character */
|
|
/* TODO: Add test cases for other string functions */
|
|
/* TODO: Incorporate tests from TEST\WORKING\STRING*.PRG
|
|
/* QUESTION: Can Harbour compile and run this (PadR(), Chr(), fWrite(), StrTran()) ? */
|
|
|
|
FUNCTION Main()
|
|
|
|
#define NUL Chr(0)
|
|
|
|
SHOW_TEST('At("", "")' , Str(At("", "")) ) // 1
|
|
SHOW_TEST('At("", "ABCDEF")' , Str(At("", "ABCDEF")) ) // 1
|
|
SHOW_TEST('At("ABCDEF", "")' , Str(At("ABCDEF", "")) ) // 0
|
|
SHOW_TEST('At("AB", "AB")' , Str(At("AB", "AB")) ) // 1
|
|
SHOW_TEST('At("AB", "AAB")' , Str(At("AB", "AAB")) ) // 2
|
|
SHOW_TEST('At("A", "ABCDEF")' , Str(At("A", "ABCDEF")) ) // 1
|
|
SHOW_TEST('At("F", "ABCDEF")' , Str(At("F", "ABCDEF")) ) // 6
|
|
SHOW_TEST('At("D", "ABCDEF")' , Str(At("D", "ABCDEF")) ) // 4
|
|
SHOW_TEST('At("X", "ABCDEF")' , Str(At("X", "ABCDEF")) ) // 0
|
|
SHOW_TEST('At("AB", "ABCDEF")' , Str(At("AB", "ABCDEF")) ) // 1
|
|
SHOW_TEST('At("AA", "ABCDEF")' , Str(At("AA", "ABCDEF")) ) // 0
|
|
SHOW_TEST('At("ABCDEF", "ABCDEF")' , Str(At("ABCDEF", "ABCDEF")) ) // 1
|
|
SHOW_TEST('At("BCDEF", "ABCDEF")' , Str(At("BCDEF", "ABCDEF")) ) // 2
|
|
SHOW_TEST('At("BCDEFG", "ABCDEF")' , Str(At("BCDEFG", "ABCDEF")) ) // 0
|
|
SHOW_TEST('At("ABCDEFG", "ABCDEF")' , Str(At("ABCDEFG", "ABCDEF"))) // 0
|
|
SHOW_TEST('At("FI", "ABCDEF")' , Str(At("FI", "ABCDEF")) ) // 0
|
|
|
|
SHOW_TEST('SubStr("abcdef", 0, -1)' , SubStr("abcdef", 0, -1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 0, 0)' , SubStr("abcdef", 0, 0) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 0, 1)' , SubStr("abcdef", 0, 1) ) // "a"
|
|
SHOW_TEST('SubStr("abcdef", 0, 7)' , SubStr("abcdef", 0, 7) ) // "abcdef"
|
|
SHOW_TEST('SubStr("abcdef", 0)' , SubStr("abcdef", 0) ) // "abcdef"
|
|
SHOW_TEST('SubStr("abcdef", 2, -1)' , SubStr("abcdef", 2, -1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 2, 0)' , SubStr("abcdef", 2, 0) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 2, 1)' , SubStr("abcdef", 2, 1) ) // "b"
|
|
SHOW_TEST('SubStr("abcdef", 2, 7)' , SubStr("abcdef", 2, 7) ) // "bcdef"
|
|
SHOW_TEST('SubStr("abcdef", 2)' , SubStr("abcdef", 2) ) // "bcdef"
|
|
SHOW_TEST('SubStr("abcdef", -2, -1)' , SubStr("abcdef", -2, -1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", -2, 0)' , SubStr("abcdef", -2, 0) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", -2, 1)' , SubStr("abcdef", -2, 1) ) // "e"
|
|
SHOW_TEST('SubStr("abcdef", -2, 7)' , SubStr("abcdef", -2, 7) ) // "ef"
|
|
SHOW_TEST('SubStr("abcdef", -2)' , SubStr("abcdef", -2) ) // "ef"
|
|
SHOW_TEST('SubStr("abcdef", 10, -1)' , SubStr("abcdef", 10, -1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 10, 0)' , SubStr("abcdef", 10, 0) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 10, 1)' , SubStr("abcdef", 10, 1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 10, 7)' , SubStr("abcdef", 10, 7) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", 10)' , SubStr("abcdef", 10) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", -10, -1)' , SubStr("abcdef", -10, -1) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", -10, 0)' , SubStr("abcdef", -10, 0) ) // ""
|
|
SHOW_TEST('SubStr("abcdef", -10, 1)' , SubStr("abcdef", -10, 1) ) // "a"
|
|
SHOW_TEST('SubStr("abcdef", -10, 7)' , SubStr("abcdef", -10, 7) ) // "abcdef"
|
|
SHOW_TEST('SubStr("abcdef", -10, 15)' , SubStr("abcdef", -10, 15) ) // "abcdef"
|
|
SHOW_TEST('SubStr("abcdef", -10)' , SubStr("abcdef", -10) ) // "abcdef"
|
|
|
|
SHOW_LINE()
|
|
|
|
SHOW_TEST('Left("abcdef", -10)' , Left("abcdef", -10) ) // ""
|
|
SHOW_TEST('Left("abcdef", -2)' , Left("abcdef", -2) ) // ""
|
|
SHOW_TEST('Left("abcdef", 0)' , Left("abcdef", 0) ) // ""
|
|
SHOW_TEST('Left("abcdef", 2)' , Left("abcdef", 2) ) // "ab"
|
|
SHOW_TEST('Left("abcdef", 10)' , Left("abcdef", 10) ) // "abcdef"
|
|
|
|
SHOW_LINE()
|
|
|
|
SHOW_TEST('Right("abcdef", -10)' , Right("abcdef", -10) ) // ""
|
|
SHOW_TEST('Right("abcdef", -2)' , Right("abcdef", -2) ) // ""
|
|
SHOW_TEST('Right("abcdef", 0)' , Right("abcdef", 0) ) // ""
|
|
SHOW_TEST('Right("abcdef", 2)' , Right("abcdef", 2) ) // "ef"
|
|
SHOW_TEST('Right("abcdef", 10)' , Right("abcdef", 10) ) // "abcdef"
|
|
|
|
SHOW_LINE()
|
|
|
|
SHOW_TEST('PadR("abcdef", -5)' , PadR("abcdef", -5) ) // ""
|
|
SHOW_TEST('PadR("abcdef", 0)' , PadR("abcdef", 0) ) // ""
|
|
SHOW_TEST('PadR("abcdef", 5)' , PadR("abcdef", 5) ) // "abcde"
|
|
SHOW_TEST('PadR("abcdef", 10)' , PadR("abcdef", 10) ) // "abcdef "
|
|
SHOW_TEST('PadR("abcdef", 10, "1")' , PadR("abcdef", 10, "1") ) // "abcdef1111"
|
|
SHOW_TEST('PadR("abcdef", 10, "12")' , PadR("abcdef", 10, "12") ) // "abcdef1111"
|
|
|
|
SHOW_LINE()
|
|
|
|
SHOW_TEST('PadL("abcdef", -5)' , PadL("abcdef", -5) ) // ""
|
|
SHOW_TEST('PadL("abcdef", 0)' , PadL("abcdef", 0) ) // ""
|
|
SHOW_TEST('PadL("abcdef", 5)' , PadL("abcdef", 5) ) // "abcde" /* QUESTION: CA-Clipper "bug", should return: "bcdef" ? */
|
|
SHOW_TEST('PadL("abcdef", 10)' , PadL("abcdef", 10) ) // " abcdef"
|
|
SHOW_TEST('PadL("abcdef", 10, "1")' , PadL("abcdef", 10, "1") ) // "1111abcdef"
|
|
SHOW_TEST('PadL("abcdef", 10, "12")' , PadL("abcdef", 10, "12") ) // "1111abcdef"
|
|
|
|
SHOW_LINE()
|
|
|
|
SHOW_TEST('PadC("abcdef", -5)' , PadC("abcdef", -5) ) // ""
|
|
SHOW_TEST('PadC("abcdef", 0)' , PadC("abcdef", 0) ) // ""
|
|
SHOW_TEST('PadC("abcdef", 2)' , PadC("abcdef", 2) ) // "ab" /* QUESTION: CA-Clipper "bug", should return: "cd" ? */
|
|
SHOW_TEST('PadC("abcdef", 5)' , PadC("abcdef", 5) ) // "abcde"
|
|
SHOW_TEST('PadC("abcdef", 10)' , PadC("abcdef", 10) ) // " abcdef "
|
|
SHOW_TEST('PadC("abcdef", 10, "1")' , PadC("abcdef", 10, "1") ) // "11abcdef11"
|
|
SHOW_TEST('PadC("abcdef", 10, "12")' , PadC("abcdef", 10, "12") ) // "11abcdef11"
|
|
|
|
SHOW_LINE()
|
|
|
|
/* TODO: These could be more complete */
|
|
|
|
SHOW_TEST('SubStr("ab" + NUL + "def", 2, 3)', SubStr("ab" + NUL + "def", 2, 3) )
|
|
SHOW_TEST('Left("ab" + NUL + "def", 5)', Left("ab" + NUL + "def", 5) )
|
|
SHOW_TEST('Right("ab" + NUL + "def", 5)', Right("ab" + NUL + "def", 5) )
|
|
|
|
RETURN NIL
|
|
|
|
STATIC FUNCTION SHOW_TEST(cExpr, cResult)
|
|
RETURN fWrite(1, PadR(StrTran(cExpr, Chr(0), "."), 40) + " -> " + '"' + StrTran(cResult, Chr(0), ".") + '"' + Chr(13) + Chr(10))
|
|
|
|
STATIC FUNCTION SHOW_LINE()
|
|
RETURN fWrite(1, Chr(13) + Chr(10))
|