123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414 |
- ;_____________________________________________________________________________
- ;
- ; Text Functions Test
- ;_____________________________________________________________________________
- ;
- ; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
- Name "Text Functions Test"
- OutFile "TextFuncTest.exe"
- Caption "$(^Name)"
- ShowInstDetails show
- XPStyle on
- RequestExecutionLevel user
- Var FUNCTION
- Var TEMPFILE1
- Var TEMPFILE2
- Var TEMPFILE3
- Var HANDLE
- Var OUT
- !include "TextFunc.nsh"
- ;############### INSTALL ###############
- !define StackVerificationStart `!insertmacro StackVerificationStart`
- !macro StackVerificationStart _FUNCTION
- StrCpy $FUNCTION ${_FUNCTION}
- Call StackVerificationStart
- !macroend
- !define StackVerificationEnd `!insertmacro StackVerificationEnd`
- !macro StackVerificationEnd
- Call StackVerificationEnd
- !macroend
- Function StackVerificationStart
- StrCpy $0 !0
- StrCpy $1 !1
- StrCpy $2 !2
- StrCpy $3 !3
- StrCpy $4 !4
- StrCpy $5 !5
- StrCpy $6 !6
- StrCpy $7 !7
- StrCpy $8 !8
- StrCpy $9 !9
- StrCpy $R0 !R0
- StrCpy $R1 !R1
- StrCpy $R2 !R2
- StrCpy $R3 !R3
- StrCpy $R4 !R4
- StrCpy $R5 !R5
- StrCpy $R6 !R6
- StrCpy $R7 !R7
- StrCpy $R8 !R8
- StrCpy $R9 !R9
- FunctionEnd
- Function StackVerificationEnd
- IfErrors +3
- DetailPrint 'PASSED $FUNCTION no errors'
- goto +2
- DetailPrint 'FAILED $FUNCTION error'
- StrCmp $0 '!0' 0 error
- StrCmp $1 '!1' 0 error
- StrCmp $2 '!2' 0 error
- StrCmp $3 '!3' 0 error
- StrCmp $4 '!4' 0 error
- StrCmp $5 '!5' 0 error
- StrCmp $6 '!6' 0 error
- StrCmp $7 '!7' 0 error
- StrCmp $8 '!8' 0 error
- StrCmp $9 '!9' 0 error
- StrCmp $R0 '!R0' 0 error
- StrCmp $R1 '!R1' 0 error
- StrCmp $R2 '!R2' 0 error
- StrCmp $R3 '!R3' 0 error
- StrCmp $R4 '!R4' 0 error
- StrCmp $R5 '!R5' 0 error
- StrCmp $R6 '!R6' 0 error
- StrCmp $R7 '!R7' 0 error
- StrCmp $R8 '!R8' 0 error
- StrCmp $R9 '!R9' 0 error
- DetailPrint 'PASSED $FUNCTION stack'
- goto end
- error:
- DetailPrint 'FAILED $FUNCTION stack'
- ; MessageBox MB_OKCANCEL '$$0={$0}$\n$$1={$1}$\n$$2={$2}$\n$$3={$3}$\n$$4={$4}$\n$$5={$5}$\n$$6={$6}$\n$$7={$7}$\n$$8={$8}$\n$$9={$9}$\n$$R0={$R0}$\n$$R1={$R1}$\n$$R2={$R2}$\n$$R3={$R3}$\n$$R4={$R4}$\n$$R5={$R5}$\n$$R6={$R6}$\n$$R7={$R7}$\n$$R8={$R8}$\n$$R9={$R9}' IDOK +2
- ; quit
- end:
- FunctionEnd
- Section CreateTestFile
- GetTempFileName $TEMPFILE1
- FileOpen $HANDLE $TEMPFILE1 w
- FileWrite $HANDLE '1A=a$\r$\n'
- FileWrite $HANDLE '2B=b$\r$\n'
- FileWrite $HANDLE '3C=c$\r$\n'
- FileWrite $HANDLE '4D=d$\r$\n'
- FileWrite $HANDLE '5E=e$\r$\n'
- FileClose $HANDLE
- GetTempFileName $TEMPFILE2
- GetTempFileName $TEMPFILE3
- SectionEnd
- Section LineFind
- ${StackVerificationStart} LineFind
- ${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1'
- IfErrors error
- StrCmp $OUT '|1:2|-5|1|1A=a$\r$\n|1:2|-4|2|2B=b$\r$\n|3:3|-3|3|3C=c$\r$\n' 0 error
- StrCpy $OUT ''
- SetDetailsPrint none
- ${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2'
- SetDetailsPrint both
- IfErrors error
- StrCmp $OUT '|1:-1||1|1A=a$\r$\n|1:-1||2|4D=d$\r$\n|1:-1||3|3C=c$\r$\n|1:-1||4|2B=B$\r$\n|1:-1||5|5E=e$\r$\n' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Function LineFindCallback1
- StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
- StrCmp $R8 3 0 +2
- StrCpy $0 StopLineFind
- Push $0
- FunctionEnd
- Function LineFindCallback2
- StrCmp $R8 2 0 +2
- StrCpy $R9 '4D=d$\r$\n'
- StrCmp $R8 4 0 +2
- StrCpy $R9 '2B=B$\r$\n'
- StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
- Push $0
- FunctionEnd
- Section LineRead
- ${StackVerificationStart} LineRead
- ${LineRead} '$TEMPFILE1' '-1' $OUT
- IfErrors error
- StrCmp $OUT '5E=e$\r$\n' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section FileReadFromEnd
- ${StackVerificationStart} FileReadFromEnd
- StrCpy $OUT ''
- ${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback'
- IfErrors error
- StrCmp $OUT '|-1|5|5E=e$\r$\n|-2|4|4D=d$\r$\n|-3|3|3C=c$\r$\n|-4|2|2B=b$\r$\n' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Function FileReadFromEndCallback
- StrCpy $OUT '$OUT|$7|$8|$9'
- StrCmp $8 2 0 +2
- StrCpy $0 StopFileReadFromEnd
- Push $0
- FunctionEnd
- Section LineSum
- ${StackVerificationStart} LineSum
- ${LineSum} '$TEMPFILE1' $OUT
- IfErrors error
- StrCmp $OUT '5' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section FileJoin
- ${StackVerificationStart} FileJoin
- SetDetailsPrint none
- ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
- SetDetailsPrint both
- ${StackVerificationEnd}
- SectionEnd
- Section TextCompare
- ${StackVerificationStart} TextCompare
- StrCpy $OUT ''
- ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback'
- StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error
- StrCpy $OUT ''
- ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback'
- StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
- StrCpy $OUT ''
- ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
- StrCmp $OUT '' 0 error
- StrCpy $OUT ''
- ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
- StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|4|2B=B$\r$\n|2|2B=b$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section TextCompareS
- ${StackVerificationStart} TextCompareS
- StrCpy $OUT ''
- ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
- StrCmp $OUT '|||2|2B=b$\r$\n' 0 error
- StrCpy $OUT ''
- ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
- StrCmp $OUT '|1|1A=a$\r$\n|1|1A=a$\r$\n|3|3C=c$\r$\n|3|3C=c$\r$\n|2|4D=d$\r$\n|4|4D=d$\r$\n|5|5E=e$\r$\n|5|5E=e$\r$\n' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Function TextCompareCallback
- StrCpy $OUT '$OUT|$6|$7|$8|$9'
- Push $0
- FunctionEnd
- Section ConfigRead
- ${StackVerificationStart} ConfigRead
- ${ConfigRead} '$TEMPFILE1' '3c=' $OUT
- StrCmp $OUT 'c' 0 error
- ${ConfigRead} '$TEMPFILE1' '6F=' $OUT
- StrCmp $OUT '' 0 error
- ${ConfigRead} '$TEMPFILE1' 'FF=' $OUT
- IfErrors 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section ConfigReadS
- ${StackVerificationStart} ConfigReadS
- ${ConfigReadS} '$TEMPFILE1' '3C=' $OUT
- StrCmp $OUT 'c' 0 error
- ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
- IfErrors 0 error
- StrCmp $OUT '' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section ConfigWrite
- ${StackVerificationStart} ConfigWrite
- ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
- StrCmp $OUT 'CHANGED' 0 error
- ${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT
- StrCmp $OUT 'DELETED' 0 error
- ${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT
- StrCmp $OUT 'SAME' 0 error
- ${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT
- StrCmp $OUT 'ADDED' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section ConfigWriteS
- ${StackVerificationStart} ConfigWriteS
- ${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT
- StrCmp $OUT 'ADDED' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section FileRecode
- ${StackVerificationStart} FileRecode
- ${FileRecode} '$TEMPFILE1' 'CharToOem'
- ${StackVerificationEnd}
- SectionEnd
- Section TrimNewLines
- ${StackVerificationStart} TrimNewLines
- ${TrimNewLines} 'Text Line$\r$\n' $OUT
- StrCmp $OUT 'Text Line' 0 error
- ${TrimNewLines} 'Text Line' $OUT
- StrCmp $OUT 'Text Line' 0 error
- ${TrimNewLines} 'Text Line$\n' $OUT
- StrCmp $OUT 'Text Line' 0 error
- goto +2
- error:
- SetErrors
- ${StackVerificationEnd}
- SectionEnd
- Section WriteUninstaller
- SetDetailsPrint none
- Delete $TEMPFILE1
- Delete $TEMPFILE2
- Delete $TEMPFILE3
- SetDetailsPrint both
- goto +2
- WriteUninstaller '$EXEDIR\un.TextFuncTest.exe'
- SectionEnd
- ;############### UNINSTALL ###############
- Section un.Uninstall
- ${LineFind} '$TEMPFILE1' '/NUL' '1:-1' 'un.LineFindCallback'
- ${LineRead} '$TEMPFILE1' '-1' $OUT
- ${FileReadFromEnd} '$TEMPFILE1' 'un.FileReadFromEndCallback'
- ${LineSum} '$TEMPFILE1' $OUT
- ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
- ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
- ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
- ${ConfigRead} '$TEMPFILE1' '3c=' $OUT
- ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
- ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
- ${ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT
- ${FileRecode} '$TEMPFILE1' 'CharToOem'
- ${TrimNewLines} 'Text Line$\r$\n' $OUT
- SectionEnd
- Function un.LineFindCallback
- Push $0
- FunctionEnd
- Function un.FileReadFromEndCallback
- Push $0
- FunctionEnd
- Function un.TextCompareCallback
- Push $0
- FunctionEnd
|