File: unformat_number.t

package info (click to toggle)
libnumber-format-perl 1.76-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 184 kB
  • sloc: perl: 590; makefile: 2
file content (56 lines) | stat: -rw-r--r-- 1,879 bytes parent folder | download | duplicates (4)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# -*- CPerl -*-

use Test::More qw(no_plan);
use strict;
use warnings;

use POSIX;
setlocale(&LC_ALL, 'C');

BEGIN { use_ok('Number::Format', ':subs') }

cmp_ok(unformat_number('123,456.51'),        '==', 123456.51,   'num');
cmp_ok(unformat_number('US$ 12,345,678.51'), '==', 12345678.51, 'curr');

ok(! defined unformat_number('US$###,###,###.##'), 'overflow picture');

cmp_ok(unformat_number('-123,456,789.51'), '==', -123456789.51,'neg');

cmp_ok(unformat_number('1.5K'), '==', 1536,      'kilo');
cmp_ok(unformat_number('1.3M'), '==', 1363148.8, 'mega');

my $x = Number::Format->new;
$x->{neg_format} = '(x)';
cmp_ok($x->unformat_number('(123,456,789.51)'),
       '==', -123456789.51,'neg paren');

cmp_ok(unformat_number('(123,456,789.51)'),
       '==', 123456789.51,'neg default');

cmp_ok(unformat_number("4K", base => 1024), '==', 4096, '4x1024');
cmp_ok(unformat_number("4K", base => 1000), '==', 4000, '4x1000');
cmp_ok(unformat_number("4KiB", base => 1024), '==', 4096, '4x1024 KiB');
cmp_ok(unformat_number("4KiB", base => 1000), '==', 4000, '4x1000 KiB');
cmp_ok(unformat_number("4G"), '==', 4294967296, '4G');
cmp_ok(unformat_number("4G", base => 1), '==', 4, 'base 1');

eval { unformat_number("4G", base => 1000000) };
like($@, qr/^\Qbase overflow/, "base overflow");

eval { unformat_number("4G", base => 0) };
like($@, qr/^\Qbase must be a positive integer/, "base 0");

eval { unformat_number("4G", base => .5) };
like($@, qr/^\Qbase must be a positive integer/, "base .5");

eval { unformat_number("4G", base => -1) };
like($@, qr/^\Qbase must be a positive integer/, "base neg");

{
    my @warnings;
    local $SIG{__WARN__} = sub { @warnings = @_ };
    is(unformat_number(undef), undef);
    my $file = __FILE__;
    like("@warnings",
         qr{Use of uninitialized value in call to Number::Format::unformat_number at \Q$file\E line \d+[.]?\n});
}