tests: add test for locale decimal processing
[coreutils.git] / tests / misc / seq-precision.sh
blobbf1f416631ce00c1e40d5e4ce868f58184cdd89f
1 #!/bin/sh
2 # Test for output with appropriate precision
4 # Copyright (C) 2015-2019 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 <https://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 # Exercise 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 # Ensure consistent handling of precision/width for exponents
63 seq 1.1e1 12 > out || fail=1
64 printf "%s\n" 11 12 > exp || framework_failure_
65 compare exp out || fail=1
67 seq 11 1.2e1 > out || fail=1
68 printf "%s\n" 11 12 > exp || framework_failure_
69 compare exp out || fail=1
71 seq -w 1.1e4 | head -n1 > out || fail=1
72 printf "%s\n" 00001 > exp || framework_failure_
73 compare exp out || fail=1
75 seq -w 1.10000e5 1.10000e5 > out || fail=1
76 printf "%s\n" 110000 > exp || framework_failure_
77 compare exp out || fail=1
79 Exit $fail