home *** CD-ROM | disk | FTP | other *** search
/ Personal Computer World 2007 November / PCWNOV07.iso / Software / Freeware / NSIS 2.29 / nsis-2.29-setup.exe / Examples / TextFuncTest.nsi < prev    next >
Encoding:
Text File  |  2006-02-10  |  9.6 KB  |  444 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.  
  14. Var FUNCTION
  15. Var TEMPFILE1
  16. Var TEMPFILE2
  17. Var TEMPFILE3
  18. Var HANDLE
  19. Var OUT
  20.  
  21. !include "TextFunc.nsh"
  22.  
  23. !insertmacro LineFind
  24. !insertmacro LineRead
  25. !insertmacro FileReadFromEnd
  26. !insertmacro LineSum
  27. !insertmacro FileJoin
  28. !insertmacro TextCompare
  29. !insertmacro TextCompareS
  30. !insertmacro ConfigRead
  31. !insertmacro ConfigReadS
  32. !insertmacro ConfigWrite
  33. !insertmacro ConfigWriteS
  34. !insertmacro FileRecode
  35. !insertmacro TrimNewLines
  36.  
  37. !insertmacro un.LineFind
  38. !insertmacro un.LineRead
  39. !insertmacro un.FileReadFromEnd
  40. !insertmacro un.LineSum
  41. !insertmacro un.FileJoin
  42. !insertmacro un.TextCompare
  43. !insertmacro un.TextCompareS
  44. !insertmacro un.ConfigRead
  45. !insertmacro un.ConfigReadS
  46. !insertmacro un.ConfigWrite
  47. !insertmacro un.ConfigWriteS
  48. !insertmacro un.FileRecode
  49. !insertmacro un.TrimNewLines
  50.  
  51.  
  52.  
  53. ;############### INSTALL ###############
  54.  
  55. !define StackVerificationStart `!insertmacro StackVerificationStart`
  56. !macro StackVerificationStart _FUNCTION
  57.     StrCpy $FUNCTION ${_FUNCTION}
  58.     Call StackVerificationStart
  59. !macroend
  60.  
  61. !define StackVerificationEnd `!insertmacro StackVerificationEnd`
  62. !macro StackVerificationEnd
  63.     Call StackVerificationEnd
  64. !macroend
  65.  
  66. Function StackVerificationStart
  67.     StrCpy $0 !0
  68.     StrCpy $1 !1
  69.     StrCpy $2 !2
  70.     StrCpy $3 !3
  71.     StrCpy $4 !4
  72.     StrCpy $5 !5
  73.     StrCpy $6 !6
  74.     StrCpy $7 !7
  75.     StrCpy $8 !8
  76.     StrCpy $9 !9
  77.     StrCpy $R0 !R0
  78.     StrCpy $R1 !R1
  79.     StrCpy $R2 !R2
  80.     StrCpy $R3 !R3
  81.     StrCpy $R4 !R4
  82.     StrCpy $R5 !R5
  83.     StrCpy $R6 !R6
  84.     StrCpy $R7 !R7
  85.     StrCpy $R8 !R8
  86.     StrCpy $R9 !R9
  87. FunctionEnd
  88.  
  89. Function StackVerificationEnd
  90.     IfErrors +3
  91.     DetailPrint 'PASSED $FUNCTION no errors'
  92.     goto +2
  93.     DetailPrint 'FAILED   $FUNCTION error'
  94.  
  95.     StrCmp $0 '!0' 0 error
  96.     StrCmp $1 '!1' 0 error
  97.     StrCmp $2 '!2' 0 error
  98.     StrCmp $3 '!3' 0 error
  99.     StrCmp $4 '!4' 0 error
  100.     StrCmp $5 '!5' 0 error
  101.     StrCmp $6 '!6' 0 error
  102.     StrCmp $7 '!7' 0 error
  103.     StrCmp $8 '!8' 0 error
  104.     StrCmp $9 '!9' 0 error
  105.     StrCmp $R0 '!R0' 0 error
  106.     StrCmp $R1 '!R1' 0 error
  107.     StrCmp $R2 '!R2' 0 error
  108.     StrCmp $R3 '!R3' 0 error
  109.     StrCmp $R4 '!R4' 0 error
  110.     StrCmp $R5 '!R5' 0 error
  111.     StrCmp $R6 '!R6' 0 error
  112.     StrCmp $R7 '!R7' 0 error
  113.     StrCmp $R8 '!R8' 0 error
  114.     StrCmp $R9 '!R9' 0 error
  115.     DetailPrint 'PASSED $FUNCTION stack'
  116.     goto end
  117.  
  118.     error:
  119.     DetailPrint 'FAILED   $FUNCTION stack'
  120. ;    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
  121. ;    quit
  122.  
  123.     end:
  124. FunctionEnd
  125.  
  126.  
  127.  
  128. Section CreateTestFile
  129.     GetTempFileName $TEMPFILE1
  130.     FileOpen $HANDLE $TEMPFILE1 w
  131.     FileWrite $HANDLE '1A=a$\r$\n'
  132.     FileWrite $HANDLE '2B=b$\r$\n'
  133.     FileWrite $HANDLE '3C=c$\r$\n'
  134.     FileWrite $HANDLE '4D=d$\r$\n'
  135.     FileWrite $HANDLE '5E=e$\r$\n'
  136.     FileClose $HANDLE
  137.     GetTempFileName $TEMPFILE2
  138.     GetTempFileName $TEMPFILE3
  139. SectionEnd
  140.  
  141.  
  142. Section LineFind
  143.     ${StackVerificationStart} LineFind
  144.  
  145.     ${LineFind} '$TEMPFILE1' '/NUL' '1:-4 3 -1' 'LineFindCallback1'
  146.     IfErrors error
  147.     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
  148.  
  149.     StrCpy $OUT ''
  150.     SetDetailsPrint none
  151.     ${LineFind} '$TEMPFILE1' '$TEMPFILE2' '1:-1' 'LineFindCallback2'
  152.     SetDetailsPrint both
  153.     IfErrors error
  154.     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
  155.  
  156.     goto +2
  157.     error:
  158.     SetErrors
  159.  
  160.     ${StackVerificationEnd}
  161. SectionEnd
  162.  
  163. Function LineFindCallback1
  164.     StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
  165.     StrCmp $R8 3 0 +2
  166.     StrCpy $0 StopLineFind
  167.  
  168.     Push $0
  169. FunctionEnd
  170.  
  171. Function LineFindCallback2
  172.     StrCmp $R8 2 0 +2
  173.     StrCpy $R9 '4D=d$\r$\n'
  174.     StrCmp $R8 4 0 +2
  175.     StrCpy $R9 '2B=B$\r$\n'
  176.  
  177.     StrCpy $OUT '$OUT|$R6|$R7|$R8|$R9'
  178.  
  179.     Push $0
  180. FunctionEnd
  181.  
  182.  
  183. Section LineRead
  184.     ${StackVerificationStart} LineRead
  185.  
  186.     ${LineRead} '$TEMPFILE1' '-1' $OUT
  187.     IfErrors error
  188.     StrCmp $OUT '5E=e$\r$\n' 0 error
  189.  
  190.     goto +2
  191.     error:
  192.     SetErrors
  193.  
  194.     ${StackVerificationEnd}
  195. SectionEnd
  196.  
  197.  
  198. Section FileReadFromEnd
  199.     ${StackVerificationStart} FileReadFromEnd
  200.  
  201.     StrCpy $OUT ''
  202.     ${FileReadFromEnd} '$TEMPFILE1' 'FileReadFromEndCallback'
  203.     IfErrors error
  204.     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
  205.  
  206.     goto +2
  207.     error:
  208.     SetErrors
  209.  
  210.     ${StackVerificationEnd}
  211. SectionEnd
  212.  
  213. Function FileReadFromEndCallback
  214.     StrCpy $OUT '$OUT|$7|$8|$9'
  215.     StrCmp $8 2 0 +2
  216.     StrCpy $0 StopFileReadFromEnd
  217.  
  218.     Push $0
  219. FunctionEnd
  220.  
  221.  
  222. Section LineSum
  223.     ${StackVerificationStart} LineSum
  224.  
  225.     ${LineSum} '$TEMPFILE1' $OUT
  226.     IfErrors error
  227.     StrCmp $OUT '5' 0 error
  228.  
  229.     goto +2
  230.     error:
  231.     SetErrors
  232.  
  233.     ${StackVerificationEnd}
  234. SectionEnd
  235.  
  236.  
  237. Section FileJoin
  238.     ${StackVerificationStart} FileJoin
  239.  
  240.     SetDetailsPrint none
  241.     ${FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
  242.     SetDetailsPrint both
  243.  
  244.     ${StackVerificationEnd}
  245. SectionEnd
  246.  
  247.  
  248. Section TextCompare
  249.     ${StackVerificationStart} TextCompare
  250.  
  251.     StrCpy $OUT ''
  252.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'TextCompareCallback'
  253.     StrCmp $OUT '|2|4D=d$\r$\n|2|2B=b$\r$\n|4|2B=B$\r$\n|4|4D=d$\r$\n' 0 error
  254.  
  255.     StrCpy $OUT ''
  256.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastEqual' 'TextCompareCallback'
  257.     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
  258.  
  259.     StrCpy $OUT ''
  260.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
  261.     StrCmp $OUT '' 0 error
  262.  
  263.     StrCpy $OUT ''
  264.     ${TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
  265.     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
  266.  
  267.     goto +2
  268.     error:
  269.     SetErrors
  270.  
  271.     ${StackVerificationEnd}
  272. SectionEnd
  273.  
  274. Section TextCompareS
  275.     ${StackVerificationStart} TextCompareS
  276.  
  277.     StrCpy $OUT ''
  278.     ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowDiff' 'TextCompareCallback'
  279.     StrCmp $OUT '|||2|2B=b$\r$\n' 0 error
  280.  
  281.     StrCpy $OUT ''
  282.     ${TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'SlowEqual' 'TextCompareCallback'
  283.     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
  284.  
  285.     goto +2
  286.     error:
  287.     SetErrors
  288.  
  289.     ${StackVerificationEnd}
  290. SectionEnd
  291.  
  292. Function TextCompareCallback
  293.     StrCpy $OUT '$OUT|$6|$7|$8|$9'
  294.  
  295.     Push $0
  296. FunctionEnd
  297.  
  298.  
  299. Section ConfigRead
  300.     ${StackVerificationStart} ConfigRead
  301.  
  302.     ${ConfigRead} '$TEMPFILE1' '3c=' $OUT
  303.     StrCmp $OUT 'c' 0 error
  304.  
  305.     ${ConfigRead} '$TEMPFILE1' '6F=' $OUT
  306.     StrCmp $OUT '' 0 error
  307.  
  308.     ${ConfigRead} '$TEMPFILE1' 'FF=' $OUT
  309.     IfErrors 0 error
  310.  
  311.     goto +2
  312.     error:
  313.     SetErrors
  314.  
  315.     ${StackVerificationEnd}
  316. SectionEnd
  317.  
  318.  
  319. Section ConfigReadS
  320.     ${StackVerificationStart} ConfigReadS
  321.  
  322.     ${ConfigReadS} '$TEMPFILE1' '3C=' $OUT
  323.     StrCmp $OUT 'c' 0 error
  324.  
  325.     ${ConfigReadS} '$TEMPFILE1' '3c=' $OUT
  326.     IfErrors 0 error
  327.     StrCmp $OUT '' 0 error
  328.  
  329.     goto +2
  330.     error:
  331.     SetErrors
  332.  
  333.     ${StackVerificationEnd}
  334. SectionEnd
  335.  
  336.  
  337. Section ConfigWrite
  338.     ${StackVerificationStart} ConfigWrite
  339.  
  340.     ${ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
  341.     StrCmp $OUT 'CHANGED' 0 error
  342.  
  343.     ${ConfigWrite} '$TEMPFILE1' '2B=' '' $OUT
  344.     StrCmp $OUT 'DELETED' 0 error
  345.  
  346.     ${ConfigWrite} '$TEMPFILE1' '3c=' 'c' $OUT
  347.     StrCmp $OUT 'SAME' 0 error
  348.  
  349.     ${ConfigWrite} '$TEMPFILE1' '6F=' '*' $OUT
  350.     StrCmp $OUT 'ADDED' 0 error
  351.  
  352.     goto +2
  353.     error:
  354.     SetErrors
  355.  
  356.     ${StackVerificationEnd}
  357. SectionEnd
  358.  
  359.  
  360. Section ConfigWriteS
  361.     ${StackVerificationStart} ConfigWriteS
  362.  
  363.     ${ConfigWriteS} '$TEMPFILE1' '5e=' 'e**' $OUT
  364.     StrCmp $OUT 'ADDED' 0 error
  365.  
  366.     goto +2
  367.     error:
  368.     SetErrors
  369.  
  370.     ${StackVerificationEnd}
  371. SectionEnd
  372.  
  373.  
  374. Section FileRecode
  375.     ${StackVerificationStart} FileRecode
  376.  
  377.     ${FileRecode} '$TEMPFILE1' 'CharToOem'
  378.  
  379.     ${StackVerificationEnd}
  380. SectionEnd
  381.  
  382.  
  383. Section TrimNewLines
  384.     ${StackVerificationStart} TrimNewLines
  385.  
  386.     ${TrimNewLines} 'Text Line$\r$\n' $OUT
  387.     StrCmp $OUT 'Text Line' 0 error
  388.  
  389.     ${TrimNewLines} 'Text Line' $OUT
  390.     StrCmp $OUT 'Text Line' 0 error
  391.  
  392.     ${TrimNewLines} 'Text Line$\n' $OUT
  393.     StrCmp $OUT 'Text Line' 0 error
  394.  
  395.     goto +2
  396.     error:
  397.     SetErrors
  398.  
  399.     ${StackVerificationEnd}
  400. SectionEnd
  401.  
  402.  
  403. Section WriteUninstaller
  404.     SetDetailsPrint none
  405.     Delete $TEMPFILE1
  406.     Delete $TEMPFILE2
  407.     Delete $TEMPFILE3
  408.     SetDetailsPrint both
  409.     goto +2
  410.     WriteUninstaller '$EXEDIR\un.TextFuncTest.exe'
  411. SectionEnd
  412.  
  413.  
  414.  
  415. ;############### UNINSTALL ###############
  416.  
  417. Section un.Uninstall
  418.     ${un.LineFind} '$TEMPFILE1' '/NUL' '1:-1' 'un.LineFindCallback'
  419.     ${un.LineRead} '$TEMPFILE1' '-1' $OUT
  420.     ${un.FileReadFromEnd} '$TEMPFILE1' 'un.FileReadFromEndCallback'
  421.     ${un.LineSum} '$TEMPFILE1' $OUT
  422.     ${un.FileJoin} '$TEMPFILE1' '$TEMPFILE2' '$TEMPFILE3'
  423.     ${un.TextCompare} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
  424.     ${un.TextCompareS} '$TEMPFILE1' '$TEMPFILE2' 'FastDiff' 'un.TextCompareCallback'
  425.     ${un.ConfigRead} '$TEMPFILE1' '3c=' $OUT
  426.     ${un.ConfigReadS} '$TEMPFILE1' '3c=' $OUT
  427.     ${un.ConfigWrite} '$TEMPFILE1' '5E=' 'e**' $OUT
  428.     ${un.ConfigWriteS} '$TEMPFILE1' '5E=' 'e**' $OUT
  429.     ${un.FileRecode} '$TEMPFILE1' 'CharToOem'
  430.     ${un.TrimNewLines} 'Text Line$\r$\n' $OUT
  431. SectionEnd
  432.  
  433. Function un.LineFindCallback
  434.     Push $0
  435. FunctionEnd
  436.  
  437. Function un.FileReadFromEndCallback
  438.     Push $0
  439. FunctionEnd
  440.  
  441. Function un.TextCompareCallback
  442.     Push $0
  443. FunctionEnd
  444.