Statistiques
| Révision :

root / tmp / org.txm.setups / nsis / Examples / TextFuncTest.nsi @ 3088

Historique | Voir | Annoter | Télécharger (8,87 ko)

1
;_____________________________________________________________________________
2
;
3
;                          Text Functions Test
4
;_____________________________________________________________________________
5
;
6
; 2006 Shengalts Aleksander aka Instructor (Shengalts@mail.ru)
7

    
8
Name "Text Functions Test"
9
OutFile "TextFuncTest.exe"
10
Caption "$(^Name)"
11
ShowInstDetails show
12
XPStyle on
13
RequestExecutionLevel user
14

    
15
Var FUNCTION
16
Var TEMPFILE1
17
Var TEMPFILE2
18
Var TEMPFILE3
19
Var HANDLE
20
Var OUT
21

    
22
!include "TextFunc.nsh"
23

    
24
;############### INSTALL ###############
25

    
26
!define StackVerificationStart `!insertmacro StackVerificationStart`
27
!macro StackVerificationStart _FUNCTION
28
	StrCpy $FUNCTION ${_FUNCTION}
29
	Call StackVerificationStart
30
!macroend
31

    
32
!define StackVerificationEnd `!insertmacro StackVerificationEnd`
33
!macro StackVerificationEnd
34
	Call StackVerificationEnd
35
!macroend
36

    
37
Function StackVerificationStart
38
	StrCpy $0 !0
39
	StrCpy $1 !1
40
	StrCpy $2 !2
41
	StrCpy $3 !3
42
	StrCpy $4 !4
43
	StrCpy $5 !5
44
	StrCpy $6 !6
45
	StrCpy $7 !7
46
	StrCpy $8 !8
47
	StrCpy $9 !9
48
	StrCpy $R0 !R0
49
	StrCpy $R1 !R1
50
	StrCpy $R2 !R2
51
	StrCpy $R3 !R3
52
	StrCpy $R4 !R4
53
	StrCpy $R5 !R5
54
	StrCpy $R6 !R6
55
	StrCpy $R7 !R7
56
	StrCpy $R8 !R8
57
	StrCpy $R9 !R9
58
FunctionEnd
59

    
60
Function StackVerificationEnd
61
	IfErrors +3
62
	DetailPrint 'PASSED $FUNCTION no errors'
63
	goto +2
64
	DetailPrint 'FAILED   $FUNCTION error'
65

    
66
	StrCmp $0 '!0' 0 error
67
	StrCmp $1 '!1' 0 error
68
	StrCmp $2 '!2' 0 error
69
	StrCmp $3 '!3' 0 error
70
	StrCmp $4 '!4' 0 error
71
	StrCmp $5 '!5' 0 error
72
	StrCmp $6 '!6' 0 error
73
	StrCmp $7 '!7' 0 error
74
	StrCmp $8 '!8' 0 error
75
	StrCmp $9 '!9' 0 error
76
	StrCmp $R0 '!R0' 0 error
77
	StrCmp $R1 '!R1' 0 error
78
	StrCmp $R2 '!R2' 0 error
79
	StrCmp $R3 '!R3' 0 error
80
	StrCmp $R4 '!R4' 0 error
81
	StrCmp $R5 '!R5' 0 error
82
	StrCmp $R6 '!R6' 0 error
83
	StrCmp $R7 '!R7' 0 error
84
	StrCmp $R8 '!R8' 0 error
85
	StrCmp $R9 '!R9' 0 error
86
	DetailPrint 'PASSED $FUNCTION stack'
87
	goto end
88

    
89
	error:
90
	DetailPrint 'FAILED   $FUNCTION stack'
91
;	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
92
;	quit
93

    
94
	end:
95
FunctionEnd
96

    
97

    
98

    
99
Section CreateTestFile
100
	GetTempFileName $TEMPFILE1
101
	FileOpen $HANDLE $TEMPFILE1 w
102
	FileWrite $HANDLE '1A=a$\r$\n'
103
	FileWrite $HANDLE '2B=b$\r$\n'
104
	FileWrite $HANDLE '3C=c$\r$\n'
105
	FileWrite $HANDLE '4D=d$\r$\n'
106
	FileWrite $HANDLE '5E=e$\r$\n'
107
	FileClose $HANDLE
108
	GetTempFileName $TEMPFILE2
109
	GetTempFileName $TEMPFILE3
110
SectionEnd
111

    
112

    
113
Section LineFind
114
	${StackVerificationStart} LineFind
115

    
116
	${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1'
117
	IfErrors error
118
	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
119

    
120
	StrCpy $OUT ''
121
	SetDetailsPrint none
122
	${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2'
123
	SetDetailsPrint both
124
	IfErrors error
125
	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
126

    
127
	goto +2
128
	error:
129
	SetErrors
130

    
131
	${StackVerificationEnd}
132
SectionEnd
133

    
134
Function LineFindCallback1
135
	StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
136
	StrCmp $R8 3 0 +2
137
	StrCpy $0 StopLineFind
138

    
139
	Push $0
140
FunctionEnd
141

    
142
Function LineFindCallback2
143
	StrCmp $R8 2 0 +2
144
	StrCpy $R9 '4D=d$\r$\n'
145
	StrCmp $R8 4 0 +2
146
	StrCpy $R9 '2B=B$\r$\n'
147

    
148
	StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
149

    
150
	Push $0
151
FunctionEnd
152

    
153

    
154
Section LineRead
155
	${StackVerificationStart} LineRead
156

    
157
	${LineRead} '$TEMPFILE1' '-1' $OUT
158
	IfErrors error
159
	StrCmp $OUT '5E=e$\r$\n' 0 error
160

    
161
	goto +2
162
	error:
163
	SetErrors
164

    
165
	${StackVerificationEnd}
166
SectionEnd
167

    
168

    
169
Section FileReadFromEnd
170
	${StackVerificationStart} FileReadFromEnd
171

    
172
	StrCpy $OUT ''
173
	${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback'
174
	IfErrors error
175
	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
176

    
177
	goto +2
178
	error:
179
	SetErrors
180

    
181
	${StackVerificationEnd}
182
SectionEnd
183

    
184
Function FileReadFromEndCallback
185
	StrCpy $OUT '$OUT|$7|$8|$9'
186
	StrCmp $8 2 0 +2
187
	StrCpy $0 StopFileReadFromEnd
188

    
189
	Push $0
190
FunctionEnd
191

    
192

    
193
Section LineSum
194
	${StackVerificationStart} LineSum
195

    
196
	${LineSum} '$TEMPFILE1' $OUT
197
	IfErrors error
198
	StrCmp $OUT '5' 0 error
199

    
200
	goto +2
201
	error:
202
	SetErrors
203

    
204
	${StackVerificationEnd}
205
SectionEnd
206

    
207

    
208
Section FileJoin
209
	${StackVerificationStart} FileJoin
210

    
211
	SetDetailsPrint none
212
	${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
213
	SetDetailsPrint both
214

    
215
	${StackVerificationEnd}
216
SectionEnd
217

    
218

    
219
Section TextCompare
220
	${StackVerificationStart} TextCompare
221

    
222
	StrCpy $OUT ''
223
	${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback'
224
	StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error
225

    
226
	StrCpy $OUT ''
227
	${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback'
228
	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
229

    
230
	StrCpy $OUT ''
231
	${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
232
	StrCmp $OUT '' 0 error
233

    
234
	StrCpy $OUT ''
235
	${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
236
	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
237

    
238
	goto +2
239
	error:
240
	SetErrors
241

    
242
	${StackVerificationEnd}
243
SectionEnd
244

    
245
Section TextCompareS
246
	${StackVerificationStart} TextCompareS
247

    
248
	StrCpy $OUT ''
249
	${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
250
	StrCmp $OUT '|||2|2B=b$\r$\n' 0 error
251

    
252
	StrCpy $OUT ''
253
	${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
254
	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
255

    
256
	goto +2
257
	error:
258
	SetErrors
259

    
260
	${StackVerificationEnd}
261
SectionEnd
262

    
263
Function TextCompareCallback
264
	StrCpy $OUT '$OUT|$6|$7|$8|$9'
265

    
266
	Push $0
267
FunctionEnd
268

    
269

    
270
Section ConfigRead
271
	${StackVerificationStart} ConfigRead
272

    
273
	${ConfigRead} '$TEMPFILE1' '3c=' $OUT
274
	StrCmp $OUT 'c' 0 error
275

    
276
	${ConfigRead} '$TEMPFILE1' '6F=' $OUT
277
	StrCmp $OUT '' 0 error
278

    
279
	${ConfigRead} '$TEMPFILE1' 'FF=' $OUT
280
	IfErrors 0 error
281

    
282
	goto +2
283
	error:
284
	SetErrors
285

    
286
	${StackVerificationEnd}
287
SectionEnd
288

    
289

    
290
Section ConfigReadS
291
	${StackVerificationStart} ConfigReadS
292

    
293
	${ConfigReadS} '$TEMPFILE1' '3C=' $OUT
294
	StrCmp $OUT 'c' 0 error
295

    
296
	${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
297
	IfErrors 0 error
298
	StrCmp $OUT '' 0 error
299

    
300
	goto +2
301
	error:
302
	SetErrors
303

    
304
	${StackVerificationEnd}
305
SectionEnd
306

    
307

    
308
Section ConfigWrite
309
	${StackVerificationStart} ConfigWrite
310

    
311
	${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
312
	StrCmp $OUT 'CHANGED' 0 error
313

    
314
	${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT
315
	StrCmp $OUT 'DELETED' 0 error
316

    
317
	${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT
318
	StrCmp $OUT 'SAME' 0 error
319

    
320
	${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT
321
	StrCmp $OUT 'ADDED' 0 error
322

    
323
	goto +2
324
	error:
325
	SetErrors
326

    
327
	${StackVerificationEnd}
328
SectionEnd
329

    
330

    
331
Section ConfigWriteS
332
	${StackVerificationStart} ConfigWriteS
333

    
334
	${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT
335
	StrCmp $OUT 'ADDED' 0 error
336

    
337
	goto +2
338
	error:
339
	SetErrors
340

    
341
	${StackVerificationEnd}
342
SectionEnd
343

    
344

    
345
Section FileRecode
346
	${StackVerificationStart} FileRecode
347

    
348
	${FileRecode} '$TEMPFILE1' 'CharToOem'
349

    
350
	${StackVerificationEnd}
351
SectionEnd
352

    
353

    
354
Section TrimNewLines
355
	${StackVerificationStart} TrimNewLines
356

    
357
	${TrimNewLines} 'Text Line$\r$\n' $OUT
358
	StrCmp $OUT 'Text Line' 0 error
359

    
360
	${TrimNewLines} 'Text Line' $OUT
361
	StrCmp $OUT 'Text Line' 0 error
362

    
363
	${TrimNewLines} 'Text Line$\n' $OUT
364
	StrCmp $OUT 'Text Line' 0 error
365

    
366
	goto +2
367
	error:
368
	SetErrors
369

    
370
	${StackVerificationEnd}
371
SectionEnd
372

    
373

    
374
Section WriteUninstaller
375
	SetDetailsPrint none
376
	Delete $TEMPFILE1
377
	Delete $TEMPFILE2
378
	Delete $TEMPFILE3
379
	SetDetailsPrint both
380
	goto +2
381
	WriteUninstaller '$EXEDIR\un.TextFuncTest.exe'
382
SectionEnd
383

    
384

    
385

    
386
;############### UNINSTALL ###############
387

    
388
Section un.Uninstall
389
	${LineFind} '$TEMPFILE1' '/NUL' '1:-1' 'un.LineFindCallback'
390
	${LineRead} '$TEMPFILE1' '-1' $OUT
391
	${FileReadFromEnd} '$TEMPFILE1' 'un.FileReadFromEndCallback'
392
	${LineSum} '$TEMPFILE1' $OUT
393
	${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
394
	${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
395
	${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
396
	${ConfigRead} '$TEMPFILE1' '3c=' $OUT
397
	${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
398
	${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
399
	${ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT
400
	${FileRecode} '$TEMPFILE1' 'CharToOem'
401
	${TrimNewLines} 'Text Line$\r$\n' $OUT
402
SectionEnd
403

    
404
Function un.LineFindCallback
405
	Push $0
406
FunctionEnd
407

    
408
Function un.FileReadFromEndCallback
409
	Push $0
410
FunctionEnd
411

    
412
Function un.TextCompareCallback
413
	Push $0
414
FunctionEnd