;_____________________________________________________________________________
;
;                          Word Functions Test
;_____________________________________________________________________________
;
; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)

Name "Word Functions Test"
OutFile "WordFuncTest.exe"
Caption "$(^Name)"
ShowInstDetails show
XPStyle on
RequestExecutionLevel user

Var FUNCTION
Var OUT

!include "WordFunc.nsh"

!insertmacro WordFind
!insertmacro WordFindS
!insertmacro WordFind2X
!insertmacro WordFind2XS
!insertmacro WordFind3X
!insertmacro WordFind3XS
!insertmacro WordReplace
!insertmacro WordReplaceS
!insertmacro WordAdd
!insertmacro WordAddS
!insertmacro WordInsert
!insertmacro WordInsertS
!insertmacro StrFilter
!insertmacro StrFilterS
!insertmacro VersionCompare
!insertmacro VersionConvert

!insertmacro un.WordFind
!insertmacro un.WordFindS
!insertmacro un.WordFind2X
!insertmacro un.WordFind2XS
!insertmacro un.WordFind3X
!insertmacro un.WordFind3XS
!insertmacro un.WordReplace
!insertmacro un.WordReplaceS
!insertmacro un.WordAdd
!insertmacro un.WordAddS
!insertmacro un.WordInsert
!insertmacro un.WordInsertS
!insertmacro un.StrFilter
!insertmacro un.StrFilterS
!insertmacro un.VersionCompare
!insertmacro un.VersionConvert



;############### 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 WordFind
	${StackVerificationStart} WordFind

	${WordFind} '||io.sys|||Program Files|||WINDOWS' '||' '-02' $OUT
	StrCmp $OUT '|Program Files' 0 error

	${WordFind} '||io.sys||||Program Files||||WINDOWS' '||' '-2' $OUT
	StrCmp $OUT 'Program Files' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '-2}' $OUT
	StrCmp $OUT '|logo.sys|||WINDOWS' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '#' $OUT
	StrCmp $OUT '3' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '*' $OUT
	StrCmp $OUT '2' 0 error

	${WordFind} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
	StrCmp $OUT '2' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2}}' $OUT
	StrCmp $OUT '|||WINDOWS' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2{}' $OUT
	StrCmp $OUT 'C:\io.sys|||WINDOWS' 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||WINDOWS' '||' '+2*}' $OUT
	StrCmp $OUT '|logo.sys|||WINDOWS' 0 error

	${WordFind} 'C:\\Program Files\\NSIS\\NSIS.chm' '\' '-2{*' $OUT
	StrCmp $OUT 'C:\\Program Files\\NSIS' 0 error

	${WordFind} 'C:\io.sys|||Program Files|||WINDOWS|||' '||' '-1' $OUT
	StrCmp $OUT '|' 0 error

	${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '-1}' $OUT
	StrCmp $OUT '' 0 error

	${WordFind} '||C:\io.sys|||logo.sys|||WINDOWS||' '||' '+1{' $OUT
	StrCmp $OUT '' 0 error

	${WordFind} 'C:\io.sys|||logo.sys' '_' 'E+1' $OUT
	IfErrors 0 error
	StrCmp $OUT 1 0 error

	${WordFind} 'C:\io.sys|||logo.sys|||' '\' 'E+3' $OUT
	IfErrors 0 error
	StrCmp $OUT 2 0 error

	${WordFind} 'C:\io.sys|||logo.sys' '\' 'E1' $OUT
	IfErrors 0 error
	StrCmp $OUT 3 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordFindS
	${StackVerificationStart} WordFindS

	${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|PROGRAM FILES' $OUT
	StrCmp $OUT 'C:\io.sys|||Program Files|||WINDOWS' 0 error

	${WordFindS} 'C:\io.sys|||Program Files|||WINDOWS' '||' '/|Program Files' $OUT
	StrCmp $OUT '2' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordFind2X
	${StackVerificationStart} WordFind2X

	${WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
	StrCmp $OUT 'logo.sys' 0 error

	${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1' $OUT
	StrCmp $OUT 'logo' 0 error

	${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{{' $OUT
	StrCmp $OUT 'C:\WINDOWS C:\io.sys C:' 0 error

	${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{}' $OUT
	StrCmp $OUT 'C:\WINDOWS C:\io.sys C:sys' 0 error

	${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '-1{*' $OUT
	StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.' 0 error

	${WordFind2X} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
	StrCmp $OUT '2' 0 error

	${WordFind2X} '||a||b||c' '||' '||' 'E+1' $OUT
	StrCmp $OUT 'a' 0 error

	${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E+1' $OUT
	IfErrors 0 error
	StrCmp $OUT 1 0 error

	${WordFind2X} '[io.sys];[C:\logo.sys]' '[' '];' 'E+2' $OUT
	IfErrors 0 error
	StrCmp $OUT 2 0 error

	${WordFind2X} '[io.sys];[C:\logo.sys]' '\' '];' 'E2' $OUT
	IfErrors 0 error
	StrCmp $OUT 3 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordFind2XS
	${StackVerificationStart} WordFind2XS

	${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/LOGO' $OUT
	StrCmp $OUT 'C:\WINDOWS C:\io.sys C:\logo.sys' 0 error

	${WordFind2XS} 'C:\WINDOWS C:\io.sys C:\logo.sys' '\' '.' '/logo' $OUT
	StrCmp $OUT '2' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordFind3X
	${StackVerificationStart} WordFind3X

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
	StrCmp $OUT '1.AAB' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1' $OUT
	StrCmp $OUT '2.BAA' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{{' $OUT
	StrCmp $OUT '[1.AAB];' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{}' $OUT
	StrCmp $OUT '[1.AAB];[3.BBB];' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '-1{*' $OUT
	StrCmp $OUT '[1.AAB];[2.BAA];' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
	StrCmp $OUT '2' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'XX' '];' 'E+1' $OUT
	IfErrors 0 error
	StrCmp $OUT '1' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E+3' $OUT
	IfErrors 0 error
	StrCmp $OUT '2' 0 error

	${WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' 'E3' $OUT
	IfErrors 0 error
	StrCmp $OUT '3' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordFind3XS
	${StackVerificationStart} WordFind3XS

	${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.baa' $OUT
	StrCmp $OUT '[1.AAB];[2.BAA];[3.BBB];' 0 error

	${WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '/2.BAA' $OUT
	StrCmp $OUT '2' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordReplace
	${StackVerificationStart} WordReplace

	${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' '' '+' $OUT
	StrCmp $OUT 'C:\io. C:\logo. C:\WINDOWS' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'C:\io.sys' '' '+' $OUT
	StrCmp $OUT ' C:\logo.sys C:\WINDOWS' 0 error

	${WordReplace} 'C:\io.sys      C:\logo.sys   C:\WINDOWS' ' ' ' ' '+1*' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys   C:\WINDOWS' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sysSYSsys C:\WINDOWS' 'sys' 'bmp' '+*' $OUT
	StrCmp $OUT 'C:\io.bmp C:\logo.bmp C:\WINDOWS' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{' $OUT
	StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}' $OUT
	StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}' $OUT
	StrCmp $OUT '||C:\io.sys C:\logo.sys C:\WINDOWS|||' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{*' $OUT
	StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '}*' $OUT
	StrCmp $OUT 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWS|' 0 error

	${WordReplace} 'SYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
	StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error

	${WordReplace} 'sysSYSsysC:\io.sys C:\logo.sys C:\WINDOWSsysSYSsys' 'sys' '|' '{}*' $OUT
	StrCmp $OUT '|C:\io.sys C:\logo.sys C:\WINDOWS|' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sys' '#sys' '|sys|' 'E+1' $OUT
	IfErrors 0 error
	StrCmp $OUT '1' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E+3' $OUT
	IfErrors 0 error
	StrCmp $OUT '2' 0 error

	${WordReplace} 'C:\io.sys C:\logo.sys' '.sys' '|sys|' 'E3' $OUT
	IfErrors 0 error
	StrCmp $OUT '3' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordReplaceS
	${StackVerificationStart} WordReplaceS

	${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error

	${WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'sys' 'bmp' '+2' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.bmp C:\WINDOWS' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordAdd
	${StackVerificationStart} WordAdd

	${WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
	StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error

	${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
	StrCmp $OUT 'C:\logo.sys' 0 error

	${WordAdd} 'C:\io.sys' ' ' '+C:\WINDOWS C:\config.sys C:\IO.SYS' $OUT
	StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error

	${WordAdd} 'C:\io.sys C:\logo.sys C:\WINDOWS' ' ' '-C:\WINDOWS' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error

	${WordAdd} 'C:\io.sys C:\logo.sys' ' ' '+C:\logo.sys' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error

	${WordAdd} 'C:\io.sys C:\logo.sys' ' ' 'E-' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys' 0 error
	IfErrors error

	${WordAdd} 'C:\io.sys C:\logo.sys' '' 'E-C:\logo.sys' $OUT
	IfErrors 0 error
	StrCmp $OUT '1' 0 error

	${WordAdd} 'C:\io.sys C:\logo.sys' '' 'EC:\logo.sys' $OUT
	IfErrors 0 error
	StrCmp $OUT '3' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordAddS
	${StackVerificationStart} WordAddS

	${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\windows C:\config.sys' $OUT
	StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\windows C:\config.sys' 0 error

	${WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
	StrCmp $OUT 'C:\io.sys C:\WINDOWS C:\config.sys' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordInsert
	${StackVerificationStart} WordInsert

	${WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
	StrCmp $OUT 'C:\io.sys C:\logo.sys C:\WINDOWS' 0 error

	${WordInsert} 'C:\io.sys' ' ' 'C:\WINDOWS' '+2' $OUT
	StrCmp $OUT 'C:\io.sys C:\WINDOWS' 0 error

	${WordInsert} '' ' ' 'C:\WINDOWS' '+1' $OUT
	StrCmp $OUT 'C:\WINDOWS ' 0 error

	${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E+1' $OUT
	IfErrors 0 error
	StrCmp $OUT '1' 0 error

	${WordInsert} 'C:\io.sys C:\logo.sys' ' ' 'C:\logo.sys' 'E+4' $OUT
	IfErrors 0 error
	StrCmp $OUT '2' 0 error

	${WordInsert} 'C:\io.sys C:\logo.sys' '' 'C:\logo.sys' 'E1' $OUT
	IfErrors 0 error
	StrCmp $OUT '3' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WordInsertS
	${StackVerificationStart} WordInsertS

	${WordInsertS} 'C:\io.sys x C:\logo.sys' ' X ' 'C:\NTLDR' '+2' $OUT
	StrCmp $OUT 'C:\io.sys x C:\logo.sys X C:\NTLDR' 0 error

	${WordInsertS} 'C:\io.sys x C:\logo.sys' ' x ' 'C:\NTLDR' '+2' $OUT
	StrCmp $OUT 'C:\io.sys x C:\NTLDR x C:\logo.sys' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section StrFilter
	${StackVerificationStart} StrFilter

	${StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
	IfErrors error
	StrCmp $OUT '123ABC 456DEF 7890|%#' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '-' 'ef' '' $OUT
	IfErrors error
	StrCmp $OUT '123abc 456dEF 7890|%#' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '2' '|%' '' $OUT
	IfErrors error
	StrCmp $OUT 'abcDEF|%' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
	IfErrors error
	StrCmp $OUT '123a 6F 78|%#' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
	IfErrors error
	StrCmp $OUT '123AbC4567890' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '+12' 'b' 'def' $OUT
	IfErrors error
	StrCmp $OUT '123AbC4567890' 0 error

	${StrFilter} '123abc 456DEF 7890|%#' '123' 'b' 'def' $OUT
	IfErrors 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section StrFilterS
	${StackVerificationStart} StrFilterS

	${StrFilterS} '123abc 456DEF 7890|%#' '13' 'af' '4590' $OUT
	IfErrors error
	StrCmp $OUT '123a 6 78|%#' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section VersionCompare
	${StackVerificationStart} VersionCompare

	${VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
	StrCmp $OUT '1' 0 error

	${VersionCompare} '1.1.1.1' '1.1.1.10' $OUT
	StrCmp $OUT '2' 0 error

	${VersionCompare} '91.1.1.1' '101.1.1.9' $OUT
	StrCmp $OUT '2' 0 error

	${VersionCompare} '1.1.1.1' '1.1.1.1' $OUT
	StrCmp $OUT '0' 0 error

	${VersionCompare} '1.1.1.9' '1.1.1.10' $OUT
	StrCmp $OUT '2' 0 error

	${VersionCompare} '1.1.1.0' '1.1.1' $OUT
	StrCmp $OUT '0' 0 error

	${VersionCompare} '1.1.0.0' '1.1' $OUT
	StrCmp $OUT '0' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section VersionConvert
	${StackVerificationStart} VersionConvert

	${VersionConvert} '9.0a' '' $OUT
	StrCmp $OUT '9.0.01' 0 error

	${VersionConvert} '9.0c' '' $OUT
	StrCmp $OUT '9.0.03' 0 error

	${VersionConvert} '0.15c-9m' '' $OUT
	StrCmp $OUT '0.15.03.9.13' 0 error

	${VersionConvert} '0.15c+' 'abcdefghijklmnopqrstuvwxyz+' $OUT
	StrCmp $OUT '0.15.0327' 0 error

	${VersionConvert} '0.0xa12.x.ax|.|.|x|a|.3|a.4.||5.|' '' $OUT
	StrCmp $OUT '0.0.2401.12.24.0124.24.01.3.01.4.5' 0 error

	goto +2
	error:
	SetErrors

	${StackVerificationEnd}
SectionEnd


Section WriteUninstaller
	goto +2
	WriteUninstaller '$EXEDIR\un.WordFuncTest.exe'
SectionEnd



;############### UNINSTALL ###############

Section un.Uninstall
	${un.WordFind} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
	${un.WordFindS} 'C:\io.sys C:\Program Files C:\WINDOWS' ' C:\' '-02' $OUT
	${un.WordFind2X} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
	${un.WordFind2XS} '[C:\io.sys];[C:\logo.sys];[C:\WINDOWS]' '[C:\' '];' '+2' $OUT
	${un.WordFind3X} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
	${un.WordFind3XS} '[1.AAB];[2.BAA];[3.BBB];' '[' 'AA' '];' '+1' $OUT
	${un.WordReplace} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
	${un.WordReplaceS} 'C:\io.sys C:\logo.sys C:\WINDOWS' 'SYS' 'bmp' '+2' $OUT
	${un.WordAdd} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
	${un.WordAddS} 'C:\io.sys C:\WINDOWS' ' ' '+C:\WINDOWS C:\config.sys' $OUT
	${un.WordInsert} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
	${un.WordInsertS} 'C:\io.sys C:\WINDOWS' ' ' 'C:\logo.sys' '-2' $OUT
	${un.StrFilter} '123abc 456DEF 7890|%#' '+' '' '' $OUT
	${un.StrFilterS} '123abc 456DEF 7890|%#' '+' '' '' $OUT
	${un.VersionCompare} '1.1.1.9' '1.1.1.01' $OUT
	${un.VersionConvert} '9.0a' '' $OUT
SectionEnd