1#!./perl
2
3use strict;
4use warnings;
5
6use Test::More tests => 19;
7use Scalar::Util qw(looks_like_number);
8
9foreach my $num (qw(1 -1 +1 1.0 +1.0 -1.0 -1.0e-12)) {
10  ok(looks_like_number($num), "'$num'");
11}
12
13is(!!looks_like_number("Inf"),      $] >= 5.006001, 'Inf');
14is(!!looks_like_number("Infinity"), $] >= 5.008,    'Infinity');
15is(!!looks_like_number("NaN"),      $] >= 5.008,    'NaN');
16is(!!looks_like_number("foo"),      '',             'foo');
17is(!!looks_like_number(undef),      '',             'undef');
18is(!!looks_like_number({}),         '',             'HASH Ref');
19is(!!looks_like_number([]),         '',             'ARRAY Ref');
20
21use Math::BigInt;
22my $bi = Math::BigInt->new('1234567890');
23is(!!looks_like_number($bi),        1,              'Math::BigInt');
24is(!!looks_like_number("$bi"),      1,              'Stringified Math::BigInt');
25
26{ package Foo;
27sub TIEHASH { bless {} }
28sub FETCH { $_[1] }
29}
30my %foo;
31tie %foo, 'Foo';
32is(!!looks_like_number($foo{'abc'}),  '',           'Tied');
33is(!!looks_like_number($foo{'123'}),  1,            'Tied');
34
35is(!!looks_like_number("\x{1815}"),   '',           'MONGOLIAN DIGIT FIVE');
36
37# We should copy some of perl core tests like t/base/num.t here
38