From eb163a06d81d4b69965f70bc3e1f5081756b6208 Mon Sep 17 00:00:00 2001 From: Patrick Kloepfer Date: Sun, 10 Mar 2019 00:20:43 -0500 Subject: [PATCH] Updated MAKE with many changes in TEST. 1 issue added to list, updates to many TEST scripts. BUILDTEST now does 68 tests across 10-12 scripts. 2 tests deleted as they have been merged into other tests. --- .A2osX Issue List.xlsx | Bin 54776 -> 54915 bytes .Floppies/A2OSX.MAKE.po | Bin 33553920 -> 33553920 bytes Notes for Developers.md | 3 +- TESTS/BUILDTEST.txt | 6 + TESTS/FORTEST.txt | 16 ++- TESTS/IFDIRTEST.txt | 23 --- TESTS/IFFDTEST.txt | 41 ------ TESTS/IFFILETEST.txt | 172 +++++++++++++++++++--- TESTS/IFNUMTEST.txt | 309 ++++++++++++++++++++++++++++++++-------- TESTS/IFSTRTEST.txt | 122 ++++++++++++---- TESTS/LOG.txt | 33 +++-- TESTS/SHIFTTEST2.txt | 2 +- TESTS/TESTMENU.txt | 2 + 13 files changed, 549 insertions(+), 180 deletions(-) delete mode 100644 TESTS/IFDIRTEST.txt delete mode 100644 TESTS/IFFDTEST.txt diff --git a/.A2osX Issue List.xlsx b/.A2osX Issue List.xlsx index 4dbaeb8eefdc4eec000969ac824b64384d059874..0de5a9ae5096a506e72942f8836e8b6150b1d95f 100644 GIT binary patch delta 28774 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%0A;<*lrONC~amp%?kfes3*7M({P?%Pj6NN!HZ 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


}%P@&p&z=nIziK7WJAN}+HAQ)Y1jR0$?v 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 Jr~kk2{{SXWw0r;n delta 28623 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 SA^>U%)L9{iVw?Rx-~R(+@qA|h diff --git a/.Floppies/A2OSX.MAKE.po b/.Floppies/A2OSX.MAKE.po index e86524f37b21a52743fb3c724d0cc68e356fe0c9..49a283d29929a41bcf330718bea9b2ff06a50cad 100644 GIT binary patch delta 13539 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 ${Log} ECHO "\n----------------------------------------\n" >> ${Log} . IFZNTEST ECHO "\n----------------------------------------\n" >> ${Log} +. IFFILETEST +ECHO "\n----------------------------------------\n" >> ${Log} +. IFSTRTEST +ECHO "\n----------------------------------------\n" >> ${Log} +. IFNUMTEST +ECHO "\n----------------------------------------\n" >> ${Log} . CATTEST # # End of Tests diff --git a/TESTS/FORTEST.txt b/TESTS/FORTEST.txt index 1fd9544b..66c74080 100644 --- a/TESTS/FORTEST.txt +++ b/TESTS/FORTEST.txt @@ -6,9 +6,9 @@ AUTO 4,1 # This script tests the new FOR NEXT loop construct. # echo "\f\n\n FOR NEXT Tests" -echo "\n\nThis script tests the FOR var IN 'LIST' construct" -echo "as well as the FOR var IN 'FILE' construct. It also simulates" -echo "the FOR val in CMD construct by doing a SET var = CMD first." +echo "\n\nThis script tests the FOR var IN EXP construct" +echo "EXP can be a string of words separated by spaces, a file" +echo "or the results of a command." echo IF [ -N $Log ] ECHO "Begin FOR NEXT Tests" >> ${Log} @@ -27,6 +27,16 @@ FOR ITEM IN $LIST NEXT ECHO "I counted $COUNT items" ECHO "with a total of $TOTAL" +SET LIST = "1000 4567 -999 -9999 42 59000 -110000 60000 14" +SET COUNT = 0 +SET TOTAL = 0 +FOR ITEM IN $LIST + ECHO $ITEM + SET COUNT = $COUNT + 1 + SET TOTAL = $TOTAL + $ITEM +NEXT +ECHO "I counted $COUNT items" +ECHO "with a total of $TOTAL" SET LIST = "Remy Patrick Adam Admin Zeus Zero" SET COUNT = 0 FOR ITEM IN $LIST diff --git a/TESTS/IFDIRTEST.txt b/TESTS/IFDIRTEST.txt deleted file mode 100644 index a572344e..00000000 --- a/TESTS/IFDIRTEST.txt +++ /dev/null @@ -1,23 +0,0 @@ -NEW - PREFIX -AUTO 4,1 -#!/BIN/SH -# -# -# -echo \f IFDIRTEST Script -echo \n\n -echo Testing for this Dir -IF [ -D /PKA2OSX/TESTS ] - Echo Found Tests by full path -ELSE - Echo Tests Not Found -FI -echo Testing for /BLANK -IF [ -D /BLANK ] - Echo Found /Blank -ELSE - Echo No /BLANK -FI -MAN -TEXT /MAKE/USR/SHARE/TESTS/IFDIRTEST diff --git a/TESTS/IFFDTEST.txt b/TESTS/IFFDTEST.txt deleted file mode 100644 index c7316074..00000000 --- a/TESTS/IFFDTEST.txt +++ /dev/null @@ -1,41 +0,0 @@ -NEW - PREFIX -AUTO 4,1 -#!/BIN/SH -# -# -# -echo "\f IFFDTEST Script" -echo "\n\n" -echo "Testing for this File using -E" -IF [ -E /PKA2OSX/TESTS/IFFILETEST ] - Echo "Found by full path" -ELSE - Echo "Not Found" -FI -echo "Testing for this Dir using -E" -IF [ -E /PKA2OSX/TESTS ] - Echo "Found by full path" -ELSE - Echo "Not Found" -FI -echo "Testing for IFFILETEST" -IF [ -E IFFILETEST ] - Echo "Found" -ELSE - Echo "Not Found" -FI -echo "Testing for ../MANPAGES" -IF [ -E ../MANPAGES ] - Echo "Found" -ELSE - Echo "Not Found" -FI -echo "Testing for IFFILETEST2" -IF [ -E IFFILETEST2 ] - Echo "Found " -ELSE - Echo "Not Found" -FI -MAN -TEXT /MAKE/USR/SHARE/TESTS/IFFDTEST diff --git a/TESTS/IFFILETEST.txt b/TESTS/IFFILETEST.txt index 47e166fc..80e988b2 100644 --- a/TESTS/IFFILETEST.txt +++ b/TESTS/IFFILETEST.txt @@ -3,13 +3,16 @@ NEW AUTO 4,1 #!/BIN/SH # -# +# This script tests the File/Directory options of the +# IF script directive (-D -E -F). # echo "\f\n\n IF File Tests" echo "\n\nThis script tests that the IF -F (FILE) -D" echo "(DIRECTORY) and -E (either FILE or DIRECTORY)" echo "options perform as expected." echo +ECHO "Begin IF File Tests" +ECHO IF [ -N $Log ] ECHO "Begin IF File Tests" >> ${Log} ELSE @@ -21,33 +24,158 @@ FI # this should always work SET T = $T + 1 IF [ -F $0 ] - Echo "IF -F $0 True: Pased" + Echo "IF -F $0 True: Passed" + IF [ -N $Log ] + ECHO "IF -F $0 True: Passed" >> ${Log} + SET P = $P + 1 + FI ELSE - Echo "IF -F $0 False: Pased" + Echo "IF -F $0 False: Failed" + IF [ -N $Log ] + ECHO "IF -F $0 False: Failed" >> ${Log} + SET F = $F + 1 + FI FI # Next Test for BUILDTEST with -F which should be in current dir - -# Next Test for BUILDTEST with -E which should be in current dir - -# Next Test for BUILDTEST with -D which should fail as its a file - -# Next check for TESTDIR with -D a directory created for this test - -# Next check for TESTDIR with -E a directory created for this test - -# Next check for TESTDIR with -F which should fail as its a dir - -echo Testing for IFFILETEST -IF [ -F IFFILETEST ] - Echo Found +SET T = $T + 1 +IF [ -F BUILDTEST ] + Echo "IF -F BUILDTEST True: Passed" + IF [ -N $Log ] + ECHO "IF -F BUILDTEST True: Passed" >> ${Log} + SET P = $P + 1 + FI ELSE - Echo Not Found + Echo "IF -F BUILDTEST False: Failed" + IF [ -N $Log ] + ECHO "IF -F BUILDTEST False: Failed" >> ${Log} + SET F = $F + 1 + FI FI -echo Testing for IFFILETEST2 -IF [ -F IFFILETEST2 ] - Echo Found +# Next Test for BUILDTEST with -E which should be in current dir +SET T = $T + 1 +IF [ -E BUILDTEST ] + Echo "IF -E BUILDTEST True: Passed" + IF [ -N $Log ] + ECHO "IF -E BUILDTEST True: Passed" >> ${Log} + SET P = $P + 1 + FI ELSE - Echo Not Found + Echo "IF -E BUILDTEST False: Failed" + IF [ -N $Log ] + ECHO "IF -E BUILDTEST False: Failed" >> ${Log} + SET F = $F + 1 + FI +FI +# Next Test for BUILDTEST with -D which should fail as its a file +SET T = $T + 1 +IF [ -D BUILDTEST ] + Echo "IF -D BUILDTEST True: Failed" + IF [ -N $Log ] + ECHO "IF -D BUILDTEST True: Failed" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo "IF -D BUILDTEST False: Passed" + IF [ -N $Log ] + ECHO "IF -D BUILDTEST False: Passed" >> ${Log} + SET P = $P + 1 + FI +FI +# Next check for TESTDIR with -D a directory created for this test +SET T = $T + 1 +IF [ -D TESTDIR ] + Echo "IF -D TESTDIR True: Passed" + IF [ -N $Log ] + ECHO "IF -D TESTDIR True: Passed" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo "IF -D TESTDIR False: Failed" + IF [ -N $Log ] + ECHO "IF -D TESTDIR False: Failed" >> ${Log} + SET F = $F + 1 + FI +FI +# Next check for TESTDIR with -E a directory created for this test +SET T = $T + 1 +IF [ -E TESTDIR ] + Echo "IF -E TESTDIR True: Passed" + IF [ -N $Log ] + ECHO "IF -E TESTDIR True: Passed" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo "IF -E TESTDIR False: Failed" + IF [ -N $Log ] + ECHO "IF -E TESTDIR False: Failed" >> ${Log} + SET F = $F + 1 + FI +FI +# Next check for TESTDIR with -F which should fail as its a dir +SET T = $T + 1 +IF [ -F TESTDIR ] + Echo "IF -F TESTDIR True: Failed" + IF [ -N $Log ] + ECHO "IF -F TESTDIR True: Failed" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo "IF -F TESTDIR False: Passed" + IF [ -N $Log ] + ECHO "IF -F TESTDIR False: Passed" >> ${Log} + SET P = $P + 1 + FI +FI +# Next Test for BUILDTEST2 with -F which should fail non-existant +SET T = $T + 1 +IF [ -F BUILDTEST2 ] + Echo "IF -F BUILDTEST2 True: Failed" + IF [ -N $Log ] + ECHO "IF -F BUILDTEST2 True: Failed" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo "IF -F BUILDTEST2 False: Passed" + IF [ -N $Log ] + ECHO "IF -F BUILDTEST2 False: Passed" >> ${Log} + SET P = $P + 1 + FI +FI +# Next Test for BUILDTEST2 with -E which should fail non-existant +SET T = $T + 1 +IF [ -E BUILDTEST2 ] + Echo "IF -E BUILDTEST2 True: Failed" + IF [ -N $Log ] + ECHO "IF -E BUILDTEST2 True: Failed" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo "IF -E BUILDTEST2 False: Passed" + IF [ -N $Log ] + ECHO "IF -E BUILDTEST2 False: Passed" >> ${Log} + SET P = $P + 1 + FI +FI +# Next Test for BUILDTEST2 with -D which should fail non-existant +SET T = $T + 1 +IF [ -D BUILDTEST2 ] + Echo "IF -D BUILDTEST2 True: Failed" + IF [ -N $Log ] + ECHO "IF -D BUILDTEST2 True: Failed" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo "IF -D BUILDTEST2 False: Passed" + IF [ -N $Log ] + ECHO "IF -D BUILDTEST2 False: Passed" >> ${Log} + SET P = $P + 1 + FI +FI +# Done IF File Testing +ECHO "\nEnd of IF File Tests\n" +ECHO +IF [ -N $Log ] + ECHO "End IF File Tests" >> ${Log} FI MAN TEXT /MAKE/USR/SHARE/TESTS/IFFILETEST diff --git a/TESTS/IFNUMTEST.txt b/TESTS/IFNUMTEST.txt index b0c548c3..68fcb045 100644 --- a/TESTS/IFNUMTEST.txt +++ b/TESTS/IFNUMTEST.txt @@ -3,94 +3,289 @@ NEW AUTO 4,1 #!/BIN/SH # +# This script tests the Numeric comparison options of the +# IF directive in shell. # # -ECHO "\f If Numeric Tests" -ECHO "\nThis Performs Several Numeric Comparison Tests" -ECHO -N "\n Test 1: 99 = 99 " -IF [ 99 -eq 99 ] -echo True Pass +ECHO "\f\n\n If Numeric Tests" +ECHO "\n\nThis Performs Several Numeric Comparison Tests" +ECHO +ECHO "Begin IF Numeric Tests" +ECHO +IF [ -N $Log ] + ECHO "Begin IF Numeric Tests" >> ${Log} ELSE -echo False Fail + SET T = 0 + SET F = 0 + SET P = 0 FI -ECHO -N " Test 2: 99 = 79 " -IF [ 99 -eq 79 ] -echo True Fail +# First test that 2 of the same constants numbers are equal each other. +SET T = $T + 1 +IF [ 99 -EQ 99 ] + Echo " Test 1 99 -EQ 99 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 1 99 -EQ 99 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo False Pass + Echo " Test 1 99 -EQ 99 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 1 99 -EQ 99 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 3: 99 <> 99 " +# Second Test that 2 unique numbers fail -EQ test. +SET T = $T + 1 +IF [ 99 -EQ 79 ] + Echo " Test 2 99 -EQ 79 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 2 99 -EQ 79 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo " Test 2 99 -EQ 79 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 2 99 -EQ 79 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI +FI +# Third Test Same Number -NE option +SET T = $T + 1 IF [ 99 -NE 99 ] -echo True Fail + Echo " Test 3 99 -NE 99 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 3 99 -NE 99 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI ELSE -echo False Pass + Echo " Test 3 99 -NE 99 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 3 99 -NE 99 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 4: 99 <> 79 " +# Forth test different numbers -NE option +SET T = $T + 1 IF [ 99 -NE 79 ] -echo True Pass + Echo " Test 4 99 -NE 79 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 4 99 -NE 79 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo False Fail + Echo " Test 4 99 -NE 79 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 4 99 -NE 79 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 5: 99 < 79 " +# Fifth Test 99 < 79 +SET T = $T + 1 IF [ 99 -LT 79 ] -ECHO True Fail -ELSE -ECHO False Pass + Echo " Test 5 99 -LT 79 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 5 99 -LT 79 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo " Test 5 99 -LT 79 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 5 99 -LT 79 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 6: 79 < 99 " +# Sixth Test 79 < 99 +SET T = $T + 1 IF [ 79 -LT 99 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 6 79 -LT 99 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 6 79 -LT 99 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 6 79 -LT 99 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 6 79 -LT 99 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 7: 99 <= 79 " +# Seventh Test 99 <= 79 +SET T = $T + 1 IF [ 99 -LE 79 ] -ECHO True Fail -ELSE -ECHO False Pass + Echo " Test 7 99 -LE 79 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 7 99 -LE 79 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo " Test 7 99 -LE 79 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 7 99 -LE 79 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 8: 79 <= 99 " +# Eighth Test 79 <= 99 +SET T = $T + 1 IF [ 79 -LE 99 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 8 79 -LE 99 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 8 79 -LE 99 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 8 79 -LE 99 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 8 79 -LE 99 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 9: 99 <= 99 " +# Nineth Test 99 <= 99 +SET T = $T + 1 IF [ 99 -LE 99 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 9 99 -LE 99 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 9 99 -LE 99 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 9 99 -LE 99 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 9 99 -LE 99 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 10: 99 > 79 " +# Tenth Test 99 > 79 +SET T = $T + 1 IF [ 99 -GT 79 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 10 99 -GT 79 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 10 99 -GT 79 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 10 99 -GT 79 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 10 99 -GT 79 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 11: 79 > 99 " +# Eleventh Test 79 > 99 +SET T = $T + 1 IF [ 79 -GT 99 ] -ECHO True Fail -ELSE -ECHO False Pass + Echo " Test 11 79 -GT 99 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 11 79 -GT 99 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo " Test 11 79 -GT 99 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 11 79 -GT 99 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 12: 99 => 79 " +# Twelveth Test 99 => 79 +SET T = $T + 1 IF [ 99 -GE 79 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 12 99 -GE 79 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 12 99 -GE 79 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 12 99 -GE 79 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 12 99 -GE 79 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 13: 79 => 99 " +# Thirteenth Test 79 => 99 +SET T = $T + 1 IF [ 79 -GE 99 ] -ECHO True Fail -ELSE -ECHO False Pass + Echo " Test 13 79 -GE 99 : True : FAILED" + IF [ -N $Log ] + ECHO "Test 13 79 -GE 99 : True : FAILED" >> ${Log} + SET F = $F + 1 + FI +ELSE + Echo " Test 13 79 -GE 99 : False : PASSED" + IF [ -N $Log ] + ECHO "Test 13 79 -GE 99 : False : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 14: 99 => 99 " +# Fourteenth Test 99 => 99 +SET T = $T + 1 IF [ 99 -GE 99 ] -ECHO True Pass -ELSE -ECHO False Fail + Echo " Test 14 99 -GE 99 : True : PASSED" + IF [ -N $Log ] + ECHO "Test 14 99 -GE 99 : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 14 99 -GE 99 : False : FAILED" + IF [ -N $Log ] + ECHO "Test 14 99 -GE 99 : False : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO "\n End of Test\n" +# Fifteenth Test Dec Var to Constant Int +SET ABC = 1234.4321 +SET T = $T + 1 +IF [ $ABC -EQ 1234 ] + Echo " Test 15 Dec Var to Int : True : PASSED" + IF [ -N $Log ] + ECHO "Test 15 Dec Var to Int : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 15 Dec Var to Int : False : FAILED" + IF [ -N $Log ] + ECHO "Test 15 Dec Var to Int : False : FAILED" >> ${Log} + SET F = $F + 1 + FI +FI +# Sixteenth Test Upper Limit Rollover +SET ABC = 2147483645 +SET DEF = $ABC + 3 +SET T = $T + 1 +IF [ $DEF -EQ -2147483648 ] + Echo " Test 16 Upper Rollover : True : PASSED" + IF [ -N $Log ] + ECHO "Test 16 Upper Rollover : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 16 Upper Rollover : False : FAILED" + IF [ -N $Log ] + ECHO "Test 16 Upper Rollover : False : FAILED" >> ${Log} + SET F = $F + 1 + FI +FI +# Seventeenth Test Lower Limit Rollover +SET GHI = $DEF - 5 +SET T = $T + 1 +IF [ $GHI -EQ 2147483643 ] + Echo " Test 17 Lower Rollover : True : PASSED" + IF [ -N $Log ] + ECHO "Test 17 Lower Rollover : True : PASSED" >> ${Log} + SET P = $P + 1 + FI +ELSE + Echo " Test 17 Lower Rollover : False : FAILED" + IF [ -N $Log ] + ECHO "Test 17 Lower Rollover : False : FAILED" >> ${Log} + SET F = $F + 1 + FI +FI +ECHO +ECHO "End IF Numeric Tests" +ECHO +IF [ -N $Log ] + ECHO "End IF Numeric Tests" >> ${Log} +FI +SET ABC = +SET DEF = +SET GHI = MAN TEXT /MAKE/USR/SHARE/TESTS/IFNUMTEST diff --git a/TESTS/IFSTRTEST.txt b/TESTS/IFSTRTEST.txt index 2b4cd3ef..23fdc4af 100644 --- a/TESTS/IFSTRTEST.txt +++ b/TESTS/IFSTRTEST.txt @@ -3,47 +3,121 @@ NEW AUTO 4,1 #!/BIN/SH # -# +# This script tests the String comparison options of the +# IF directive in shell. # #!/BIN/SH -ECHO "\f IF String Tests" -ECHO "\nThis Performs Several String Comparison Tests\n" -ECHO -N " Test 1 ABC = ABC : " +ECHO "\f\n\n IF String Tests" +ECHO "\n\nThis Performs Several String Comparison Tests" +ECHO +ECHO "Begin IF String Tests" +ECHO +IF [ -N $Log ] + ECHO "Begin IF String Tests" >> ${Log} +ELSE + SET T = 0 + SET F = 0 + SET P = 0 +FI +# First test that 2 of the same constants equal each other. +SET T = $T + 1 IF [ "ABC" = "ABC" ] -echo PASSED + Echo " Test 1 ABC = ABC : PASSED" + IF [ -N $Log ] + ECHO "Test 1 ABC = ABC : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo FAILED + Echo " Test 1 ABC = ABC : FAILED" + IF [ -N $Log ] + ECHO "Test 1 ABC = ABC : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 2 ABC not DEF : " +# Second Test that 2 unique constants are not equal. +SET T = $T + 1 IF [ "ABC" != "DEF" ] -echo PASSED + Echo " Test 2 ABC != DEF : PASSED" + IF [ -N $Log ] + ECHO "Test 2 ABC != DEF : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo FAILED + Echo " Test 2 ABC != DEF : FAILED" + IF [ -N $Log ] + ECHO "Test 2 ABC != DEF : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 3 ABC = ABCD : " +# Third test 2 similar but unequal constants are not equal. +SET T = $T + 1 IF [ "ABC" = "ABCD" ] -echo FAILED + Echo " Test 3 ABC = ABCD : FAILED" + IF [ -N $Log ] + ECHO "Test 3 ABC = ABCD : FAILED" >> ${Log} + SET F = $F + 1 + FI ELSE -echo PASSED + Echo " Test 3 ABC = ABCD : PASSED" + IF [ -N $Log ] + ECHO "Test 3 ABC = ABCD : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 4 ABC not ABC : " +# Fourth test the same constants to be not equal to test for false. +SET T = $T + 1 IF [ "ABC" != "ABC" ] -echo FAILED + Echo " Test 4 ABC != ABC : FAILED" + IF [ -N $Log ] + ECHO "Test 4 ABC != ABC : FAILED" >> ${Log} + SET F = $F + 1 + FI ELSE -echo PASSED + Echo " Test 4 ABC != ABC : PASSED" + IF [ -N $Log ] + ECHO "Test 4 ABC != ABC : PASSED" >> ${Log} + SET P = $P + 1 + FI FI -ECHO -N " Test 5 -N Bad Var : " -IF [ -N $ABC ] -echo FAILED +# Fifth test compare VAR to constant to be equal. +SET ABC = "ABC" +SET T = $T + 1 +IF [ $ABC = "ABC" ] + Echo " Test 5 VAR = ABC : PASSED" + IF [ -N $Log ] + ECHO "Test 5 VAR = ABC : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo PASSED + Echo " Test 5 VAR = ABC : FAILED" + IF [ -N $Log ] + ECHO "Test 5 VAR = ABC : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO -N " Test 6 -Z Bad Var : " -IF [ -Z $ABC ] -echo PASSED +# Sixth test compare complex VAR to constant to be equal. +SET ABC = "ABC" +SET DEF = "${ABC}123${ABC}456${ABC}" +SET T = $T + 1 +IF [ $DEF = "ABC123ABC456ABC" ] + Echo " Test 6 Complex VAR = ABC123ABC456ABC : PASSED" + IF [ -N $Log ] + ECHO "Test 6 Complex VAR = ABC123ABC456ABC : PASSED" >> ${Log} + SET P = $P + 1 + FI ELSE -echo FAILED + Echo " Test 6 Complex VAR = ABC123ABC456ABC : FAILED" + IF [ -N $Log ] + ECHO "Test 6 Complex VAR = ABC123ABC456ABC : FAILED" >> ${Log} + SET F = $F + 1 + FI FI -ECHO "\n End of Test\n" +ECHO "\nEnd IF String Tests" +ECHO +IF [ -N $Log ] + ECHO "End IF String Tests" >> ${Log} +FI +SET ABC = +SET DEF = MAN TEXT /MAKE/USR/SHARE/TESTS/IFSTRTEST diff --git a/TESTS/LOG.txt b/TESTS/LOG.txt index 697707ce..485b74b8 100644 --- a/TESTS/LOG.txt +++ b/TESTS/LOG.txt @@ -3,15 +3,32 @@ NEW AUTO 4,1 #!/BIN/SH # -IF [ $# -GT 0 ] - IF [ $1 -GT 0 ] - SET B = $1 - ELSE - ECHO "Syntax Error" - FI -ELSE +# This script will display the output of a BUILDTEST log file using MORE +# +SET B = $1 +IF [ -Z $B ] READ -P "WHICH BUILD: " B FI -MORE ${ROOT}VAR/LOG/TESTS/BUILD.${B} +IF [ -Z $B ] + ECHO "You did not enter any response." + ECHO + ECHO "Press Return to Continue" + PAUSE + EXIT +FI +IF [ -F ${ROOT}VAR/LOG/TESTS/BUILD.${B} ] + MORE ${ROOT}VAR/LOG/TESTS/BUILD.${B} + ECHO + ECHO + ECHO "Press Return to Continue" + PAUSE +ELSE + ECHO + ECHO + ECHO "No Log exists for ${B}" + ECHO + ECHO "Press Return to Continue" + PAUSE +FI MAN TEXT /MAKE/USR/SHARE/TESTS/LOG diff --git a/TESTS/SHIFTTEST2.txt b/TESTS/SHIFTTEST2.txt index 064934a8..d3496eb3 100644 --- a/TESTS/SHIFTTEST2.txt +++ b/TESTS/SHIFTTEST2.txt @@ -16,7 +16,7 @@ ECHO 6 Parm is $6 ECHO 7 Parm is $7 ECHO 8 Parm is $8 ECHO 9 Parm is $9 -ECHO Parm Countis $# +ECHO Parm Count is $# Echo All Parms is $* echo Process ID is $$ echo begin shift test - SHIFT 3 TIMES diff --git a/TESTS/TESTMENU.txt b/TESTS/TESTMENU.txt index 5475c84f..5b2c40d6 100644 --- a/TESTS/TESTMENU.txt +++ b/TESTS/TESTMENU.txt @@ -21,6 +21,8 @@ ECHO " 9) Build Test Suite with Logging" ECHO "\n 0) Exit Test System" ECHO "\n" READ -P "Enter Choice: " Z +ECHO +ECHO IF [ $Z = "1" ] CORETEST ELSE