seq: use consistent output format with hex integers
[coreutils.git] / tests / misc / seq-precision.sh
blobe6a2bd7b81b4c3fa85714d5b2791ca920aeb1f0b
1 #!/bin/sh
2 # Test for output with appropriate precision
4 # Copyright (C) 2015 Free Software Foundation, Inc.
6 # This program is free software: you can redistribute it and/or modify
7 # it under the terms of the GNU General Public License as published by
8 # the Free Software Foundation, either version 3 of the License, or
9 # (at your option) any later version.
11 # This program is distributed in the hope that it will be useful,
12 # but WITHOUT ANY WARRANTY; without even the implied warranty of
13 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 # GNU General Public License for more details.
16 # You should have received a copy of the GNU General Public License
17 # along with this program. If not, see <http://www.gnu.org/licenses/>.
19 . "${srcdir=.}/tests/init.sh"; path_prepend_ ./src
20 print_ver_ seq
22 # Integer only. Before v8.24 these would switch output format
24 seq 999999 inf | head -n2 > out || fail=1
25 printf "%s\n" 999999 1000000 > exp || framework_failure_
26 compare exp out || fail=1
28 # Excercise buffer handling in non floating point output
29 for i in $(seq 100); do
30 n1="$(printf '%*s' $i '' | tr ' ' 9)"
31 n2="1$(echo $n1 | tr 9 0)"
33 seq $n1 $n2 > out || fail=1
34 printf "%s\n" "$n1" "$n2" > exp || framework_failure_
35 compare exp out || fail=1
36 done
38 seq 0xF423F 0xF4240 > out || fail=1
39 printf "%s\n" 999999 1000000 > exp || framework_failure_
40 compare exp out || fail=1
42 # Ensure consistent precision for inf
43 seq 1 .1 inf | head -n2 > out || fail=1
44 printf "%s\n" 1.0 1.1 > exp || framework_failure_
45 compare exp out || fail=1
47 # Ensure standard output methods with inf start
48 seq inf inf | head -n2 | uniq > out || fail=1
49 test "$(wc -l < out)" = 1 || fail=1
51 # Ensure auto precision for hex float
52 seq 1 0x1p-1 2 > out || fail=1
53 printf "%s\n" 1 1.5 2 > exp || framework_failure_
54 compare exp out || fail=1
56 # Ensure consistent precision for hex
57 seq 1 .1 0x2 | head -n2 > out || fail=1
58 printf "%s\n" 1.0 1.1 > exp || framework_failure_
59 compare exp out || fail=1
61 Exit $fail