Frédéric Delanoy : cmd/tests: Add FOR /A tests.
Module: wine Branch: master Commit: 28fe027eee5d093aa3fd99839161a907cdd568d4 URL: http://source.winehq.org/git/wine.git/?a=commit;h=28fe027eee5d093aa3fd998391... Author: Frédéric Delanoy <frederic.delanoy(a)gmail.com> Date: Thu Aug 4 16:01:48 2011 +0200 cmd/tests: Add FOR /A tests. --- programs/cmd/tests/test_builtins.cmd | 79 ++++++++++++++++++++++++++++++ programs/cmd/tests/test_builtins.cmd.exp | 70 ++++++++++++++++++++++++++ 2 files changed, 149 insertions(+), 0 deletions(-) diff --git a/programs/cmd/tests/test_builtins.cmd b/programs/cmd/tests/test_builtins.cmd index a27c833..a83e568 100644 --- a/programs/cmd/tests/test_builtins.cmd +++ b/programs/cmd/tests/test_builtins.cmd @@ -385,6 +385,85 @@ rem for /L %%i in (1,1,1) do echo %%i rem for /L %%i in (1,-2,-1) do echo %%i rem for /L %%i in (-1,-1,-1) do echo %%i rem for /L %%i in (1,2, 3) do echo %%i +echo ...for /a +rem No output when using "set expr" syntax, unless in interactive mode +rem Need to use "set envvar=expr" to use in a batch script +echo ......individual operations +set var=0 +set /a var=1 +2 & echo %var% +set /a var=1 +-2 & echo %var% +set /a var=1 --2 & echo %var% +set /a var=2* 3 & echo %var% +set /a var=-2* -5 & echo %var% +set /a var=12/3 & echo %var% +set /a var=13/3 & echo %var% +set /a var=-13/3 & echo %var% +rem FIXME Divide by zero should return an error, but error messages cannot be tested with current infrastructure +set /a var=5 %% 5 & echo %var% +set /a var=5 %% 3 & echo %var% +set /a var=5 %% -3 & echo %var% +set /a var=-5 %% -3 & echo %var% +set /a var=1 ^<^< 0 & echo %var% +set /a var=1 ^<^< 2 & echo %var% +set /a var=1 ^<^< -2 & echo %var% +set /a var=-1 ^<^< -2 & echo %var% +set /a var=-1 ^<^< 2 & echo %var% +set /a var=9 ^>^> 0 & echo %var% +set /a var=9 ^>^> 2 & echo %var% +set /a var=9 ^>^> -2 & echo %var% +set /a var=-9 ^>^> -2 & echo %var% +set /a var=-9 ^>^> 2 & echo %var% +set /a var=5 ^& 0 & echo %var% +set /a var=5 ^& 1 & echo %var% +set /a var=5 ^& 3 & echo %var% +set /a var=5 ^& 4 & echo %var% +set /a var=5 ^& 1 & echo %var% +set /a var=5 ^| 0 & echo %var% +set /a var=5 ^| 1 & echo %var% +set /a var=5 ^| 3 & echo %var% +set /a var=5 ^| 4 & echo %var% +set /a var=5 ^| 1 & echo %var% +set /a var=5 ^^ 0 & echo %var% +set /a var=5 ^^ 1 & echo %var% +set /a var=5 ^^ 3 & echo %var% +set /a var=5 ^^ 4 & echo %var% +set /a var=5 ^^ 1 & echo %var% +echo ......precedence and grouping +set /a var=4 + 2*3 & echo %var% +set /a var=(4+2)*3 & echo %var% +set /a var=4 * 3/5 & echo %var% +set /a var=(4 * 3)/5 & echo %var% +set /a var=4 * 5 %% 4 & echo %var% +set /a var=4 * (5 %% 4) & echo %var% +set /a var=3 %% (5 + 8 %% 3 ^^ 2) & echo %var% +set /a var=3 %% (5 + 8 %% 3 ^^ -2) & echo %var% +echo ......octal and hexadecimal +set /a var=0xf + 3 & echo %var% +set /a var=0xF + 3 & echo %var% +set /a var=015 + 2 & echo %var% +set /a var=3, 8+3,0 & echo %var% +echo ......variables +set /a var=foo=3, foo+1 & echo %var% +if defined foo (echo %foo%) else ( + echo foo not defined +) +set /a var=foo=3, foo+=1 & echo %var% +set /a var=foo=3, bar=1, bar+=foo, bar & echo %var% +set /a var=foo*= foo & echo %var% +set /a var=whateverNonExistingVar & echo %var% +set /a var=whateverNonExistingVar + bar & echo %var% +set /a var=foo -= foo + 7 & echo %var% +set /a var=foo /= 3 + 2 & echo %var% +set /a var=foo=5, foo %%=2 & echo %var% +set /a var=foo ^<^<= 2 & echo %var% +set /a var=foo ^>^>= 2 & echo %var% +set /a var=foo ^&= 2 & echo %var% +set /a var=foo=5, foo ^|= 2 & echo %var% +set /a var=foo=5, foo ^^= 2 & echo %var% +set /a var=foo=19, foo %%= 4 + (bar %%= 7) & echo. +set foo= +set bar= +set var= echo -----------Testing del /a----------- del /f/q *.test > nul diff --git a/programs/cmd/tests/test_builtins.cmd.exp b/programs/cmd/tests/test_builtins.cmd.exp index c4f0d76..ec0ece4 100644 --- a/programs/cmd/tests/test_builtins.cmd.exp +++ b/programs/cmd/tests/test_builtins.cmd.exp @@ -253,6 +253,76 @@ bar -1 @todo_wine(a)ErrorLevel 0 @todo_wine(a)ErrorLevel 0 +...for /a +......individual operations +0 +(a)todo_wine@3 +(a)todo_wine@-1 +(a)todo_wine@3 +(a)todo_wine@6 +(a)todo_wine@10 +(a)todo_wine@4 +(a)todo_wine@4 +(a)todo_wine@-4 +0 +(a)todo_wine@2 +(a)todo_wine@2 +(a)todo_wine@-2 +(a)todo_wine@1 +(a)todo_wine@4 +0(a)or_broken@1073741824 +0(a)or_broken@-1073741824 +(a)todo_wine@-4 +(a)todo_wine@9 +(a)todo_wine@2 +0 +(a)todo_wine@-1 +(a)todo_wine@-3 +0 +(a)todo_wine@1 +(a)todo_wine@1 +(a)todo_wine@4 +(a)todo_wine@1 +(a)todo_wine@5 +(a)todo_wine@5 +(a)todo_wine@7 +(a)todo_wine@5 +(a)todo_wine@5 +(a)todo_wine@5 +(a)todo_wine@4 +(a)todo_wine@6 +(a)todo_wine@1 +......precedence and grouping +(a)todo_wine@4 +(a)todo_wine@10 +(a)todo_wine@18(a)or_broken@10 +(a)todo_wine@2(a)or_broken@0 +(a)todo_wine@2(a)or_broken@0 +0(a)or_broken@4 +(a)todo_wine@4 +(a)todo_wine@3(a)or_broken@4 +......octal and hexadecimal +(a)todo_wine@3(a)or_broken@4 +(a)todo_wine@18 +(a)todo_wine@18 +(a)todo_wine@15 +......variables +(a)todo_wine@3 +(a)todo_wine@3(a)or_broken@foo not defined +(a)todo_wine@3(a)or_broken@0 +(a)todo_wine@3(a)or_broken@0 +(a)todo_wine@3(a)or_broken@0 +(a)todo_wine@9(a)or_broken@0 +0 +(a)todo_wine@4(a)or_broken@0 +(a)todo_wine@-7(a)or_broken@0 +(a)todo_wine@-1(a)or_broken@0 +(a)todo_wine@5(a)or_broken@0 +(a)todo_wine@4(a)or_broken@0 +(a)todo_wine@1(a)or_broken@0 +0 +(a)todo_wine@5(a)or_broken@0 + -----------Testing del /a----------- not-r.test not found after delete, good r.test found before delete, good
participants (1)
-
Alexandre Julliard