summaryrefslogtreecommitdiff
path: root/Examples/StrFunc.nsi
diff options
context:
space:
mode:
authorDidier Raboud <odyx@debian.org>2018-03-31 20:38:20 +0200
committerDidier Raboud <odyx@debian.org>2018-03-31 20:38:20 +0200
commit81a12327d1fddfa9876df852c024f93f7b83a48e (patch)
tree72d38bea65b9a1daff5914f279604071e35efe45 /Examples/StrFunc.nsi
parent4ae33bb6c5bdcdf4304ba4c205458adb019d4b78 (diff)
Import Upstream version 2.35
Diffstat (limited to 'Examples/StrFunc.nsi')
-rwxr-xr-xExamples/StrFunc.nsi1269
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