mirror of
https://github.com/ThomasDickey/mawk-snapshots.git
synced 2026-01-28 03:44:25 +00:00
182 lines
4.5 KiB
Batchfile
182 lines
4.5 KiB
Batchfile
@echo off
|
|
rem $MawkId: mawktest.bat,v 1.18 2024/08/12 23:57:28 tom Exp $
|
|
rem vile:rs=lf
|
|
rem
|
|
rem ##########################################################################
|
|
rem copyright 2010-2020,2024 Thomas E. Dickey
|
|
rem copyright 1996, Michael D. Brennan
|
|
rem
|
|
rem This is a source file for mawk, an implementation of
|
|
rem the AWK programming language.
|
|
rem
|
|
rem Mawk is distributed without warranty under the terms of
|
|
rem the GNU General Public License, version 2, 1991.
|
|
rem ##########################################################################
|
|
rem
|
|
rem This is a simple test check if a newly built mawk is working properly.
|
|
rem It's certainly not exhaustive!
|
|
rem
|
|
rem It must be run from mawk/test.
|
|
rem You also need a binary-compare utility, e.g., "cmp".
|
|
setlocal
|
|
|
|
set dat=mawktest.dat
|
|
if %CMP%.==. set CMP=cmp
|
|
|
|
set PROG=..\mawk
|
|
set MAWKBINMODE=7
|
|
|
|
set STDOUT=temp$$
|
|
|
|
rem find out which mawk we're testing
|
|
%PROG% -Wv
|
|
|
|
rem ################################
|
|
|
|
call :begin testing input and field splitting
|
|
|
|
%PROG% -f null-rs.awk null-rs.dat > %STDOUT%
|
|
call :compare "null-rs.awk" %STDOUT% null-rs.out
|
|
|
|
%PROG% -f wc.awk %dat% > %STDOUT%
|
|
call :compare "wc.awk" %STDOUT% wc-awk.out
|
|
|
|
call :cmpsp2 "(a?)*b" "a*b"
|
|
call :cmpsp2 "(a?)+b" "a*b"
|
|
call :cmpsp2 "[^^]" "(.)"
|
|
rem call :cmpsp2 "[^]]" "[[#a-zA-Z0-9/*!=<>+,;.&_%(){}" -]"
|
|
call :cmpsp2 "[a[]" "[[a]"
|
|
rem call :cmpsp2 "(])" "[]]"
|
|
call :chkone "[\"
|
|
rem call :cmpsp2 "(^)?)" ")"
|
|
call :cmpsp3 "a*+" "a*"
|
|
|
|
%PROG% -F "\000" -f nulls0.awk mawknull.dat > %STDOUT%
|
|
%PROG% -F "[\000 ]" -f nulls0.awk mawknull.dat >> %STDOUT%
|
|
call :compare "nulls" %STDOUT% nulls.out
|
|
|
|
rem ####################################
|
|
|
|
call :begin testing regular expression matching
|
|
%PROG% -f reg0.awk %dat% > %STDOUT%
|
|
%PROG% -f reg1.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg2.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg3.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg4.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg5.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg6.awk %dat% >> %STDOUT%
|
|
%PROG% -f reg7.awk %dat% >> %STDOUT%
|
|
call :compare "reg0-reg7" %STDOUT% reg-awk.out
|
|
|
|
echo ''Italics with an apostrophe' embedded'' | %PROG% -f noloop.awk
|
|
echo ''Italics with an apostrophe'' embedded'' | %PROG% -f noloop.awk
|
|
|
|
%PROG% "/^[^^]*$/" %dat% > %STDOUT%
|
|
call :compare "case 1" %STDOUT% %dat%
|
|
|
|
rem call :cmpsp0 "!/^[^]]*$/" "/]/"
|
|
rem call :cmpsp0 "/[a[]/" "/[[a]/"
|
|
rem call :cmpsp0 "/]/" "/[]]/"
|
|
|
|
rem ######################################
|
|
|
|
call :begin testing arrays and flow of control
|
|
%PROG% -f wfrq0.awk %dat% > %STDOUT%
|
|
call :compare "array-test" %STDOUT% wfrq-awk.out
|
|
|
|
rem ######################################
|
|
|
|
call :begin testing nextfile
|
|
%PROG% -f nextfile.awk full-awk.dat %dat% > %STDOUT%
|
|
call :compare "nextfile-test" %STDOUT% nextfile.out
|
|
|
|
rem ######################################
|
|
|
|
call :begin testing interval-expressions
|
|
%PROG% -f repetitions.awk repetitions.dat > %STDOUT%
|
|
call :compare "repetitions-test" %STDOUT% repetitions.out
|
|
|
|
%PROG% -f interval0.awk repetitions.dat > %STDOUT%
|
|
call :compare "empty-intervals-test" %STDOUT% interval0.out
|
|
|
|
rem ################################
|
|
|
|
call :begin testing function calls and general stress test
|
|
%PROG% -f ../examples/decl.awk %dat% > %STDOUT%
|
|
call :compare "general" %STDOUT% decl-awk.out
|
|
|
|
rem ######################################
|
|
|
|
call :begin testing character classes
|
|
%PROG% -f cclass.awk mawktest.dat > %STDOUT%
|
|
call :compare "character-classes" %STDOUT% cclass.out
|
|
|
|
rem ######################################
|
|
|
|
echo.
|
|
echo if %CMP% always encountered "no differences", then the tested mawk seems OK
|
|
|
|
del %STDOUT%
|
|
|
|
endlocal
|
|
goto :eof
|
|
|
|
:cmpsp0
|
|
echo ...checking %1 vs %2
|
|
%PROG% -F "%1" %dat% > %STDOUT%
|
|
%PROG% -F "%2" %dat% | cmp -s - %STDOUT%
|
|
if errorlevel 1 goto :errsp0
|
|
echo ...ok
|
|
goto :eof
|
|
:errsp0
|
|
echo ...fail
|
|
goto :eof
|
|
|
|
:chkone
|
|
echo ...checking %1
|
|
%PROG% -F "%1" 2> %STDOUT%
|
|
if errorlevel 1 goto :errsp1
|
|
echo ...ok
|
|
goto :eof
|
|
:errsp1
|
|
echo ...fail
|
|
goto :eof
|
|
|
|
:cmpsp2
|
|
echo ...checking %1 vs %2
|
|
%PROG% -F "%1" -f wc.awk %dat% > %STDOUT%
|
|
%PROG% -F "%2" -f wc.awk %dat% | cmp -s - %STDOUT%
|
|
if errorlevel 1 goto :errsp2
|
|
echo ...ok
|
|
goto :eof
|
|
:errsp2
|
|
echo ...fail
|
|
goto :eof
|
|
|
|
:cmpsp3
|
|
echo ...checking %1 vs %2
|
|
%PROG% -F "%1" "{print NF}" > %STDOUT%
|
|
%PROG% -F "%2" "{print NF}" | cmp -s - %STDOUT%
|
|
if errorlevel 1 goto :errsp3
|
|
echo ...ok
|
|
goto :eof
|
|
:errsp3
|
|
echo ...fail
|
|
goto :eof
|
|
|
|
:begin
|
|
echo.
|
|
echo %*
|
|
goto :eof
|
|
|
|
:compare
|
|
set TESTNAME=%1
|
|
echo ...checking %2 %3
|
|
%CMP% %2 %3
|
|
if errorlevel 1 goto :failed
|
|
echo ...ok
|
|
goto :eof
|
|
:failed
|
|
echo ...fail
|
|
goto :eof
|