home *** CD-ROM | disk | FTP | other *** search
/ Hackers Magazine 57 / CdHackersMagazineNr57.iso / Software / Programming / nsis-2.46-setup.exe / Examples / TextFuncTest.nsi < prev    next >
Text File  |  2008-11-21  |  9KB  |  415 lines

  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
  415.