OSDN Git Service

More half-finished cleanup of printf.c, and more test suite entries.
[android-x86/external-toybox.git] / tests / printf.test
1 #!/bin/bash
2
3 # Copyright 2013 Robin Mittal <robinmittal.it@gmail.com>
4 # Copyright 2013 Divya Kothari <divya.s.kothari@gmail.com>
5
6 [ -f testing.sh ] && . testing.sh
7
8 #testing "name" "command" "result" "infile" "stdin"
9
10 # Disable shell builtin
11 PRINTF="$(which printf)"
12
13 testing "printf text" "$PRINTF TEXT" "TEXT" "" ""
14 testing "printf escapes" "$PRINTF 'one\ntwo\n\v\t\r\f\e\b\athree'" \
15   "one\ntwo\n\v\t\r\f\e\b\athree" "" ""
16 testing "printf %b escapes" "$PRINTF %b 'one\ntwo\n\v\t\r\f\e\b\athree'" \
17   "one\ntwo\n\v\t\r\f\e\b\athree" "" ""
18 testing "printf null" "$PRINTF 'x\0y' | od -An -tx1" ' 78 00 79\n' "" ""
19 testing "printf trailing slash" "$PRINTF 'abc\'" 'abc\' "" ""
20 testing "printf octal" "$PRINTF ' \1\002\429\045x'" ' \001\002"9%x' "" ""
21 testing "printf not octal" "$PRINTF '\9'" '\9' "" ""
22 testing "printf hex" "$PRINTF 'A\x1b\x2B\x3Q\xa' | od -An -tx1" \
23   ' 41 1b 2b 03 51 0a\n' "" ""
24 testing "printf %x" "$PRINTF '%x\n' 0x2a" "2a\n" "" ""
25
26 testing "printf %d 42" "$PRINTF %d 42" "42" "" ""
27 testing "printf %d 0x2a" "$PRINTF %d 0x2a" "42" "" ""
28 testing "printf %d 052" "$PRINTF %d 052" "42" "" ""
29
30 testing "printf %s width precision" \
31   "$PRINTF '%3s,%.3s,%10s,%10.3s' abcde fghij klmno pqrst" \
32   "abcde,fgh,     klmno,       pqr" "" ""
33
34 # posix: "The format operand shall be reused as often as necessary to satisfy
35 # the argument operands."
36
37 testing "printf extra args" "$PRINTF 'abc%s!%ddef\n' X 42 ARG 36" \
38         "abcX!42def\nabcARG!36def\n" "" ""
39
40 testing "printf '%3c'" "printf '%3c' x" "  x" "" ""
41
42 testing "printf '%5d%4d' 1 21 321 4321 54321" \
43   "$PRINTF '%5d%4d' 1 21 321 4321 54321" "    1  21  321432154321   0" "" ""
44 testing "printf '%c %c' 78 79" "$PRINTF '%c %c' 78 79" "7 7" "" ""
45 testing "printf '%d %d' 78 79" "$PRINTF '%d %d' 78 79" "78 79" "" ""
46 testing "printf '%f %f' 78 79" "$PRINTF '%f %f' 78 79" \
47   "78.000000 79.000000" "" ""
48 testing "printf 'f f' 78 79" "$PRINTF 'f f' 78 79" "f f" "" ""
49 testing "printf '%i %i' 78 79" "$PRINTF '%i %i' 78 79" "78 79" "" ""
50 testing "printf '%o %o' 78 79" "$PRINTF '%o %o' 78 79" "116 117" "" ""
51 testing "printf '%u %u' 78 79" "$PRINTF '%u %u' 78 79" "78 79" "" ""
52 testing "printf '%u %u' -1 -2" "$PRINTF '%u %u' -1 -2" \
53   "18446744073709551615 18446744073709551614" "" ""
54 testing "printf '%x %X' 78 79" "$PRINTF '%x %X' 78 79" "4e 4F" "" ""
55 testing "printf '%g %G' 78 79" "$PRINTF '%g %G' 78 79" "78 79" "" ""
56 testing "printf '%s %s' 78 79" "$PRINTF '%s %s' 78 79" "78 79" "" ""