| 1 | #!./perl
|
|---|
| 2 |
|
|---|
| 3 | BEGIN {
|
|---|
| 4 | chdir 't' if -d 't';
|
|---|
| 5 | @INC = '../lib';
|
|---|
| 6 | }
|
|---|
| 7 |
|
|---|
| 8 | print "1..14\n";
|
|---|
| 9 |
|
|---|
| 10 | # compile time evaluation
|
|---|
| 11 |
|
|---|
| 12 | if (int(1.234) == 1) {print "ok 1\n";} else {print "not ok 1\n";}
|
|---|
| 13 |
|
|---|
| 14 | if (int(-1.234) == -1) {print "ok 2\n";} else {print "not ok 2\n";}
|
|---|
| 15 |
|
|---|
| 16 | # run time evaluation
|
|---|
| 17 |
|
|---|
| 18 | $x = 1.234;
|
|---|
| 19 | if (int($x) == 1) {print "ok 3\n";} else {print "not ok 3\n";}
|
|---|
| 20 | if (int(-$x) == -1) {print "ok 4\n";} else {print "not ok 4\n";}
|
|---|
| 21 |
|
|---|
| 22 | $x = length("abc") % -10;
|
|---|
| 23 | print $x == -7 ? "ok 5\n" : "# expected -7, got $x\nnot ok 5\n";
|
|---|
| 24 |
|
|---|
| 25 | {
|
|---|
| 26 | use integer;
|
|---|
| 27 | $x = length("abc") % -10;
|
|---|
| 28 | $y = (3/-10)*-10;
|
|---|
| 29 | print $x+$y == 3 && abs($x) < 10 ? "ok 6\n" : "not ok 6\n";
|
|---|
| 30 | }
|
|---|
| 31 |
|
|---|
| 32 | # check bad strings still get converted
|
|---|
| 33 |
|
|---|
| 34 | @x = ( 6, 8, 10);
|
|---|
| 35 | print "not " if $x["1foo"] != 8;
|
|---|
| 36 | print "ok 7\n";
|
|---|
| 37 |
|
|---|
| 38 | # check values > 32 bits work.
|
|---|
| 39 |
|
|---|
| 40 | $x = 4294967303.15;
|
|---|
| 41 | $y = int ($x);
|
|---|
| 42 |
|
|---|
| 43 | if ($y eq "4294967303") {
|
|---|
| 44 | print "ok 8\n"
|
|---|
| 45 | } else {
|
|---|
| 46 | print "not ok 8 # int($x) is $y, not 4294967303\n"
|
|---|
| 47 | }
|
|---|
| 48 |
|
|---|
| 49 | $y = int (-$x);
|
|---|
| 50 |
|
|---|
| 51 | if ($y eq "-4294967303") {
|
|---|
| 52 | print "ok 9\n"
|
|---|
| 53 | } else {
|
|---|
| 54 | print "not ok 9 # int($x) is $y, not -4294967303\n"
|
|---|
| 55 | }
|
|---|
| 56 |
|
|---|
| 57 | $x = 4294967294.2;
|
|---|
| 58 | $y = int ($x);
|
|---|
| 59 |
|
|---|
| 60 | if ($y eq "4294967294") {
|
|---|
| 61 | print "ok 10\n"
|
|---|
| 62 | } else {
|
|---|
| 63 | print "not ok 10 # int($x) is $y, not 4294967294\n"
|
|---|
| 64 | }
|
|---|
| 65 |
|
|---|
| 66 | $x = 4294967295.7;
|
|---|
| 67 | $y = int ($x);
|
|---|
| 68 |
|
|---|
| 69 | if ($y eq "4294967295") {
|
|---|
| 70 | print "ok 11\n"
|
|---|
| 71 | } else {
|
|---|
| 72 | print "not ok 11 # int($x) is $y, not 4294967295\n"
|
|---|
| 73 | }
|
|---|
| 74 |
|
|---|
| 75 | $x = 4294967296.11312;
|
|---|
| 76 | $y = int ($x);
|
|---|
| 77 |
|
|---|
| 78 | if ($y eq "4294967296") {
|
|---|
| 79 | print "ok 12\n"
|
|---|
| 80 | } else {
|
|---|
| 81 | print "not ok 12 # int($x) is $y, not 4294967296\n"
|
|---|
| 82 | }
|
|---|
| 83 |
|
|---|
| 84 | $y = int(279964589018079/59);
|
|---|
| 85 | if ($y == 4745162525730) {
|
|---|
| 86 | print "ok 13\n"
|
|---|
| 87 | } else {
|
|---|
| 88 | print "not ok 13 # int(279964589018079/59) is $y, not 4745162525730\n"
|
|---|
| 89 | }
|
|---|
| 90 |
|
|---|
| 91 | $y = 279964589018079;
|
|---|
| 92 | $y = int($y/59);
|
|---|
| 93 | if ($y == 4745162525730) {
|
|---|
| 94 | print "ok 14\n"
|
|---|
| 95 | } else {
|
|---|
| 96 | print "not ok 14 # int(279964589018079/59) is $y, not 4745162525730\n"
|
|---|
| 97 | }
|
|---|
| 98 |
|
|---|