Revise testdir/T.split per PR #42.
This commit is contained in:
parent
891690942a
commit
147521b831
166
testdir/T.split
166
testdir/T.split
@ -1,41 +1,119 @@
|
|||||||
echo T.split: misc tests of field splitting and split command
|
#!/bin/sh
|
||||||
|
|
||||||
awk=${awk-../a.out}
|
awk=${awk-../a.out}
|
||||||
|
|
||||||
echo a:bc:def >foo0
|
WORKDIR=$(mktemp -d /tmp/nawktest.XXXXXX)
|
||||||
echo a:bc:def >foo1
|
|
||||||
$awk '{ FS = ":"; print $1 }' foo0 >foo2
|
|
||||||
diff foo1 foo2 || echo 'BAD: T.split 0.1'
|
|
||||||
|
|
||||||
echo a:bc:def >foo0
|
TEMP0=$WORKDIR/test.temp.0
|
||||||
echo 1 >foo1
|
TEMP1=$WORKDIR/test.temp.1
|
||||||
$awk '{ FS = ":"; print NF }' foo0 >foo2
|
TEMP2=$WORKDIR/test.temp.2
|
||||||
diff foo1 foo2 || echo 'BAD: T.split 0.2'
|
|
||||||
|
RESULT=0
|
||||||
|
|
||||||
|
fail() {
|
||||||
|
echo "$1" >&2
|
||||||
|
RESULT=1
|
||||||
|
}
|
||||||
|
|
||||||
|
echo T.split: misc tests of field splitting and split command
|
||||||
|
|
||||||
|
$awk 'BEGIN {
|
||||||
|
# Assign string to $0, then change FS.
|
||||||
|
FS = ":"
|
||||||
|
$0="a:bc:def"
|
||||||
|
FS = "-"
|
||||||
|
print FS, $1, NF
|
||||||
|
|
||||||
|
# Assign number to $0, then change FS.
|
||||||
|
FS = "2"
|
||||||
|
$0=1212121
|
||||||
|
FS="3"
|
||||||
|
print FS, $1, NF
|
||||||
|
}' > $TEMP1
|
||||||
|
echo '- a 3
|
||||||
|
3 1 4' > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 0.1'
|
||||||
|
|
||||||
|
$awk 'BEGIN {
|
||||||
|
# FS changes after getline.
|
||||||
|
FS = ":"
|
||||||
|
"echo a:bc:def" | getline
|
||||||
|
FS = "-"
|
||||||
|
print FS, $1, NF
|
||||||
|
}' > $TEMP1
|
||||||
|
echo '- a 3' > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 0.2'
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
a
|
a
|
||||||
a:b
|
a:b
|
||||||
c:d:e
|
c:d:e
|
||||||
e:f:g:h' >foo0
|
e:f:g:h' > $TEMP0
|
||||||
$awk 'BEGIN {
|
$awk 'BEGIN {
|
||||||
FS = ":"
|
FS = ":"
|
||||||
while (getline <"foo0" > 0)
|
while (getline <"'$TEMP0'" > 0)
|
||||||
print NF
|
print NF
|
||||||
}' >foo1
|
}' > $TEMP1
|
||||||
echo '0
|
echo '0
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3
|
3
|
||||||
4' >foo2
|
4' > $TEMP2
|
||||||
diff foo1 foo2 || echo 'BAD: T.split 0.3'
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 0.3'
|
||||||
|
|
||||||
|
# getline var shouldn't impact fields.
|
||||||
|
|
||||||
|
echo 'f b a' > $TEMP0
|
||||||
|
$awk '{
|
||||||
|
FS = ":"
|
||||||
|
getline a < "/etc/passwd"
|
||||||
|
print $1
|
||||||
|
}' $TEMP0 > $TEMP1
|
||||||
|
echo 'f' > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 0.4'
|
||||||
|
|
||||||
|
echo 'a b c d
|
||||||
|
foo
|
||||||
|
e f g h i
|
||||||
|
bar' > $TEMP0
|
||||||
|
$awk '{
|
||||||
|
FS=":"
|
||||||
|
getline v
|
||||||
|
print $2, NF
|
||||||
|
FS=" "
|
||||||
|
}' $TEMP0 > $TEMP1
|
||||||
|
echo 'b 4
|
||||||
|
f 5' > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 0.5'
|
||||||
|
|
||||||
|
echo 'a.b.c=d.e.f
|
||||||
|
g.h.i=j.k.l
|
||||||
|
m.n.o=p.q.r' > $TEMP0
|
||||||
|
echo 'b
|
||||||
|
h
|
||||||
|
n' > $TEMP1
|
||||||
|
$awk 'BEGIN { FS="=" } { FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split (record assignment 1)'
|
||||||
|
|
||||||
|
echo 'a.b.c=d.e.f
|
||||||
|
g.h.i=j.k.l
|
||||||
|
m.n.o=p.q.r' > $TEMP0
|
||||||
|
echo 'd.e.f
|
||||||
|
b
|
||||||
|
j.k.l
|
||||||
|
h
|
||||||
|
p.q.r
|
||||||
|
n' > $TEMP1
|
||||||
|
$awk 'BEGIN { FS="=" } { print $2; FS="."; $0=$1; print $2; FS="="; }' $TEMP0 > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split (record assignment 2)'
|
||||||
|
|
||||||
echo 'abc
|
echo 'abc
|
||||||
de
|
de
|
||||||
f
|
f
|
||||||
|
|
||||||
' >foo0
|
' > $TEMP0
|
||||||
who | sed 10q >> foo0
|
who | sed 10q >> $TEMP0
|
||||||
sed 10q /etc/passwd >> foo0
|
sed 10q /etc/passwd >> $TEMP0
|
||||||
|
|
||||||
$awk '
|
$awk '
|
||||||
{ n = split($0, x, "")
|
{ n = split($0, x, "")
|
||||||
@ -46,11 +124,11 @@ $awk '
|
|||||||
s = s x[i]
|
s = s x[i]
|
||||||
if (s != $0) print "error 2", NR
|
if (s != $0) print "error 2", NR
|
||||||
print s
|
print s
|
||||||
}' foo0 >foo1
|
}' $TEMP0 > $TEMP1
|
||||||
|
|
||||||
diff foo0 foo1 || echo 'BAD: T.split 1'
|
diff $TEMP0 $TEMP1 || fail 'BAD: T.split 1'
|
||||||
|
|
||||||
# assumes same foo0! bad design
|
# assumes same test.temp.0! bad design
|
||||||
|
|
||||||
|
|
||||||
$awk '
|
$awk '
|
||||||
@ -62,9 +140,9 @@ $awk '
|
|||||||
s = s x[i]
|
s = s x[i]
|
||||||
if (s != $0) print "error 2", NR
|
if (s != $0) print "error 2", NR
|
||||||
print s
|
print s
|
||||||
}' foo0 >foo1
|
}' $TEMP0 > $TEMP1
|
||||||
|
|
||||||
diff foo0 foo1 || echo 'BAD: T.split //'
|
diff $TEMP0 $TEMP1 || fail 'BAD: T.split //'
|
||||||
|
|
||||||
$awk '
|
$awk '
|
||||||
BEGIN { FS = "" }
|
BEGIN { FS = "" }
|
||||||
@ -76,11 +154,11 @@ BEGIN { FS = "" }
|
|||||||
s = s x[i]
|
s = s x[i]
|
||||||
if (s != $0) print "error 2", NR
|
if (s != $0) print "error 2", NR
|
||||||
print s
|
print s
|
||||||
}' foo0 >foo2
|
}' $TEMP0 > $TEMP2
|
||||||
|
|
||||||
diff foo0 foo2 || echo 'BAD: T.split 2'
|
diff $TEMP0 $TEMP2 || fail 'BAD: T.split 2'
|
||||||
|
|
||||||
# assumes same foo0!
|
# assumes same test.temp.0!
|
||||||
|
|
||||||
$awk '
|
$awk '
|
||||||
BEGIN { FS = "" }
|
BEGIN { FS = "" }
|
||||||
@ -92,45 +170,55 @@ BEGIN { FS = "" }
|
|||||||
s = s $i
|
s = s $i
|
||||||
if (s != $0) print "error 2", NR
|
if (s != $0) print "error 2", NR
|
||||||
print s
|
print s
|
||||||
}' foo0 >foo3
|
}' $TEMP0 > $TEMP2
|
||||||
|
|
||||||
diff foo0 foo3 || echo 'BAD: T.split 3'
|
diff $TEMP0 $TEMP2 || fail 'BAD: T.split 3'
|
||||||
|
|
||||||
|
|
||||||
$awk '
|
$awk '
|
||||||
{ n = split( $0, temp, /^@@@ +/ )
|
{ n = split( $0, temp, /^@@@ +/ )
|
||||||
print n
|
print n
|
||||||
}' >foo1 <<XXX
|
}' > $TEMP1 <<XXX
|
||||||
@@@ xxx
|
@@@ xxx
|
||||||
@@@ xxx
|
@@@ xxx
|
||||||
@@@ xxx
|
@@@ xxx
|
||||||
XXX
|
XXX
|
||||||
echo '2
|
echo '2
|
||||||
2
|
2
|
||||||
2' >foo2
|
2' > $TEMP2
|
||||||
diff foo1 foo2 || echo 'BAD: T.split 4'
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split 4'
|
||||||
|
|
||||||
rm foo*
|
rm -f $WORKDIR/test.temp*
|
||||||
|
|
||||||
echo '
|
echo '
|
||||||
a
|
a
|
||||||
bc
|
bc
|
||||||
def' >foo0
|
def' > $TEMP0
|
||||||
$awk '
|
$awk '
|
||||||
{ print split($0, x, "")
|
{ print split($0, x, "")
|
||||||
}' foo0 >foo1
|
}' $TEMP0 > $TEMP1
|
||||||
echo '0
|
echo '0
|
||||||
1
|
1
|
||||||
2
|
2
|
||||||
3' >foo2
|
3' > $TEMP2
|
||||||
diff foo1 foo2 || echo 'BAD: T.split null 3rd arg'
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split null 3rd arg'
|
||||||
|
|
||||||
rm foo*
|
rm -f $WORKDIR/test.temp*
|
||||||
$awk 'BEGIN {
|
$awk 'BEGIN {
|
||||||
a[1]="a b"
|
a[1]="a b"
|
||||||
print split(a[1],a),a[1],a[2]
|
print split(a[1],a),a[1],a[2]
|
||||||
}' >foo1
|
}' > $TEMP1
|
||||||
|
|
||||||
echo '2 a b' >foo2
|
echo '2 a b' > $TEMP2
|
||||||
diff foo1 foo2 || echo 'BAD: T.split(a[1],a)'
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split(a[1],a)'
|
||||||
|
|
||||||
|
$awk 'BEGIN {
|
||||||
|
a = "cat\n\n\ndog"
|
||||||
|
split(a, b, "[\r\n]+")
|
||||||
|
print b[1], b[2]
|
||||||
|
}' > $TEMP1
|
||||||
|
echo 'cat dog' > $TEMP2
|
||||||
|
diff $TEMP1 $TEMP2 || fail 'BAD: T.split(a, b, "[\r\n]+")'
|
||||||
|
|
||||||
|
|
||||||
|
exit $RESULT
|
||||||
|
Loading…
Reference in New Issue
Block a user