zOs/REXX.O13/PITEST
/* copy piTest begin ************************************************/
m.trace = 0
call wrIni 0
if 1 then call wrTestAll
if 1 then call rsTest
if 1 then call piTest
exit
piTest: procedure expose m.
call piTestPipe
call piTestSeq
call piTestComp
return
endProcedure piTest
piTestComp: procedure expose m.
pT = wrNew()
pR = wrNew('piTestComp')
call outPush pT
call wrTest pT,
, "--- rsTestComp1 s pi1 ==> 2 lines call piWC ""ch1 li"",",
|| " ""ch1 op"", ""ch1 cl """,
, "--- running s pi1 without pipe",
, "ch2 op",
, "ch2 li ch1 op",
, "ch2 li ch1 cl 0 lines and 0 characters",
, "ch2 cl 2 lines and 38 characters",
, "--- running s pi1 piping",
, "ch2 op",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach writeLN two */
, "ch2 li ch1 op",
, "ch2 li ch1 li writeLn line one",
, "ch2 li ch1 li writeLn line two",
, "ch2 li ch1 cl 2 lines and 32 characters",
, "ch2 cl 4 lines and 85 characters"
call piTestComp1 's pi1', wrArgs('xyz',0,
, ' call piWC "ch1 li", "ch1 op", "ch1 cl "',
, '$! call piWC "ch2 li", "ch2 op", "ch2 cl "')
call wrTest pT,
, "--- rsTestComp1 s pi2 ==> 6 lines $:{ call piWC ""ch1 li",
|| """, ""ch1 op"", ""ch1 cl """,
, "--- running s pi2 without pipe",
, "ch1 op",
, "ch1 li line eins",
, "ch1 li leine zwei",
, "ch1 cl 2 lines and 19 characters",
, "ch2 op",
, "ch2 cl 0 lines and 0 characters",
, "--- running s pi2 piping",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach zwei */
, "ch1 op",
, "ch1 li line eins",
, "ch1 li leine zwei",
, "ch1 cl 2 lines and 19 characters",
, "ch2 op",
, "ch2 cl 0 lines and 0 characters"
call piTestComp1 's pi2', wrArgs('xyz',0,
, '$:{ call piWC "ch1 li", "ch1 op", "ch1 cl "',
, ' $; call piWC "ch2 li", "ch2 op", "ch2 cl "',
, '$:} $<<e1 ', 'line eins', 'leine zwei',
, 'e1 ')
call wrTest pT,
, "--- rsTestComp1 s pi3 ==> 3 lines $:{ call piWC ""ch1 li",
|| """, ""ch1 op"", ""ch1 cl """,
, "--- running s pi3 without pipe",
, "ch1 op",
, "ch1 cl 0 lines and 0 characters",
, "ch2 op",
, "ch2 cl 0 lines and 0 characters",
, "--- running s pi3 piping",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach two */
, "ch1 op",
, "ch1 li writeLn line one",
, "ch1 li writeLn line two",
, "ch1 cl 2 lines and 32 characters",
, "ch2 op",
, "ch2 cl 0 lines and 0 characters"
call piTestComp1 's pi3', wrArgs('xyz',0,
, '$:{ call piWC "ch1 li", "ch1 op", "ch1 cl "',
, ' $; call piWC "ch2 li", "ch2 op", "ch2 cl "',
, ' $:} ')
call wrTest pT,
, "--- rsTestComp1 s pi4 ==> 1 lines $:li $| ""liEins<"" m.li",
|| "ne "">liEins""",
, "--- running s pi4 without pipe",
, "--- running s pi4 piping",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach liEins */
, "liEins< writeLn line one >liEins",
, "liEins< writeLn line two >liEins",
call piTestComp1 's pi4', wrArgs('xyz',0,
, '$:li $| "liEins<" m.line ">liEins"')
call wrTest pT,
, "--- rsTestComp1 s pi5 ==> 2 lines $$ liZwei open ",
, "--- running s pi5 without pipe",
, " liZwei open ",
, " liZwei close",
, "--- running s pi5 piping",
, " liZwei open ",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nch >liZwei */
, "liZwei< writeLn line one >liZwei",
, "liZwei< writeLn line two >liZwei",
, " liZwei close"
call piTestComp1 's pi5', wrArgs('xyz',0,
, '$$ liZwei open ',
, '$:li $| "liZwei<" m.line ">liZwei" $:cl $$ liZwei close')
call wrTest pT,
, "--- rsTestComp1 s pi6 ==> 2 lines $$ inDrei open ",
, "--- running s pi6 without pipe",
, " inDrei open ",
, " inDrei close",
, "--- running s pi6 piping",
, " inDrei open ",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach >inDrei */
, "inDrei< writeLn line one >inDrei",
, "inDrei< writeLn line two >inDrei",
, " inDrei close"
call piTestComp1 's pi6', wrArgs('xyz',0,
, '$$ inDrei open ',
, '$:in m.line="inDrei<" m.line ">inDrei" $:cl $$ inDrei close')
call wrTest pT,
, "--- rsTestComp1 s pi7 ==> 3 lines $$ wrVier open ",
, "--- running s pi7 without pipe",
, " wrVier open ",
, " wrVier close",
, "--- running s pi7 piping",
, " wrVier open ",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach line one */
, "wrVier stem.2 first writeLn line one",
, " wrVier close"
call piTestComp1 's pi7', wrArgs('xyz',0,
, '$$ wrVier open ',
, '$:wr $| "wrVier stem."m.stem.0 "first" m.stem.1',
, ' $:cl $$ wrVier close')
call wrTest pT,
, "--- rsTestComp1 s pi8 ==> 5 lines call piWC ""ch1 li"",",
|| " ""ch1 op"", ""ch1 cl """,
, "--- running s pi8 without pipe",
, "ch2 op",
, "ch2 li wrFuenf open ",
, "ch2 li wrFuenf stem.2 first ch1 op",
, "ch2 li wrFuenf close",
, "ch2 cl 3 lines and 55 characters",
, "--- running s pi8 piping",
, "ch2 op",
, "--- writing 2 lines",
, "--- closing run", /* wkOld war nach two */
, "ch2 li wrFuenf open ",
, "ch2 li wrFuenf stem.4 first ch1 op",
, "ch2 li wrFuenf close",
, "ch2 cl 3 lines and 55 characters"
call piTestComp1 's pi8', wrArgs('xyz',0,
, ' call piWC "ch1 li", "ch1 op", "ch1 cl "',
, '$! $$ wrFuenf open ',
, ' $:wr $| "wrFuenf stem."m.stem.0 "first" m.stem.1',
, ' $:cl $$ wrFuenf close',
, '$! call piWC "ch2 li", "ch2 op", "ch2 cl "')
call outPop
call wrTestTotal pT
return
endProcedure piTestComp
piTestComp1:
parse arg typ, st
call wrTestOut pT, 'rsTestComp1' typ '==>' m.st.0 'lines' m.st.1
code = rsCompile(pC, st, left(typ, 1)'p') /* nur mit pipe | */
say 'code' code
call wrTestOut pT, 'running' typ 'without pipe'
call rsRun code
call wrTestOut pT, 'running' typ 'piping'
call outPush , pR
call rsRun code
call wrTestOut pT, 'writing 2 lines'
call writeLn pR, 'writeLn line one', 'writeLn line two'
call wrTestOut pT, 'closing run'
call wrClose pR
call outPop
call wrClose pT
return
endProcedure piTestComp1
piTestSeq: procedure expose m.
pT = wrNew()
call outPush pT
sq = piSeqNew()
call piSeqAdd sq, 'call outLn "first seq"'
call piSeqAdd sq, 'call outLn "second seq"'
call piSeqAdd sq, 'call piWC "seq3 li", "seq3 op", "seq3 cl"'
call piSeqAdd sq, 'call outLn "four th seq"'
call piSeqAdd sq, 'call piWC "seq5 li", "seq5 op", "seq5 cl"'
call piSeqAdd sq, 'call outLn "six th seq end"'
call wrTest pT,
, "--- before piSeq immediate",
, "first seq",
, "second seq",
, "seq3 op",
, "seq3 cl 0 lines and 0 characters",
, "four th seq",
, "seq5 op",
, "seq5 cl 0 lines and 0 characters",
, "six th seq end",
, "--- before piSeq close"
call wrTestOut pt, 'before piSeq immediate'
call piSeq sq
call wrTestOut pt, 'before piSeq close'
call wrClose sq
call wrClose pT
call outPop
pp = wrNew('abc')
call outPush pT, pP
call wrTest pT,
, "--- before piSeq in pipe no write",
, "--- before piSeq close",
, "first seq",
, "second seq",
, "seq3 op",
, "seq3 cl 0 lines and 0 characters",
, "four th seq",
, "seq5 op",
, "seq5 cl 0 lines and 0 characters",
, "six th seq end"
call wrTestOut pt, 'before piSeq in pipe no write'
call piSeq sq
call wrTestOut pt, 'before piSeq close'
call wrClose pp
call wrClose pT
call wrTest pT,
, "--- before piSeq in pipe 2 writes",
, "--- before write",
, "--- before piSeq close", /* wkOld war nach before close*/
, "first seq",
, "second seq",
, "seq3 op",
, "seq3 li writeLn line one",
, "seq3 li and two before close",
, "seq3 cl 2 lines and 36 characters",
, "four th seq",
, "seq5 op",
, "seq5 cl 0 lines and 0 characters",
, "six th seq end"
call wrTestOut pt, 'before piSeq in pipe 2 writes'
call piSeq sq
call wrTestOut pt, 'before write'
call writeLn pp, 'writeLn line one', 'and two before close'
call wrTestOut pt, 'before piSeq close'
call wrClose pp
call wrClose pT
call outPop
call wrTestTotal pT
return
endProcedure piTestSeq
piTestPipe: procedure expose m.
pT = wrNew()
pR = wrNew('abc')
call outPush pT, pR
call wrTest pT,
, "--- piTest begin pipe(1) no wrDefine",
, "zeile eins aus pipe(1)",
, "zeile drei aus pipe(1)",
, "vier und Schluss",
, "--- piTest begin pipe(1) with wrDefine",
, "zeile eins aus pipe(1)",
, "--- before piCh1 piWriClose",
, "zeile drei aus pipe(1) nach wrDefine",
, "vier",
, "--- before piCh1 piEnd",
, "--- after piCh1 piEnd",
, "piCh1 line writeLn pp zwei",
, "piCh1 line writeLn pp fuenf", /* wkOld alt nach drei */
, "piCh1 line writeLn pp sechs nach piEnd",
, "piCh1 line sieben vor close",
, "close piCh1"
call wrTestOut pT, 'piTest begin pipe(1) no wrDefine'
pp = piNew(1)
call piBegin pp
call outLn 'zeile eins aus pipe(1)'
call writeLn pp, 'writeLn pp zwei, disappear no wrDefine'
call outLn 'zeile drei aus pipe(1)', 'vier und Schluss'
call piEnd pp, 1
call wrTestOut pT, 'piTest begin pipe(1) with wrDefine'
call piBegin pp
call outLn 'zeile eins aus pipe(1)'
call writeLn pp, 'writeLn pp zwei'
call wrTestOut pT, 'before piCh1 piWriClose'
call piDefine , "call outLn 'close piCh1'",
, "call outLn 'piCh1 line' m.line"
call outLn 'zeile drei aus pipe(1) nach wrDefine', 'vier'
call writeLn pp, 'writeLn pp fuenf'
call wrTestOut pT, 'before piCh1 piEnd'
call piEnd pp, 0
call wrTestOut pT, 'after piCh1 piEnd'
call writeLn pp, 'writeLn pp sechs nach piEnd', 'sieben vor close'
call wrClose pp
call wrClose pT
call wrTest pT,
, "--- piTest begin pipe(1) immediate",
, "zeile eins aus pipe(1)",
, "--- before piCh1 piWriClose",
, "zeile drei aus pipe(1) nach wrDefine",
, "vier",
, "--- before piCh1 piEnd immediate",
, "piCh1 line writeLn pp zwei",
, "piCh1 line writeLn pp fuenf", /* wkOld alt nach vier */
, "close piCh1",
, "--- after piCh1 piEnd immediate"
call wrTestOut pT, 'piTest begin pipe(1) immediate'
call piBegin pp
call outLn 'zeile eins aus pipe(1)'
call writeLn pp, 'writeLn pp zwei'
call wrTestOut pT, 'before piCh1 piWriClose'
call piDefine , "call outLn 'close piCh1'",
, "call outLn 'piCh1 line' m.line"
call outLn 'zeile drei aus pipe(1) nach wrDefine', 'vier'
call writeLn pp, 'writeLn pp fuenf'
call wrTestOut pT, 'before piCh1 piEnd immediate'
call piEnd pp, 1
call wrTestOut pT, 'after piCh1 piEnd immediate'
call wrClose pT
call wrTest pT,
, "--- piTest begin pipe(2) ",
, "--- before piCh1 piWriClose",
, "outLn piCh2 fuenf nach bar",
, "outLn piCh2 sieben vor wrDefine",
, "--- before piCh2 piDefine",
, "zeile acht aus piCh2 nach wrDefine",
, "vier vor bar",
, "--- before piCh1 piEnd 0",
, "--- after piEnd 0 vor close",
, "piCh2 line zeile eins aus piCh1",
, "piCh2 line zeile drei aus piCh1 nach wrDefine",
, "piCh2 line vier vor bar",
, "piCh2 line piCh1 line writeLn pp zwei", /* wkOld na sechs */
, "piCh2 line piCh1 line writeLn pp sechs",
, "piCh2 line close piCh1",
, "close piCh2"
call wrTestOut pT, 'piTest begin pipe(2) '
pp = piNew(2)
call piBegin pp
call outLn 'zeile eins aus piCh1'
call writeLn pp, 'writeLn pp zwei'
call wrTestOut pT, 'before piCh1 piWriClose'
call piDefine , "call outLn 'close piCh1'",
, "call outLn 'piCh1 line' m.line"
call outLn 'zeile drei aus piCh1 nach wrDefine', 'vier vor bar'
call piBar
call outLn 'outLn piCh2 fuenf nach bar'
call writeLn pp, 'writeLn pp sechs'
call outLn 'outLn piCh2 sieben vor wrDefine'
call wrTestOut pT, 'before piCh2 piDefine'
call piDefine , "call outLn 'close piCh2'",
, "call outLn 'piCh2 line' m.line"
call outLn 'zeile acht aus piCh2 nach wrDefine', 'vier vor bar'
call wrTestOut pT, 'before piCh1 piEnd 0'
call piEnd pp, 0
call wrTestOut pT, 'after piEnd 0 vor close'
call wrClose pp
call wrClose pT
call wrTest pT,
, "--- piTest begin pipe(2) ",
, "--- before piCh1 piWriClose",
, "outLn piCh2 fuenf nach bar",
, "outLn piCh2 sieben vor wrDefine",
, "--- before piCh2 piDefine",
, "zeile acht aus piCh2 nach wrDefine",
, "vier vor bar",
, "--- before piCh1 piEnd 0",
, "--- after piEnd ",
, "piCh2 line zeile eins aus piCh1",
, "piCh2 line zeile drei aus piCh1 nach wrDefine",
, "piCh2 line vier vor bar",
, "piCh2 line piCh1 line writeLn pp zwei", /*wkOld nach sechs*/
, "piCh2 line piCh1 line writeLn pp sechs",
, "piCh2 line piCh1 line neun nach end",
, "piCh2 line piCh1 line zehn schluss",
, "piCh2 line close piCh1",
, "close piCh2"
call wrTestOut pT, 'piTest begin pipe(2) '
pp = piNew(2)
call piBegin pp
call outLn 'zeile eins aus piCh1'
call writeLn pp, 'writeLn pp zwei'
call wrTestOut pT, 'before piCh1 piWriClose'
call piDefine , "call outLn 'close piCh1'",
, "call outLn 'piCh1 line' m.line"
call outLn 'zeile drei aus piCh1 nach wrDefine', 'vier vor bar'
call piBar
call outLn 'outLn piCh2 fuenf nach bar'
call writeLn pp, 'writeLn pp sechs'
call outLn 'outLn piCh2 sieben vor wrDefine'
call wrTestOut pT, 'before piCh2 piDefine'
call piDefine , "call outLn 'close piCh2'",
, "call outLn 'piCh2 line' m.line"
call outLn 'zeile acht aus piCh2 nach wrDefine', 'vier vor bar'
call wrTestOut pT, 'before piCh1 piEnd 0'
call piEnd pp, 0
call wrTestOut pT, 'after piEnd '
call writeLn pp, 'neun nach end', 'zehn schluss'
call wrClose pp
call wrClose pT
call wrTest pT,
, "--- piTestWc chi 4 end 0 writes 0",
, "piCh4 open",
, "--- before piEnd 0",
, "--- before write 0",
, "--- before close",
, "piCh4 line piCh3 open",
, "piCh4 line piCh3 line piCh2 open",
, "piCh4 line piCh3 line piCh2 line piCh1 open",
, "piCh4 line piCh3 line piCh2 line piCh1 close 0 lines and 0",
|| " characters",
, "piCh4 line piCh3 line piCh2 close 2 lines and 46 character",
|| "s",
, "piCh4 line piCh3 close 4 lines and 115 characters",
, "piCh4 close 6 lines and 207 characters"
pp = piNew(4)
call piTestWC pp, pT, 4, 0, 0
call wrClose pT
call wrTest pT,
, "--- piTestWc chi 4 end 1 writes 0",
, "piCh4 open",
, "--- before piEnd 1",
, "piCh4 line piCh3 open",
, "piCh4 line piCh3 line piCh2 open",
, "piCh4 line piCh3 line piCh2 line piCh1 open",
, "piCh4 line piCh3 line piCh2 line piCh1 close 0 lines and 0",
|| " characters",
, "piCh4 line piCh3 line piCh2 close 2 lines and 46 character",
|| "s",
, "piCh4 line piCh3 close 4 lines and 115 characters",
, "piCh4 close 6 lines and 207 characters",
, "--- before write 0",
, "--- before close"
call piTestWC pp, pT, 4, 1, 0
call wrClose pT
call wrTest pT,
, "--- piTestWc chi 4 end 0 writes 4",
, "piCh4 open",
, "--- before piEnd 0",
, "--- before write 4",
, "--- before close", /* wkOld war nach end4 */
, "piCh4 line piCh3 open",
, "piCh4 line piCh3 line piCh2 open",
, "piCh4 line piCh3 line piCh2 line piCh1 open",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 1",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 2",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 3",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 4",
, "piCh4 line piCh3 line piCh2 line piCh1 close 4 lines and 6",
|| "8 characters",
, "piCh4 line piCh3 line piCh2 close 6 lines and 159 characte",
|| "rs",
, "piCh4 line piCh3 close 8 lines and 273 characters",
, "piCh4 close 10 lines and 409 characters"
call piTestWC pp, pT, 4, 0, 4
call wrClose pT
call wrTest pT,
, "--- piTestWc chi 4 end 0 writes 4",
, "--- before piEnd 0",
, "--- before write 4",
, "--- before close",
, "--- wrFromDs stem=abc",
, "piCh4 open",
, "piCh4 line piCh3 open",
, "piCh4 line piCh3 line piCh2 open",
, "piCh4 line piCh3 line piCh2 line piCh1 open",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 1",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 2",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 3",
, "piCh4 line piCh3 line piCh2 line piCh1 line write after en",
|| "d 4",
, "piCh4 line piCh3 line piCh2 line piCh1 close 4 lines and 6",
|| "8 characters",
, "piCh4 line piCh3 line piCh2 close 6 lines and 159 characte",
|| "rs",
, "piCh4 line piCh3 close 8 lines and 273 characters",
, "piCh4 close 10 lines and 409 characters"
pp = piNew(4,0,1)
call piTestWC pp, pT, 4, 0, 4, 'stem=abc'
call wrTestOut pT, 'wrFromDs stem=abc'
call wrFromDS pT, 'stem=abc'
call wrClose pT
call wrTest pT,
, "--- pipe both redirections start",
, "--- after piEnd state c",
, "--- after piClose state c",
, "--- wrFromDs stem=ghi",
, "piCh2 open",
, "piCh2 line def eins",
, "piCh2 line def zwei",
, "piCh2 line def drei",
, "piCh2 close 3 lines and 24 characters"
call wrTestOut pT, 'pipe both redirections start'
pp = piNew(1,1,1)
call wrArgs "def", 0, 'def eins', 'def zwei', 'def drei'
call piBegin pp, 'stem=ghi'
call piDefine , 'call wrFromDs m.wr.out, "stem=def"'
call piBar
call piWC 'piCh2 line', 'piCh2 open', 'piCh2 close'
call piEnd pp
call wrTestOut pT, 'after piEnd state' m.wr.prcSta.pp
call wrClose pp
call wrTestOut pT, 'after piClose state' m.wr.prcSta.pp
call wrTestOut pT, 'wrFromDs stem=ghi'
call wrFromDS pT, 'stem=ghi'
call wrClose pT
call outPop
call wrTestTotal pT
return
endProcedure piTestPipe
piTestWC: procedure expose m.
parse arg pp, pT, cCh, cEnd, cAf, cBeg
call wrTestOut pT, 'piTestWc chi' cCh 'end' cEnd 'writes' cAf
call piBegin pp, cBeg
call piWC 'piCh1 line', 'piCh1 open', 'piCh1 close'
do c=2 to cCh
call piBar
call piWC 'piCh'c 'line', 'piCh'c 'open', 'piCh'c 'close'
end
call wrTestOut pT, 'before piEnd' cEnd
call piEnd pp, cEnd
call wrTestOut pT, 'before write' cAf
do c=1 to cAf
call writeLn pp, 'write after end' c
end
call wrTestOut pT, 'before close'
call wrClose pp
return
endProcedure piTestWC
/* copy piTest end **************************************************/