@@ -17,7 +17,7 @@ unless @inttypes {
17
17
exit ;
18
18
}
19
19
20
- plan 9 * @ inttypes + 3 ;
20
+ plan 11 * @ inttypes + 3 ;
21
21
22
22
for @ inttypes -> $ type {
23
23
my ($ minval ,$ maxval ) = ::($ type ). Range . int -bounds;
@@ -35,28 +35,45 @@ for @inttypes -> $type {
35
35
" $ type can be $ minval" ;
36
36
37
37
if $ type eq " uint64" {
38
- # ?rakudo.moar 2 skip 'Cannot unbox 65 bit wide bigint into native integer'
39
- is EVAL (" my $ type \$var = { $ maxval + 1} ; \$var" ), $ minval ,
38
+ is EVAL (" my $ type \$var = $ maxval ; \$var++; \$var" ), $ minval ,
40
39
" $ type overflows to $ minval" ;
41
-
42
- # ?rakudo.jvm 1 todo "expected: '18446744073709551615' got: '-1'"
43
- is EVAL (" my $ type \$var = { $ minval -1} ; \$var" ), $ maxval ,
44
- " $ type underflows to $ maxval" ;
45
- } elsif $ type eq ' int64' {
46
- is EVAL (" my $ type \$var = { $ maxval + 1} ; \$var" ), $ minval ,
40
+ } elsif $ type eq " int64" {
41
+ is EVAL (" my $ type \$var = $ maxval ; \$var++; \$var" ), $ minval ,
47
42
" $ type overflows to $ minval" ;
48
-
49
- is EVAL (" my $ type \$var = { $ minval -1} ; \$var" ), $ maxval ,
50
- " $ type underflows to $ maxval" ;
51
43
} else {
52
- # ?rakudo.jvm todo 'wrong overflow'
53
- is EVAL (" my $ type \$var = { $ maxval + 1 } ; \$var" ), $ minval ,
44
+ # ?rakudo.jvm todo 'max overflow to min '
45
+ is EVAL (" my $ type \$var = $ maxval; \$var++ ; \$var" ), $ minval ,
54
46
" $ type overflows to $ minval" ;
47
+ }
55
48
56
- # ?rakudo.jvm todo 'wrong underflow'
57
- is EVAL (" my $ type \$var = { $ minval -1} ; \$var" ), $ maxval ,
49
+ if $ type eq " uint64" {
50
+ # ?rakudo todo 'getting -1 instead of 0'
51
+ is EVAL (" my $ type \$var = $ minval ; \$var--; \$var" ), $ maxval ,
58
52
" $ type underflows to $ maxval" ;
59
- }
53
+ } elsif $ type eq " int64" {
54
+ is EVAL (" my $ type \$var = $ minval ; \$var--; \$var" ), $ maxval ,
55
+ " $ type underflows to $ maxval" ;
56
+ } else {
57
+ # ?rakudo.jvm todo 'underflow to max'
58
+ is EVAL (" my $ type \$var = $ minval ; \$var--; \$var" ), $ maxval ,
59
+ " $ type underflows to $ maxval" ;
60
+ }
61
+
62
+ if $ type eq " uint64" {
63
+ # ?rakudo.jvm todo 'setting to more than max'
64
+ throws-like { EVAL " my $ type \$var = { $ maxval + 1} " },
65
+ Exception ,
66
+ " setting $ type to more than $ maxval throws" ;
67
+ } else {
68
+ # ?rakudo todo 'setting more than max throws'
69
+ throws-like { EVAL " my $ type \$var = { $ maxval + 1} " },
70
+ Exception ,
71
+ " setting $ type to more than $ maxval throws" ;
72
+ }
73
+ # ?rakudo todo 'setting less than min throws'
74
+ throws-like { EVAL " my $ type \$var = { $ minval -1} " },
75
+ Exception ,
76
+ " setting $ type to less than $ minval throws" ;
60
77
61
78
throws-like { EVAL " my $ type \$var = 'foo'" },
62
79
Exception ,
0 commit comments