cmd/tests: Add FOR /A tests (resend)

Frédéric Delanoy frederic.delanoy at gmail.com
Thu Aug 4 09:01:48 CDT 2011


Intermittent testbot glitch
---
 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 2321e12..397ff6a 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 c430883..a61c7d2 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 at ErrorLevel 0
 @todo_wine at ErrorLevel 0
+...for /a
+......individual operations
+0
+ at todo_wine@3
+ at todo_wine@-1
+ at todo_wine@3
+ at todo_wine@6
+ at todo_wine@10
+ at todo_wine@4
+ at todo_wine@4
+ at todo_wine@-4
+0
+ at todo_wine@2
+ at todo_wine@2
+ at todo_wine@-2
+ at todo_wine@1
+ at todo_wine@4
+0 at or_broken@1073741824
+0 at or_broken@-1073741824
+ at todo_wine@-4
+ at todo_wine@9
+ at todo_wine@2
+0
+ at todo_wine@-1
+ at todo_wine@-3
+0
+ at todo_wine@1
+ at todo_wine@1
+ at todo_wine@4
+ at todo_wine@1
+ at todo_wine@5
+ at todo_wine@5
+ at todo_wine@7
+ at todo_wine@5
+ at todo_wine@5
+ at todo_wine@5
+ at todo_wine@4
+ at todo_wine@6
+ at todo_wine@1
+......precedence and grouping
+ at todo_wine@4
+ at todo_wine@10
+ at todo_wine@18 at or_broken@10
+ at todo_wine@2 at or_broken@0
+ at todo_wine@2 at or_broken@0
+0 at or_broken@4
+ at todo_wine@4
+ at todo_wine@3 at or_broken@4
+......octal and hexadecimal
+ at todo_wine@3 at or_broken@4
+ at todo_wine@18
+ at todo_wine@18
+ at todo_wine@15
+......variables
+ at todo_wine@3
+ at todo_wine@3 at or_broken@foo not defined
+ at todo_wine@3 at or_broken@0
+ at todo_wine@3 at or_broken@0
+ at todo_wine@3 at or_broken@0
+ at todo_wine@9 at or_broken@0
+0
+ at todo_wine@4 at or_broken@0
+ at todo_wine@-7 at or_broken@0
+ at todo_wine@-1 at or_broken@0
+ at todo_wine@5 at or_broken@0
+ at todo_wine@4 at or_broken@0
+ at todo_wine@1 at or_broken@0
+0
+ at todo_wine@5 at or_broken@0
+
 -----------Testing del /a-----------
 not-r.test not found after delete, good
 r.test found before delete, good
-- 
1.7.6




More information about the wine-patches mailing list