mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-11 20:31:11 +01:00
142 lines
2.6 KiB
Text
142 lines
2.6 KiB
Text
# Tests for the echo, print, printf and pushln builtins
|
|
|
|
# Tested elsewhere:
|
|
# Use of print -p to output to coprocess A01grammar
|
|
# Prompt expansion with print -P D01prompt
|
|
# -l, -r, -R and -n indirectly tested in various places
|
|
|
|
# Not yet tested:
|
|
# echo and pushln
|
|
# print's -b -c -s -z -N options
|
|
|
|
|
|
%test
|
|
|
|
print -D "${HOME:-~}"
|
|
0:replace directory name
|
|
>~
|
|
|
|
print -u2 'error message'
|
|
0:output to file-descriptor
|
|
?error message
|
|
|
|
print -o foo bar Baz
|
|
0:argument sorting
|
|
>Baz bar foo
|
|
|
|
print -f
|
|
1:print -f needs a format specified
|
|
?(eval):print:1: -f: format argument expected
|
|
|
|
print -Of '%s\n' foo bar baz
|
|
0:reverse argument sorting
|
|
>foo
|
|
>baz
|
|
>bar
|
|
|
|
print -io a B c
|
|
0:case-insensitive argument sorting
|
|
>a B c
|
|
|
|
print -m '[0-9]' one 2 three 4 five 6
|
|
0:removal of non-matching arguments
|
|
>2 4 6
|
|
|
|
printf '%s\n' string
|
|
0:test s format specifier
|
|
>string
|
|
|
|
printf '%b' '\t\\\n'
|
|
0:test b format specifier
|
|
> \
|
|
|
|
# test %q here - it doesn't quite work yet
|
|
|
|
printf '%c\n' char
|
|
0:test c format specifier
|
|
>c
|
|
|
|
printf '%.10e%n\n' 1 count >/dev/null
|
|
printf '%d\n' $count
|
|
0:test n format specifier
|
|
>16
|
|
|
|
printf '%d\n' 123
|
|
0:test d format specifier
|
|
>123
|
|
|
|
printf '%g\n' 123.45
|
|
0:test g format specifier
|
|
>123.45
|
|
|
|
# Is anyone not using ASCII
|
|
printf '%d\n' \'A
|
|
0:initial quote to get numeric value of character with int
|
|
>65
|
|
|
|
printf '%.1E\n' \'B
|
|
0:initial quote to get numeric value of character with double
|
|
>6.6E+01
|
|
|
|
printf '%x\n' $(printf '"\xf0')
|
|
0:numeric value of high numbered character
|
|
>f0
|
|
|
|
# code will probably be changed to print the literal `%s' in this case
|
|
printf '\x25s\n' arg
|
|
0:using \x25 to introduce a format specifier
|
|
>arg
|
|
|
|
printf '%3c\n' c
|
|
0:width specified in format specifier
|
|
> c
|
|
|
|
printf '%.4s\n' chopped
|
|
0:precision specified in format specifier
|
|
>chop
|
|
|
|
printf '%*.*f\n' 6 2 10.2
|
|
0:width/precision specified in arguments
|
|
> 10.20
|
|
|
|
printf '%z'
|
|
1:use of invalid directive
|
|
?(eval):printf:1: %z: invalid directive
|
|
|
|
printf '%d\n' 3a
|
|
1:bad arithmetic expression
|
|
?(eval):1: bad math expression: operator expected at `a'
|
|
>0
|
|
|
|
print -m -f 'format - %s.\n' 'z' a b c
|
|
0:format not printed if no arguments left after -m removal
|
|
|
|
print -f 'format - %s.\n'
|
|
0:format printed despite lack of arguments
|
|
>format - .
|
|
|
|
printf 'x%4sx\n'
|
|
0:with no arguments empty string where string needed
|
|
>x x
|
|
|
|
printf '%d\n'
|
|
0:with no arguments, zero used where number needed
|
|
>0
|
|
|
|
printf '%s\t%c:%#x%%\n' one a 1 two b 2 three c 3
|
|
0:multiple arguments with format reused
|
|
>one a:0x1%
|
|
>two b:0x2%
|
|
>three c:0x3%
|
|
|
|
printf '%0+- #-08.5dx\n' 123
|
|
0:maximal length format specification
|
|
>+00123 x
|
|
|
|
printf '%*smorning\n' -5 good
|
|
0:negative width specified
|
|
>good morning
|
|
|
|
printf '%.*g\n' -1 .1
|
|
0:negative precision specified
|
|
>0.1
|