diff options
author | Didier Raboud <odyx@debian.org> | 2018-03-31 20:38:20 +0200 |
---|---|---|
committer | Didier Raboud <odyx@debian.org> | 2018-03-31 20:38:20 +0200 |
commit | 81a12327d1fddfa9876df852c024f93f7b83a48e (patch) | |
tree | 72d38bea65b9a1daff5914f279604071e35efe45 /Examples/StrFunc.nsi | |
parent | 4ae33bb6c5bdcdf4304ba4c205458adb019d4b78 (diff) |
Import Upstream version 2.35
Diffstat (limited to 'Examples/StrFunc.nsi')
-rwxr-xr-x | Examples/StrFunc.nsi | 1269 |
1 files changed, 635 insertions, 634 deletions
diff --git a/Examples/StrFunc.nsi b/Examples/StrFunc.nsi index f711809..93e4c28 100755 --- a/Examples/StrFunc.nsi +++ b/Examples/StrFunc.nsi @@ -1,634 +1,635 @@ -Name "NSIS StrFunc Example" -OutFile "StrFunc.exe" -ShowInstDetails show -ShowUninstDetails show -XPStyle on - -!include "StrFunc.nsh" - -# Declare used functions -${StrCase} -${StrClb} -${StrIOToNSIS} -${StrLoc} -${StrNSISToIO} -${StrRep} -${StrStr} -${StrStrAdv} -${StrTok} -${StrTrimNewLines} -${StrSort} - -${UnStrCase} -${UnStrClb} -${UnStrIOToNSIS} -${UnStrLoc} -${UnStrNSISToIO} -${UnStrRep} -${UnStrStr} -${UnStrStrAdv} -${UnStrTok} -${UnStrTrimNewLines} -${UnStrSort} - -!macro StackVerificationStart - StrCpy $0 S0 - StrCpy $1 S1 - StrCpy $2 S2 - StrCpy $3 S3 - StrCpy $4 S4 - StrCpy $5 S5 - StrCpy $6 S6 - StrCpy $7 S7 - StrCpy $8 S8 - StrCpy $9 S9 - StrCpy $R0 SR0 - StrCpy $R1 SR1 - StrCpy $R2 SR2 - StrCpy $R3 SR3 - StrCpy $R4 SR4 - StrCpy $R5 SR5 - StrCpy $R6 SR6 - StrCpy $R7 SR7 - StrCpy $R8 SR8 - StrCpy $R9 SR9 -!macroend - -!macro StackVerificationEnd - ClearErrors - ${If} $1 != "S1" - ${OrIf} $2 != "S2" - ${OrIf} $3 != "S3" - ${OrIf} $4 != "S4" - ${OrIf} $5 != "S5" - ${OrIf} $6 != "S6" - ${OrIf} $7 != "S7" - ${OrIf} $8 != "S8" - ${OrIf} $9 != "S9" - ${OrIf} $R0 != "SR0" - ${OrIf} $R1 != "SR1" - ${OrIf} $R2 != "SR2" - ${OrIf} $R3 != "SR3" - ${OrIf} $R4 != "SR4" - ${OrIf} $R5 != "SR5" - ${OrIf} $R6 != "SR6" - ${OrIf} $R7 != "SR7" - ${OrIf} $R8 != "SR8" - ${OrIf} $R9 != "SR9" - SetErrors - ${EndIf} -!macroend - -Section - - # Test case conversion - !insertmacro StackVerificationStart - ${StrCase} $0 "This is just an example. A very simple one." "" - StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror - ${StrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S" - StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror - ${StrCase} $0 "This is just an example. A very simple one." "L" - StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror - ${StrCase} $0 "This is just an example. A very simple one." "U" - StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror - ${StrCase} $0 "This is just an example. A very simple one." "T" - StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror - ${StrCase} $0 "This is just an example. A very simple one." "<>" - StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror - ${StrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S" - StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror - ${StrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>" - StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror - ${StrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S" - StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror - !insertmacro StackVerificationEnd - IfErrors strcaseerror - - DetailPrint "PASSED StrCase test" - Goto +2 -strcaseerror: - DetailPrint "FAILED StrCase test" - - # Test clipboard function - !insertmacro StackVerificationStart - ${StrClb} $0 "StrFunc clipboard test" ">" - StrCmp $0 "" 0 strclberror - ${StrClb} $0 "StrFunc clipboard test #2" "<>" - StrCmp $0 "StrFunc clipboard test" 0 strclberror - ${StrClb} $0 "" "<" - StrCmp $0 "StrFunc clipboard test #2" 0 strclberror - ${StrClb} $0 "" "" - StrCmp $0 "" 0 strclberror - !insertmacro StackVerificationEnd - IfErrors strclberror - - DetailPrint "PASSED StrClb test" - Goto +2 -strclberror: - DetailPrint "FAILED StrClb test" - - # Test IO functions - !insertmacro StackVerificationStart - !macro testio str - ${StrNSISToIO} $0 "${str}" - ${StrIOToNSIS} $0 $0 - StrCmp $0 "${str}" 0 ioerror - !macroend - !insertmacro testio "$\rtest$\n" - !insertmacro testio "test$\n" - !insertmacro testio "$\rtest" - !insertmacro testio "test" - !insertmacro testio "$\r\$\t$\n" - !insertmacro testio "$\r \ $\t $\n $$" - !insertmacro testio "" - !insertmacro testio " " - !insertmacro StackVerificationEnd - IfErrors ioerror - - DetailPrint "PASSED StrNSISToIO/StrIOToNSIS test" - Goto +2 -ioerror: - DetailPrint "FAILED StrNSISToIO/StrIOToNSIS test" - - # Test string search functions - !insertmacro StackVerificationStart - ${StrLoc} $0 "This is just an example" "just" "<" - StrCmp $0 "11" 0 strlocerror - ${StrLoc} $0 a abc < - StrCmp $0 "" 0 strlocerror - ${StrLoc} $0 a abc > - StrCmp $0 "" 0 strlocerror - ${StrLoc} $0 abc a > - StrCmp $0 "0" 0 strlocerror - ${StrLoc} $0 abc b > - StrCmp $0 "1" 0 strlocerror - ${StrLoc} $0 abc c > - StrCmp $0 "2" 0 strlocerror - ${StrLoc} $0 abc a < - StrCmp $0 "2" 0 strlocerror - ${StrLoc} $0 abc b < - StrCmp $0 "1" 0 strlocerror - ${StrLoc} $0 abc c < - StrCmp $0 "0" 0 strlocerror - ${StrLoc} $0 abc d < - StrCmp $0 "" 0 strlocerror - !insertmacro StackVerificationEnd - IfErrors strlocerror - - DetailPrint "PASSED StrLoc test" - Goto +2 -strlocerror: - DetailPrint "FAILED StrLoc test" - - # Test string replacement - !insertmacro StackVerificationStart - ${StrRep} $0 "This is just an example" "an" "one" - StrCmp $0 "This is just one example" 0 strreperror - ${StrRep} $0 "test... test... 1 2 3..." "test" "testing" - StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror - ${StrRep} $0 "" "test" "testing" - StrCmp $0 "" 0 strreperror - ${StrRep} $0 "test" "test" "testing" - StrCmp $0 "testing" 0 strreperror - ${StrRep} $0 "test" "test" "" - StrCmp $0 "" 0 strreperror - ${StrRep} $0 "test" "" "abc" - StrCmp $0 "test" 0 strreperror - ${StrRep} $0 "test" "" "" - StrCmp $0 "test" 0 strreperror - !insertmacro StackVerificationEnd - IfErrors strreperror - - DetailPrint "PASSED StrRep test" - Goto +2 -strreperror: - DetailPrint "FAILED StrRep test" - - # Test sorting - !insertmacro StackVerificationStart - ${StrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0" - StrCmp $0 "This is an exam" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "j" " " "0" "" "0" - StrCmp $0 "just" 0 strsorterror - ${StrSort} $0 "This is just an example" "" "j" "" "0" "1" "0" - StrCmp $0 "This is just an example" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "us" "" "0" "1" "0" - StrCmp $0 "just an example" 0 strsorterror - ${StrSort} $0 "This is just an example" "" "u" " " "0" "1" "0" - StrCmp $0 "This is just" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "just" " " "0" "1" "0" - StrCmp $0 "just" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "t" " " "0" "1" "0" - StrCmp $0 "This" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "le" " " "0" "1" "0" - StrCmp $0 "example" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "le" " " "1" "0" "0" - StrCmp $0 " examp" 0 strsorterror - ${StrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0" - StrCmp $0 "error" 0 strsorterror - ${StrSort} $0 "" " " "something" " " "0" "1" "0" - StrCmp $0 "" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "j" " " "" "" "" - StrCmp $0 " just " 0 strsorterror - ${StrSort} $0 "This is just an example" " " "j" " " "1" "0" "1" - StrCmp $0 " ust " 0 strsorterror - ${StrSort} $0 "This is just an example" "" "j" "" "0" "0" "1" - StrCmp $0 "This is ust an example" 0 strsorterror - ${StrSort} $0 "This is just an example" " " "us" "" "1" "0" "0" - StrCmp $0 " jt an example" 0 strsorterror - ${StrSort} $0 "This is just an example" "" "u" " " "0" "0" "1" - StrCmp $0 "This is jst " 0 strsorterror - ${StrSort} $0 "This is just an example" " " "just" " " "1" "0" "1" - StrCmp $0 " " 0 strsorterror - ${StrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0" - StrCmp $0 " rror " 0 strsorterror - ${StrSort} $0 "" " " "something" " " "1" "0" "1" - StrCmp $0 "" 0 strsorterror - !insertmacro StackVerificationEnd - IfErrors strsorterror - - DetailPrint "PASSED StrSort test" - Goto +2 -strsorterror: - DetailPrint "FAILED StrSort test" - - !insertmacro StackVerificationStart - ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "g" - StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror - ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga" - StrCmp $0 "" 0 strstrerror - ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "" - StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror - ${StrStr} $0 "a" "abcefghijklmnopqrstuvwxyz" - StrCmp $0 "" 0 strstrerror - !insertmacro StackVerificationEnd - IfErrors strstrerror - - DetailPrint "PASSED StrStr test" - Goto +2 -strstrerror: - DetailPrint "FAILED StrStr test" - - !insertmacro StackVerificationStart - ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0" - StrCmp $0 "abcabcabc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0" - StrCmp $0 "abc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0" - StrCmp $0 "" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0" - StrCmp $0 "abc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0" - StrCmp $0 "abcabcabc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0" - StrCmp $0 "" 0 strstradverror - ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0" - StrCmp $0 "abc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1" - StrCmp $0 "abcabc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1" - StrCmp $0 "abc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1" - StrCmp $0 "" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1" - StrCmp $0 "" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1" - StrCmp $0 "ABCabcabc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1" - StrCmp $0 "ABCabc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1" - StrCmp $0 "ABCabcabc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1" - StrCmp $0 "ABCabc" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1" - StrCmp $0 "" 0 strstradverror - ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1" - StrCmp $0 "abc" 0 strstradverror - !insertmacro StackVerificationEnd - IfErrors strstradverror - - DetailPrint "PASSED StrStrAdv test" - Goto +2 -strstradverror: - DetailPrint "FAILED StrStrAdv test" - - # Test tokenizer - !insertmacro StackVerificationStart - ${StrTok} $0 "This is, or is not, just an example" " ," "4" "1" - StrCmp $0 "not" 0 strtokerror - ${StrTok} $0 "This is, or is not, just an example" " ," "4" "0" - StrCmp $0 "is" 0 strtokerror - ${StrTok} $0 "This is, or is not, just an example" " ," "152" "0" - StrCmp $0 "" 0 strtokerror - ${StrTok} $0 "This is, or is not, just an example" " ," "" "0" - StrCmp $0 "example" 0 strtokerror - ${StrTok} $0 "This is, or is not, just an example" " ," "L" "0" - StrCmp $0 "example" 0 strtokerror - ${StrTok} $0 "This is, or is not, just an example" " ," "0" "0" - StrCmp $0 "This" 0 strtokerror - !insertmacro StackVerificationEnd - IfErrors strtokerror - - DetailPrint "PASSED StrTok test" - Goto +2 -strtokerror: - DetailPrint "FAILED StrTok test" - - # Test trim new lines - !insertmacro StackVerificationStart - ${StrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n" - StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror - !insertmacro StackVerificationEnd - IfErrors strtrimnewlineserror - - DetailPrint "PASSED StrTrimNewLines test" - Goto +2 -strtrimnewlineserror: - DetailPrint "FAILED StrTrimNewLines test" - - WriteUninstaller $EXEDIR\UnStrFunc.exe - - Exec $EXEDIR\UnStrFunc.exe - -SectionEnd - -Section Uninstall - - # Test case conversion - !insertmacro StackVerificationStart - ${UnStrCase} $0 "This is just an example. A very simple one." "" - StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror - ${UnStrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S" - StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror - ${UnStrCase} $0 "This is just an example. A very simple one." "L" - StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror - ${UnStrCase} $0 "This is just an example. A very simple one." "U" - StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror - ${UnStrCase} $0 "This is just an example. A very simple one." "T" - StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror - ${UnStrCase} $0 "This is just an example. A very simple one." "<>" - StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror - ${UnStrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S" - StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror - ${UnStrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>" - StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror - ${UnStrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S" - StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror - !insertmacro StackVerificationEnd - IfErrors strcaseerror - - DetailPrint "PASSED StrCase test" - Goto +2 -strcaseerror: - DetailPrint "FAILED StrCase test" - - # Test clipboard function - !insertmacro StackVerificationStart - ${UnStrClb} $0 "StrFunc clipboard test" ">" - StrCmp $0 "" 0 strclberror - ${UnStrClb} $0 "StrFunc clipboard test #2" "<>" - StrCmp $0 "StrFunc clipboard test" 0 strclberror - ${UnStrClb} $0 "" "<" - StrCmp $0 "StrFunc clipboard test #2" 0 strclberror - ${UnStrClb} $0 "" "" - StrCmp $0 "" 0 strclberror - !insertmacro StackVerificationEnd - IfErrors strclberror - - DetailPrint "PASSED StrClb test" - Goto +2 -strclberror: - DetailPrint "FAILED StrClb test" - - # Test IO functions - !insertmacro StackVerificationStart - !macro untestio str - ${UnStrNSISToIO} $0 "${str}" - ${UnStrIOToNSIS} $0 $0 - StrCmp $0 "${str}" 0 ioerror - !macroend - !insertmacro untestio "$\rtest$\n" - !insertmacro untestio "test$\n" - !insertmacro untestio "$\rtest" - !insertmacro untestio "test" - !insertmacro untestio "$\r\$\t$\n" - !insertmacro untestio "$\r \ $\t $\n $$" - !insertmacro untestio "" - !insertmacro untestio " " - !insertmacro StackVerificationEnd - IfErrors ioerror - - DetailPrint "PASSED StrNSISToIO/StrIOToNSIS test" - Goto +2 -ioerror: - DetailPrint "FAILED StrNSISToIO/StrIOToNSIS test" - - # Test string search functions - !insertmacro StackVerificationStart - ${UnStrLoc} $0 "This is just an example" "just" "<" - StrCmp $0 "11" 0 strlocerror - ${UnStrLoc} $0 a abc < - StrCmp $0 "" 0 strlocerror - ${UnStrLoc} $0 a abc > - StrCmp $0 "" 0 strlocerror - ${UnStrLoc} $0 abc a > - StrCmp $0 "0" 0 strlocerror - ${UnStrLoc} $0 abc b > - StrCmp $0 "1" 0 strlocerror - ${UnStrLoc} $0 abc c > - StrCmp $0 "2" 0 strlocerror - ${UnStrLoc} $0 abc a < - StrCmp $0 "2" 0 strlocerror - ${UnStrLoc} $0 abc b < - StrCmp $0 "1" 0 strlocerror - ${UnStrLoc} $0 abc c < - StrCmp $0 "0" 0 strlocerror - ${UnStrLoc} $0 abc d < - StrCmp $0 "" 0 strlocerror - !insertmacro StackVerificationEnd - IfErrors strlocerror - - DetailPrint "PASSED StrLoc test" - Goto +2 -strlocerror: - DetailPrint "FAILED StrLoc test" - - # Test string replacement - !insertmacro StackVerificationStart - ${UnStrRep} $0 "This is just an example" "an" "one" - StrCmp $0 "This is just one example" 0 strreperror - ${UnStrRep} $0 "test... test... 1 2 3..." "test" "testing" - StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror - ${UnStrRep} $0 "" "test" "testing" - StrCmp $0 "" 0 strreperror - ${UnStrRep} $0 "test" "test" "testing" - StrCmp $0 "testing" 0 strreperror - ${UnStrRep} $0 "test" "test" "" - StrCmp $0 "" 0 strreperror - ${UnStrRep} $0 "test" "" "abc" - StrCmp $0 "test" 0 strreperror - ${UnStrRep} $0 "test" "" "" - StrCmp $0 "test" 0 strreperror - !insertmacro StackVerificationEnd - IfErrors strreperror - - DetailPrint "PASSED StrRep test" - Goto +2 -strreperror: - DetailPrint "FAILED StrRep test" - - # Test sorting - !insertmacro StackVerificationStart - ${UnStrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0" - StrCmp $0 "This is an exam" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "j" " " "0" "" "0" - StrCmp $0 "just" 0 strsorterror - ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "1" "0" - StrCmp $0 "This is just an example" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "us" "" "0" "1" "0" - StrCmp $0 "just an example" 0 strsorterror - ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "1" "0" - StrCmp $0 "This is just" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "just" " " "0" "1" "0" - StrCmp $0 "just" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "t" " " "0" "1" "0" - StrCmp $0 "This" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "le" " " "0" "1" "0" - StrCmp $0 "example" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "le" " " "1" "0" "0" - StrCmp $0 " examp" 0 strsorterror - ${UnStrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0" - StrCmp $0 "error" 0 strsorterror - ${UnStrSort} $0 "" " " "something" " " "0" "1" "0" - StrCmp $0 "" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "j" " " "" "" "" - StrCmp $0 " just " 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "j" " " "1" "0" "1" - StrCmp $0 " ust " 0 strsorterror - ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "0" "1" - StrCmp $0 "This is ust an example" 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "us" "" "1" "0" "0" - StrCmp $0 " jt an example" 0 strsorterror - ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "0" "1" - StrCmp $0 "This is jst " 0 strsorterror - ${UnStrSort} $0 "This is just an example" " " "just" " " "1" "0" "1" - StrCmp $0 " " 0 strsorterror - ${UnStrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0" - StrCmp $0 " rror " 0 strsorterror - ${UnStrSort} $0 "" " " "something" " " "1" "0" "1" - StrCmp $0 "" 0 strsorterror - !insertmacro StackVerificationEnd - IfErrors strsorterror - - DetailPrint "PASSED StrSort test" - Goto +2 -strsorterror: - DetailPrint "FAILED StrSort test" - - !insertmacro StackVerificationStart - ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "g" - StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror - ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga" - StrCmp $0 "" 0 strstrerror - ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "" - StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror - ${UnStrStr} $0 "a" "abcefghijklmnopqrstuvwxyz" - StrCmp $0 "" 0 strstrerror - !insertmacro StackVerificationEnd - IfErrors strstrerror - - DetailPrint "PASSED StrStr test" - Goto +2 -strstrerror: - DetailPrint "FAILED StrStr test" - - !insertmacro StackVerificationStart - ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0" - StrCmp $0 "abcabcabc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0" - StrCmp $0 "abc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0" - StrCmp $0 "" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0" - StrCmp $0 "abc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0" - StrCmp $0 "abcabcabc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0" - StrCmp $0 "abcabc" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0" - StrCmp $0 "" 0 strstradverror - ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0" - StrCmp $0 "abc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1" - StrCmp $0 "abcabc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1" - StrCmp $0 "abc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1" - StrCmp $0 "" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1" - StrCmp $0 "" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1" - StrCmp $0 "ABCabcabc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1" - StrCmp $0 "ABCabc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1" - StrCmp $0 "ABCabcabc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1" - StrCmp $0 "ABCabc" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1" - StrCmp $0 "" 0 strstradverror - ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1" - StrCmp $0 "abc" 0 strstradverror - !insertmacro StackVerificationEnd - IfErrors strstradverror - - DetailPrint "PASSED StrStrAdv test" - Goto +2 -strstradverror: - DetailPrint "FAILED StrStrAdv test" - - # Test tokenizer - !insertmacro StackVerificationStart - ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "1" - StrCmp $0 "not" 0 strtokerror - ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "0" - StrCmp $0 "is" 0 strtokerror - ${UnStrTok} $0 "This is, or is not, just an example" " ," "152" "0" - StrCmp $0 "" 0 strtokerror - ${UnStrTok} $0 "This is, or is not, just an example" " ," "" "0" - StrCmp $0 "example" 0 strtokerror - ${UnStrTok} $0 "This is, or is not, just an example" " ," "L" "0" - StrCmp $0 "example" 0 strtokerror - ${UnStrTok} $0 "This is, or is not, just an example" " ," "0" "0" - StrCmp $0 "This" 0 strtokerror - !insertmacro StackVerificationEnd - IfErrors strtokerror - - DetailPrint "PASSED StrTok test" - Goto +2 -strtokerror: - DetailPrint "FAILED StrTok test" - - # Test trim new lines - !insertmacro StackVerificationStart - ${UnStrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n" - StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror - !insertmacro StackVerificationEnd - IfErrors strtrimnewlineserror - - DetailPrint "PASSED StrTrimNewLines test" - Goto +2 -strtrimnewlineserror: - DetailPrint "FAILED StrTrimNewLines test" - -SectionEnd +Name "NSIS StrFunc Example"
+OutFile "StrFunc.exe"
+ShowInstDetails show
+ShowUninstDetails show
+XPStyle on
+RequestExecutionLevel user
+
+!include "StrFunc.nsh"
+
+# Declare used functions
+${StrCase}
+${StrClb}
+${StrIOToNSIS}
+${StrLoc}
+${StrNSISToIO}
+${StrRep}
+${StrStr}
+${StrStrAdv}
+${StrTok}
+${StrTrimNewLines}
+${StrSort}
+
+${UnStrCase}
+${UnStrClb}
+${UnStrIOToNSIS}
+${UnStrLoc}
+${UnStrNSISToIO}
+${UnStrRep}
+${UnStrStr}
+${UnStrStrAdv}
+${UnStrTok}
+${UnStrTrimNewLines}
+${UnStrSort}
+
+!macro StackVerificationStart
+ StrCpy $0 S0
+ StrCpy $1 S1
+ StrCpy $2 S2
+ StrCpy $3 S3
+ StrCpy $4 S4
+ StrCpy $5 S5
+ StrCpy $6 S6
+ StrCpy $7 S7
+ StrCpy $8 S8
+ StrCpy $9 S9
+ StrCpy $R0 SR0
+ StrCpy $R1 SR1
+ StrCpy $R2 SR2
+ StrCpy $R3 SR3
+ StrCpy $R4 SR4
+ StrCpy $R5 SR5
+ StrCpy $R6 SR6
+ StrCpy $R7 SR7
+ StrCpy $R8 SR8
+ StrCpy $R9 SR9
+!macroend
+
+!macro StackVerificationEnd
+ ClearErrors
+ ${If} $1 != "S1"
+ ${OrIf} $2 != "S2"
+ ${OrIf} $3 != "S3"
+ ${OrIf} $4 != "S4"
+ ${OrIf} $5 != "S5"
+ ${OrIf} $6 != "S6"
+ ${OrIf} $7 != "S7"
+ ${OrIf} $8 != "S8"
+ ${OrIf} $9 != "S9"
+ ${OrIf} $R0 != "SR0"
+ ${OrIf} $R1 != "SR1"
+ ${OrIf} $R2 != "SR2"
+ ${OrIf} $R3 != "SR3"
+ ${OrIf} $R4 != "SR4"
+ ${OrIf} $R5 != "SR5"
+ ${OrIf} $R6 != "SR6"
+ ${OrIf} $R7 != "SR7"
+ ${OrIf} $R8 != "SR8"
+ ${OrIf} $R9 != "SR9"
+ SetErrors
+ ${EndIf}
+!macroend
+
+Section
+
+ # Test case conversion
+ !insertmacro StackVerificationStart
+ ${StrCase} $0 "This is just an example. A very simple one." ""
+ StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror
+ ${StrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S"
+ StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror
+ ${StrCase} $0 "This is just an example. A very simple one." "L"
+ StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror
+ ${StrCase} $0 "This is just an example. A very simple one." "U"
+ StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror
+ ${StrCase} $0 "This is just an example. A very simple one." "T"
+ StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror
+ ${StrCase} $0 "This is just an example. A very simple one." "<>"
+ StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror
+ ${StrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S"
+ StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror
+ ${StrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>"
+ StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror
+ ${StrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S"
+ StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror
+ !insertmacro StackVerificationEnd
+ IfErrors strcaseerror
+
+ DetailPrint "PASSED StrCase test"
+ Goto +2
+strcaseerror:
+ DetailPrint "FAILED StrCase test"
+
+ # Test clipboard function
+ !insertmacro StackVerificationStart
+ ${StrClb} $0 "StrFunc clipboard test" ">"
+ StrCmp $0 "" 0 strclberror
+ ${StrClb} $0 "StrFunc clipboard test #2" "<>"
+ StrCmp $0 "StrFunc clipboard test" 0 strclberror
+ ${StrClb} $0 "" "<"
+ StrCmp $0 "StrFunc clipboard test #2" 0 strclberror
+ ${StrClb} $0 "" ""
+ StrCmp $0 "" 0 strclberror
+ !insertmacro StackVerificationEnd
+ IfErrors strclberror
+
+ DetailPrint "PASSED StrClb test"
+ Goto +2
+strclberror:
+ DetailPrint "FAILED StrClb test"
+
+ # Test IO functions
+ !insertmacro StackVerificationStart
+ !macro testio str
+ ${StrNSISToIO} $0 "${str}"
+ ${StrIOToNSIS} $0 $0
+ StrCmp $0 "${str}" 0 ioerror
+ !macroend
+ !insertmacro testio "$\rtest$\n"
+ !insertmacro testio "test$\n"
+ !insertmacro testio "$\rtest"
+ !insertmacro testio "test"
+ !insertmacro testio "$\r\$\t$\n"
+ !insertmacro testio "$\r \ $\t $\n $$"
+ !insertmacro testio ""
+ !insertmacro testio " "
+ !insertmacro StackVerificationEnd
+ IfErrors ioerror
+
+ DetailPrint "PASSED StrNSISToIO/StrIOToNSIS test"
+ Goto +2
+ioerror:
+ DetailPrint "FAILED StrNSISToIO/StrIOToNSIS test"
+
+ # Test string search functions
+ !insertmacro StackVerificationStart
+ ${StrLoc} $0 "This is just an example" "just" "<"
+ StrCmp $0 "11" 0 strlocerror
+ ${StrLoc} $0 a abc <
+ StrCmp $0 "" 0 strlocerror
+ ${StrLoc} $0 a abc >
+ StrCmp $0 "" 0 strlocerror
+ ${StrLoc} $0 abc a >
+ StrCmp $0 "0" 0 strlocerror
+ ${StrLoc} $0 abc b >
+ StrCmp $0 "1" 0 strlocerror
+ ${StrLoc} $0 abc c >
+ StrCmp $0 "2" 0 strlocerror
+ ${StrLoc} $0 abc a <
+ StrCmp $0 "2" 0 strlocerror
+ ${StrLoc} $0 abc b <
+ StrCmp $0 "1" 0 strlocerror
+ ${StrLoc} $0 abc c <
+ StrCmp $0 "0" 0 strlocerror
+ ${StrLoc} $0 abc d <
+ StrCmp $0 "" 0 strlocerror
+ !insertmacro StackVerificationEnd
+ IfErrors strlocerror
+
+ DetailPrint "PASSED StrLoc test"
+ Goto +2
+strlocerror:
+ DetailPrint "FAILED StrLoc test"
+
+ # Test string replacement
+ !insertmacro StackVerificationStart
+ ${StrRep} $0 "This is just an example" "an" "one"
+ StrCmp $0 "This is just one example" 0 strreperror
+ ${StrRep} $0 "test... test... 1 2 3..." "test" "testing"
+ StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror
+ ${StrRep} $0 "" "test" "testing"
+ StrCmp $0 "" 0 strreperror
+ ${StrRep} $0 "test" "test" "testing"
+ StrCmp $0 "testing" 0 strreperror
+ ${StrRep} $0 "test" "test" ""
+ StrCmp $0 "" 0 strreperror
+ ${StrRep} $0 "test" "" "abc"
+ StrCmp $0 "test" 0 strreperror
+ ${StrRep} $0 "test" "" ""
+ StrCmp $0 "test" 0 strreperror
+ !insertmacro StackVerificationEnd
+ IfErrors strreperror
+
+ DetailPrint "PASSED StrRep test"
+ Goto +2
+strreperror:
+ DetailPrint "FAILED StrRep test"
+
+ # Test sorting
+ !insertmacro StackVerificationStart
+ ${StrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0"
+ StrCmp $0 "This is an exam" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "j" " " "0" "" "0"
+ StrCmp $0 "just" 0 strsorterror
+ ${StrSort} $0 "This is just an example" "" "j" "" "0" "1" "0"
+ StrCmp $0 "This is just an example" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "us" "" "0" "1" "0"
+ StrCmp $0 "just an example" 0 strsorterror
+ ${StrSort} $0 "This is just an example" "" "u" " " "0" "1" "0"
+ StrCmp $0 "This is just" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "just" " " "0" "1" "0"
+ StrCmp $0 "just" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "t" " " "0" "1" "0"
+ StrCmp $0 "This" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "le" " " "0" "1" "0"
+ StrCmp $0 "example" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "le" " " "1" "0" "0"
+ StrCmp $0 " examp" 0 strsorterror
+ ${StrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0"
+ StrCmp $0 "error" 0 strsorterror
+ ${StrSort} $0 "" " " "something" " " "0" "1" "0"
+ StrCmp $0 "" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "j" " " "" "" ""
+ StrCmp $0 " just " 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "j" " " "1" "0" "1"
+ StrCmp $0 " ust " 0 strsorterror
+ ${StrSort} $0 "This is just an example" "" "j" "" "0" "0" "1"
+ StrCmp $0 "This is ust an example" 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "us" "" "1" "0" "0"
+ StrCmp $0 " jt an example" 0 strsorterror
+ ${StrSort} $0 "This is just an example" "" "u" " " "0" "0" "1"
+ StrCmp $0 "This is jst " 0 strsorterror
+ ${StrSort} $0 "This is just an example" " " "just" " " "1" "0" "1"
+ StrCmp $0 " " 0 strsorterror
+ ${StrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0"
+ StrCmp $0 " rror " 0 strsorterror
+ ${StrSort} $0 "" " " "something" " " "1" "0" "1"
+ StrCmp $0 "" 0 strsorterror
+ !insertmacro StackVerificationEnd
+ IfErrors strsorterror
+
+ DetailPrint "PASSED StrSort test"
+ Goto +2
+strsorterror:
+ DetailPrint "FAILED StrSort test"
+
+ !insertmacro StackVerificationStart
+ ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "g"
+ StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror
+ ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga"
+ StrCmp $0 "" 0 strstrerror
+ ${StrStr} $0 "abcefghijklmnopqrstuvwxyz" ""
+ StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror
+ ${StrStr} $0 "a" "abcefghijklmnopqrstuvwxyz"
+ StrCmp $0 "" 0 strstrerror
+ !insertmacro StackVerificationEnd
+ IfErrors strstrerror
+
+ DetailPrint "PASSED StrStr test"
+ Goto +2
+strstrerror:
+ DetailPrint "FAILED StrStr test"
+
+ !insertmacro StackVerificationStart
+ ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0"
+ StrCmp $0 "abcabcabc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0"
+ StrCmp $0 "" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0"
+ StrCmp $0 "abcabcabc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0"
+ StrCmp $0 "" 0 strstradverror
+ ${StrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1"
+ StrCmp $0 "abc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1"
+ StrCmp $0 "ABCabcabc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1"
+ StrCmp $0 "ABCabc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1"
+ StrCmp $0 "ABCabcabc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1"
+ StrCmp $0 "ABCabc" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${StrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1"
+ StrCmp $0 "abc" 0 strstradverror
+ !insertmacro StackVerificationEnd
+ IfErrors strstradverror
+
+ DetailPrint "PASSED StrStrAdv test"
+ Goto +2
+strstradverror:
+ DetailPrint "FAILED StrStrAdv test"
+
+ # Test tokenizer
+ !insertmacro StackVerificationStart
+ ${StrTok} $0 "This is, or is not, just an example" " ," "4" "1"
+ StrCmp $0 "not" 0 strtokerror
+ ${StrTok} $0 "This is, or is not, just an example" " ," "4" "0"
+ StrCmp $0 "is" 0 strtokerror
+ ${StrTok} $0 "This is, or is not, just an example" " ," "152" "0"
+ StrCmp $0 "" 0 strtokerror
+ ${StrTok} $0 "This is, or is not, just an example" " ," "" "0"
+ StrCmp $0 "example" 0 strtokerror
+ ${StrTok} $0 "This is, or is not, just an example" " ," "L" "0"
+ StrCmp $0 "example" 0 strtokerror
+ ${StrTok} $0 "This is, or is not, just an example" " ," "0" "0"
+ StrCmp $0 "This" 0 strtokerror
+ !insertmacro StackVerificationEnd
+ IfErrors strtokerror
+
+ DetailPrint "PASSED StrTok test"
+ Goto +2
+strtokerror:
+ DetailPrint "FAILED StrTok test"
+
+ # Test trim new lines
+ !insertmacro StackVerificationStart
+ ${StrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n"
+ StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror
+ !insertmacro StackVerificationEnd
+ IfErrors strtrimnewlineserror
+
+ DetailPrint "PASSED StrTrimNewLines test"
+ Goto +2
+strtrimnewlineserror:
+ DetailPrint "FAILED StrTrimNewLines test"
+
+ WriteUninstaller $EXEDIR\UnStrFunc.exe
+
+ Exec $EXEDIR\UnStrFunc.exe
+
+SectionEnd
+
+Section Uninstall
+
+ # Test case conversion
+ !insertmacro StackVerificationStart
+ ${UnStrCase} $0 "This is just an example. A very simple one." ""
+ StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror
+ ${UnStrCase} $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." "S"
+ StrCmp $0 "This is just an example. A very simple one." 0 strcaseerror
+ ${UnStrCase} $0 "This is just an example. A very simple one." "L"
+ StrCmp $0 "this is just an example. a very simple one." 0 strcaseerror
+ ${UnStrCase} $0 "This is just an example. A very simple one." "U"
+ StrCmp $0 "THIS IS JUST AN EXAMPLE. A VERY SIMPLE ONE." 0 strcaseerror
+ ${UnStrCase} $0 "This is just an example. A very simple one." "T"
+ StrCmp $0 "This Is Just An Example. A Very Simple One." 0 strcaseerror
+ ${UnStrCase} $0 "This is just an example. A very simple one." "<>"
+ StrCmp $0 "tHIS IS JUST AN EXAMPLE. a VERY SIMPLE ONE." 0 strcaseerror
+ ${UnStrCase} $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" "S"
+ StrCmp $0 "123456789!@#%^&*()-_=+[]{};:,./<>?" 0 strcaseerror
+ ${UnStrCase} $0 "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ!@#%^&*()abcdefghijklmnopqrstuvwxyz-_=+[]{};:,./<>?" "<>"
+ StrCmp $0 "123456789abcdefghijklmnopqrstuvwxyz!@#%^&*()ABCDEFGHIJKLMNOPQRSTUVWXYZ-_=+[]{};:,./<>?" 0 strcaseerror
+ ${UnStrCase} $0 "what about taking a shower tomorrow? it's late to do so now! try to sleep now. Good Night!" "S"
+ StrCmp $0 "What about taking a shower tomorrow? It's late to do so now! Try to sleep now. Good night!" 0 strcaseerror
+ !insertmacro StackVerificationEnd
+ IfErrors strcaseerror
+
+ DetailPrint "PASSED StrCase test"
+ Goto +2
+strcaseerror:
+ DetailPrint "FAILED StrCase test"
+
+ # Test clipboard function
+ !insertmacro StackVerificationStart
+ ${UnStrClb} $0 "StrFunc clipboard test" ">"
+ StrCmp $0 "" 0 strclberror
+ ${UnStrClb} $0 "StrFunc clipboard test #2" "<>"
+ StrCmp $0 "StrFunc clipboard test" 0 strclberror
+ ${UnStrClb} $0 "" "<"
+ StrCmp $0 "StrFunc clipboard test #2" 0 strclberror
+ ${UnStrClb} $0 "" ""
+ StrCmp $0 "" 0 strclberror
+ !insertmacro StackVerificationEnd
+ IfErrors strclberror
+
+ DetailPrint "PASSED StrClb test"
+ Goto +2
+strclberror:
+ DetailPrint "FAILED StrClb test"
+
+ # Test IO functions
+ !insertmacro StackVerificationStart
+ !macro untestio str
+ ${UnStrNSISToIO} $0 "${str}"
+ ${UnStrIOToNSIS} $0 $0
+ StrCmp $0 "${str}" 0 ioerror
+ !macroend
+ !insertmacro untestio "$\rtest$\n"
+ !insertmacro untestio "test$\n"
+ !insertmacro untestio "$\rtest"
+ !insertmacro untestio "test"
+ !insertmacro untestio "$\r\$\t$\n"
+ !insertmacro untestio "$\r \ $\t $\n $$"
+ !insertmacro untestio ""
+ !insertmacro untestio " "
+ !insertmacro StackVerificationEnd
+ IfErrors ioerror
+
+ DetailPrint "PASSED StrNSISToIO/StrIOToNSIS test"
+ Goto +2
+ioerror:
+ DetailPrint "FAILED StrNSISToIO/StrIOToNSIS test"
+
+ # Test string search functions
+ !insertmacro StackVerificationStart
+ ${UnStrLoc} $0 "This is just an example" "just" "<"
+ StrCmp $0 "11" 0 strlocerror
+ ${UnStrLoc} $0 a abc <
+ StrCmp $0 "" 0 strlocerror
+ ${UnStrLoc} $0 a abc >
+ StrCmp $0 "" 0 strlocerror
+ ${UnStrLoc} $0 abc a >
+ StrCmp $0 "0" 0 strlocerror
+ ${UnStrLoc} $0 abc b >
+ StrCmp $0 "1" 0 strlocerror
+ ${UnStrLoc} $0 abc c >
+ StrCmp $0 "2" 0 strlocerror
+ ${UnStrLoc} $0 abc a <
+ StrCmp $0 "2" 0 strlocerror
+ ${UnStrLoc} $0 abc b <
+ StrCmp $0 "1" 0 strlocerror
+ ${UnStrLoc} $0 abc c <
+ StrCmp $0 "0" 0 strlocerror
+ ${UnStrLoc} $0 abc d <
+ StrCmp $0 "" 0 strlocerror
+ !insertmacro StackVerificationEnd
+ IfErrors strlocerror
+
+ DetailPrint "PASSED StrLoc test"
+ Goto +2
+strlocerror:
+ DetailPrint "FAILED StrLoc test"
+
+ # Test string replacement
+ !insertmacro StackVerificationStart
+ ${UnStrRep} $0 "This is just an example" "an" "one"
+ StrCmp $0 "This is just one example" 0 strreperror
+ ${UnStrRep} $0 "test... test... 1 2 3..." "test" "testing"
+ StrCmp $0 "testing... testing... 1 2 3..." 0 strreperror
+ ${UnStrRep} $0 "" "test" "testing"
+ StrCmp $0 "" 0 strreperror
+ ${UnStrRep} $0 "test" "test" "testing"
+ StrCmp $0 "testing" 0 strreperror
+ ${UnStrRep} $0 "test" "test" ""
+ StrCmp $0 "" 0 strreperror
+ ${UnStrRep} $0 "test" "" "abc"
+ StrCmp $0 "test" 0 strreperror
+ ${UnStrRep} $0 "test" "" ""
+ StrCmp $0 "test" 0 strreperror
+ !insertmacro StackVerificationEnd
+ IfErrors strreperror
+
+ DetailPrint "PASSED StrRep test"
+ Goto +2
+strreperror:
+ DetailPrint "FAILED StrRep test"
+
+ # Test sorting
+ !insertmacro StackVerificationStart
+ ${UnStrSort} $0 "This is just an example" "" " just" "ple" "0" "0" "0"
+ StrCmp $0 "This is an exam" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "j" " " "0" "" "0"
+ StrCmp $0 "just" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "1" "0"
+ StrCmp $0 "This is just an example" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "us" "" "0" "1" "0"
+ StrCmp $0 "just an example" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "1" "0"
+ StrCmp $0 "This is just" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "just" " " "0" "1" "0"
+ StrCmp $0 "just" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "t" " " "0" "1" "0"
+ StrCmp $0 "This" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "le" " " "0" "1" "0"
+ StrCmp $0 "example" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "le" " " "1" "0" "0"
+ StrCmp $0 " examp" 0 strsorterror
+ ${UnStrSort} $0 "an error has occurred" " " "e" " " "0" "1" "0"
+ StrCmp $0 "error" 0 strsorterror
+ ${UnStrSort} $0 "" " " "something" " " "0" "1" "0"
+ StrCmp $0 "" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "j" " " "" "" ""
+ StrCmp $0 " just " 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "j" " " "1" "0" "1"
+ StrCmp $0 " ust " 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" "" "j" "" "0" "0" "1"
+ StrCmp $0 "This is ust an example" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "us" "" "1" "0" "0"
+ StrCmp $0 " jt an example" 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" "" "u" " " "0" "0" "1"
+ StrCmp $0 "This is jst " 0 strsorterror
+ ${UnStrSort} $0 "This is just an example" " " "just" " " "1" "0" "1"
+ StrCmp $0 " " 0 strsorterror
+ ${UnStrSort} $0 "an error has occurred" " " "e" "h" "1" "0" "0"
+ StrCmp $0 " rror " 0 strsorterror
+ ${UnStrSort} $0 "" " " "something" " " "1" "0" "1"
+ StrCmp $0 "" 0 strsorterror
+ !insertmacro StackVerificationEnd
+ IfErrors strsorterror
+
+ DetailPrint "PASSED StrSort test"
+ Goto +2
+strsorterror:
+ DetailPrint "FAILED StrSort test"
+
+ !insertmacro StackVerificationStart
+ ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "g"
+ StrCmp $0 "ghijklmnopqrstuvwxyz" 0 strstrerror
+ ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" "ga"
+ StrCmp $0 "" 0 strstrerror
+ ${UnStrStr} $0 "abcefghijklmnopqrstuvwxyz" ""
+ StrCmp $0 "abcefghijklmnopqrstuvwxyz" 0 strstrerror
+ ${UnStrStr} $0 "a" "abcefghijklmnopqrstuvwxyz"
+ StrCmp $0 "" 0 strstrerror
+ !insertmacro StackVerificationEnd
+ IfErrors strstrerror
+
+ DetailPrint "PASSED StrStr test"
+ Goto +2
+strstrerror:
+ DetailPrint "FAILED StrStr test"
+
+ !insertmacro StackVerificationStart
+ ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "0" "0"
+ StrCmp $0 "abcabcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "1" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "2" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "a" ">" ">" "1" "3" "0"
+ StrCmp $0 "" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "1" "1" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" ">" "<" "0" "1" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "1" "0" "0"
+ StrCmp $0 "abcabcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" "<" "0" "0" "0"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "0" "0"
+ StrCmp $0 "" 0 strstradverror
+ ${UnStrStrAdv} $0 "abcabcabc" "abc" "<" ">" "0" "1" "0"
+ StrCmp $0 "abc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "0" "1"
+ StrCmp $0 "abcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "1" "1"
+ StrCmp $0 "abc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "2" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "a" ">" ">" "1" "3" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "1" "1" "1"
+ StrCmp $0 "ABCabcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" ">" "<" "0" "1" "1"
+ StrCmp $0 "ABCabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "1" "0" "1"
+ StrCmp $0 "ABCabcabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" "<" "0" "0" "1"
+ StrCmp $0 "ABCabc" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "0" "1"
+ StrCmp $0 "" 0 strstradverror
+ ${UnStrStrAdv} $0 "ABCabcabc" "abc" "<" ">" "0" "1" "1"
+ StrCmp $0 "abc" 0 strstradverror
+ !insertmacro StackVerificationEnd
+ IfErrors strstradverror
+
+ DetailPrint "PASSED StrStrAdv test"
+ Goto +2
+strstradverror:
+ DetailPrint "FAILED StrStrAdv test"
+
+ # Test tokenizer
+ !insertmacro StackVerificationStart
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "1"
+ StrCmp $0 "not" 0 strtokerror
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "4" "0"
+ StrCmp $0 "is" 0 strtokerror
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "152" "0"
+ StrCmp $0 "" 0 strtokerror
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "" "0"
+ StrCmp $0 "example" 0 strtokerror
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "L" "0"
+ StrCmp $0 "example" 0 strtokerror
+ ${UnStrTok} $0 "This is, or is not, just an example" " ," "0" "0"
+ StrCmp $0 "This" 0 strtokerror
+ !insertmacro StackVerificationEnd
+ IfErrors strtokerror
+
+ DetailPrint "PASSED StrTok test"
+ Goto +2
+strtokerror:
+ DetailPrint "FAILED StrTok test"
+
+ # Test trim new lines
+ !insertmacro StackVerificationStart
+ ${UnStrTrimNewLines} $0 "$\r$\ntest$\r$\ntest$\r$\n"
+ StrCmp $0 "$\r$\ntest$\r$\ntest" 0 strtrimnewlineserror
+ !insertmacro StackVerificationEnd
+ IfErrors strtrimnewlineserror
+
+ DetailPrint "PASSED StrTrimNewLines test"
+ Goto +2
+strtrimnewlineserror:
+ DetailPrint "FAILED StrTrimNewLines test"
+
+SectionEnd
|