summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorPaul Eggert <eggert@cs.ucla.edu>2023-01-05 11:42:51 -0800
committerPaul Eggert <eggert@cs.ucla.edu>2023-01-05 12:47:41 -0800
commite1ff4ee0f6d7490610ecc39d57c855818f6fd1f4 (patch)
treebe1fff168d783507b9a5a816647b51ae00fda2b7 /tests
parent26bac321370acba2f651349dcc14beb37474a396 (diff)
downloadcoreutils-e1ff4ee0f6d7490610ecc39d57c855818f6fd1f4.tar.gz
numfmt: add support for new SI prefixes
* src/dd, src/head.c, src/od.c, src/sort.c, src/stdbuf.c, src/tail.c: (usage): * src/system.h (emit_size_note): Mention new SI prefixes. * src/du.c (main): * src/head.c (head_file): * src/numfmt.c (suffix_power, suffix_power_char, prepare_padded_number): * src/shred.c (main): * src/sort.c (unit_order): * src/tail.c (parse_options): Support new SI prefixes. * src/numfmt.c (MAX_ACCEPTABLE_DIGITS): Increase to 33. (zero_and_valid_suffixes, valid_suffixes): New constants, with new SI prefixes. (valid_suffix, unit_to_umax): Use them. (prepare_padded_number): Diagnose "999Q" instead of "999Y". * tests/misc/numfmt.pl, tests/misc/sort.pl: Adjust tests to match new max.
Diffstat (limited to 'tests')
-rwxr-xr-xtests/misc/numfmt.pl76
-rwxr-xr-xtests/misc/sort.pl8
2 files changed, 45 insertions, 39 deletions
diff --git a/tests/misc/numfmt.pl b/tests/misc/numfmt.pl
index 06df09a44..31a87dc14 100755
--- a/tests/misc/numfmt.pl
+++ b/tests/misc/numfmt.pl
@@ -116,29 +116,29 @@ my @Tests =
# Test Suffix logic
['suf-1', '4000', {OUT=>'4000'}],
- ['suf-2', '4Q',
- {ERR => "$prog: invalid suffix in input: '4Q'\n"},
+ ['suf-2', '4J',
+ {ERR => "$prog: invalid suffix in input: '4J'\n"},
{EXIT => '2'}],
['suf-2.1', '4M',
{ERR => "$prog: rejecting suffix " .
"in input: '4M' (consider using --from)\n"},
{EXIT => '2'}],
['suf-3', '--from=si 4M', {OUT=>'4000000'}],
- ['suf-4', '--from=si 4Q',
- {ERR => "$prog: invalid suffix in input: '4Q'\n"},
+ ['suf-4', '--from=si 4J',
+ {ERR => "$prog: invalid suffix in input: '4J'\n"},
{EXIT => '2'}],
- ['suf-5', '--from=si 4MQ',
- {ERR => "$prog: invalid suffix in input '4MQ': 'Q'\n"},
+ ['suf-5', '--from=si 4MJ',
+ {ERR => "$prog: invalid suffix in input '4MJ': 'J'\n"},
{EXIT => '2'}],
['suf-6', '--from=iec 4M', {OUT=>'4194304'}],
['suf-7', '--from=auto 4M', {OUT=>'4000000'}],
['suf-8', '--from=auto 4Mi', {OUT=>'4194304'}],
- ['suf-9', '--from=auto 4MiQ',
- {ERR => "$prog: invalid suffix in input '4MiQ': 'Q'\n"},
+ ['suf-9', '--from=auto 4MiJ',
+ {ERR => "$prog: invalid suffix in input '4MiJ': 'J'\n"},
{EXIT => '2'}],
- ['suf-10', '--from=auto 4QiQ',
- {ERR => "$prog: invalid suffix in input: '4QiQ'\n"},
+ ['suf-10', '--from=auto 4JiJ',
+ {ERR => "$prog: invalid suffix in input: '4JiJ'\n"},
{EXIT => '2'}],
# characters after a white space are OK - printed as-is
@@ -443,8 +443,8 @@ my @Tests =
{EXIT=>2}],
# INVALID_SUFFIX
- ['strtod-9', '--from=si 12.2Q',
- {ERR=>"$prog: invalid suffix in input: '12.2Q'\n"},
+ ['strtod-9', '--from=si 12.2J',
+ {ERR=>"$prog: invalid suffix in input: '12.2J'\n"},
{EXIT=>2}],
# VALID_BUT_FORBIDDEN_SUFFIX
@@ -731,18 +731,18 @@ my @Tests =
## Check all errors again, this time with --invalid=fail
## Input will be printed without conversion,
## and exit code will be 2
- ['ign-err-1', '--invalid=fail 4Q',
- {ERR => "$prog: invalid suffix in input: '4Q'\n"},
- {OUT => "4Q\n"},
+ ['ign-err-1', '--invalid=fail 4J',
+ {ERR => "$prog: invalid suffix in input: '4J'\n"},
+ {OUT => "4J\n"},
{EXIT => 2}],
['ign-err-2', '--invalid=fail 4M',
{ERR => "$prog: rejecting suffix " .
"in input: '4M' (consider using --from)\n"},
{OUT => "4M\n"},
{EXIT => 2}],
- ['ign-err-3', '--invalid=fail --from=si 4MQ',
- {ERR => "$prog: invalid suffix in input '4MQ': 'Q'\n"},
- {OUT => "4MQ\n"},
+ ['ign-err-3', '--invalid=fail --from=si 4MJ',
+ {ERR => "$prog: invalid suffix in input '4MJ': 'J'\n"},
+ {OUT => "4MJ\n"},
{EXIT => 2}],
['ign-err-4', '--invalid=fail --suffix=Foo --to=si 7000FooF',
{ERR => "$prog: invalid suffix in input: '7000FooF'\n"},
@@ -851,7 +851,7 @@ my @Limit_Tests =
# Test input:
- # Up to 27 digits is OK.
+ # Up to 33 digits is OK.
['large-3.1', '--to=si 1', {OUT=> "1"}],
['large-3.2', '--to=si 10', {OUT=> "10"}],
['large-3.3', '--to=si 100', {OUT=> "100"}],
@@ -879,11 +879,17 @@ my @Limit_Tests =
['large-3.25','--to=si 6543210000000000000000000', {OUT=>"6.6Y"}],
['large-3.26','--to=si 76543210000000000000000000', {OUT=> "77Y"}],
['large-3.27','--to=si 876543210000000000000000000', {OUT=>"877Y"}],
-
- # More than 27 digits is not OK
- ['large-3.28','--to=si 9876543210000000000000000000',
+ ['large-3.28','--to=si 9876543210000000000000000000', {OUT=>"9.9R"}],
+ ['large-3.29','--to=si 19876543210000000000000000000', {OUT=> "20R"}],
+ ['large-3.30','--to=si 219876543210000000000000000000', {OUT=>"220R"}],
+ ['large-3.31','--to=si 3219876543210000000000000000000', {OUT=>"3.3Q"}],
+ ['large-3.32','--to=si 43219876543210000000000000000000', {OUT=> "44Q"}],
+ ['large-3.33','--to=si 543219876543210000000000000000000', {OUT=>"544Q"}],
+
+ # More than 33 digits is not OK
+ ['large-3.34','--to=si 6543219876543210000000000000000000',
{ERR => "$prog: value too large to be converted: " .
- "'9876543210000000000000000000'\n"},
+ "'6543219876543210000000000000000000'\n"},
{EXIT => 2}],
# Test Output
@@ -952,15 +958,15 @@ my @Limit_Tests =
{EXIT => 2}],
['large-13.1','--from=si --from-unit=1000000 --to=si 9P', {OUT=>"9.0Z"}],
- # Numbers>999Y are never acceptable, regardless of scaling
- ['large-14','--from=si --to=si 999Y', {OUT=>"999Y"}],
- ['large-14.1','--from=si --to=si 1000Y',
- {ERR => "$prog: value too large to be printed: '1e+27' " .
- "(cannot handle values > 999Y)\n"},
+ # Numbers>999Q are never acceptable, regardless of scaling
+ ['large-14','--from=si --to=si 999Q', {OUT=>"999Q"}],
+ ['large-14.1','--from=si --to=si 1000Q',
+ {ERR => "$prog: value too large to be printed: '1e+33' " .
+ "(cannot handle values > 999Q)\n"},
{EXIT => 2}],
- ['large-14.2','--from=si --to=si --from-unit=10000 1Y',
- {ERR => "$prog: value too large to be printed: '1e+28' " .
- "(cannot handle values > 999Y)\n"},
+ ['large-14.2','--from=si --to=si --from-unit=10000 1Q',
+ {ERR => "$prog: value too large to be printed: '1e+34' " .
+ "(cannot handle values > 999Q)\n"},
{EXIT => 2}],
# intmax_t overflow when rounding caused this to fail before 8.24
@@ -999,10 +1005,10 @@ my @Limit_Tests =
"(consider using --to)\n"},
{OUT => "10000000000000000000\n"},
{EXIT=>2}],
- ['ign-err-11','--invalid=fail --to=si 9876543210000000000000000000',
+ ['ign-err-11','--invalid=fail --to=si 6543219876543210000000000000000000',
{ERR => "$prog: value too large to be converted: " .
- "'9876543210000000000000000000'\n"},
- {OUT => "9876543210000000000000000000\n"},
+ "'6543219876543210000000000000000000'\n"},
+ {OUT => "6543219876543210000000000000000000\n"},
{EXIT => 2}],
);
# Restrict these tests to systems with LDBL_DIG == 18
@@ -1067,7 +1073,7 @@ push @Tests, @Locale_Tests if $locale ne 'C';
## Check all valid/invalid suffixes
foreach my $suf ( 'A' .. 'Z', 'a' .. 'z' ) {
- if ( $suf =~ /^[KMGTPEZY]$/ )
+ if ( $suf =~ /^[KMGTPEZYRQ]$/ )
{
push @Tests, ["auto-suf-si-$suf","--from=si --to=si 1$suf",
{OUT=>"1.0$suf"}];
diff --git a/tests/misc/sort.pl b/tests/misc/sort.pl
index 0cd2340a2..46f1d7acd 100755
--- a/tests/misc/sort.pl
+++ b/tests/misc/sort.pl
@@ -56,10 +56,10 @@ my @Tests =
# human readable suffixes
["h1", '-h',
- {IN=>"1Y\n1Z\n1E\n1P\n1T\n1G\n1M\n1K\n02\n1\nY\n-1k\n-1M\n-1G\n-1T\n"
- . "-1P\n-1E\n-1Z\n-1Y\n"},
- {OUT=>"-1Y\n-1Z\n-1E\n-1P\n-1T\n-1G\n-1M\n-1k\nY\n1\n02\n1K\n1M\n1G\n1T\n"
- . "1P\n1E\n1Z\n1Y\n"}],
+ {IN=>"1Q\n1R\n1Y\n1Z\n1E\n1P\n1T\n1G\n1M\n1K\n02\n1\nY\n-1k\n-1M\n-1G\n-1T\n"
+ . "-1P\n-1E\n-1Z\n-1Y\n-1Q\n-1R\n"},
+ {OUT=>"-1Q\n-1R\n-1Y\n-1Z\n-1E\n-1P\n-1T\n-1G\n-1M\n-1k\n"
+ . "Y\n1\n02\n1K\n1M\n1G\n1T\n1P\n1E\n1Z\n1Y\n1R\n1Q\n"}],
["h2", '-h', {IN=>"1M\n-2G\n-3K"}, {OUT=>"-2G\n-3K\n1M\n"}],
# check that it works with powers of 1024
["h3", '-k 2,2h -k 1,1', {IN=>"a 1G\nb 1023M\n"}, {OUT=>"b 1023M\na 1G\n"}],