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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
|
require 'test/unit'
class TestNum2int < Test::Unit::TestCase
module Num2int
end
require '-test-/num2int/num2int'
SHRT_MIN = -32768
SHRT_MAX = 32767
USHRT_MAX = 65535
INT_MIN = -2147483648
INT_MAX = 2147483647
UINT_MAX = 4294967295
case [0].pack('L!').size
when 4
LONG_MAX = 2147483647
LONG_MIN = -2147483648
ULONG_MAX = 4294967295
when 8
LONG_MAX = 9223372036854775807
LONG_MIN = -9223372036854775808
ULONG_MAX = 18446744073709551615
end
LLONG_MAX = 9223372036854775807
LLONG_MIN = -9223372036854775808
ULLONG_MAX = 18446744073709551615
FIXNUM_MAX = LONG_MAX/2
FIXNUM_MIN = LONG_MIN/2
def asert_num2i_success(type, num, result=num)
method = "print_num2#{type}"
assert_output(result.to_s) do
Num2int.send(method, num)
end
end
def asert_num2i_error(type, num)
method = "print_num2#{type}"
assert_raise(RangeError) do
Num2int.send(method, num)
end
end
def test_num2short
asert_num2i_success(:short, SHRT_MIN)
asert_num2i_success(:short, SHRT_MAX)
asert_num2i_error(:short, SHRT_MIN-1)
asert_num2i_error(:short, SHRT_MAX+1)
end
def test_num2ushort
asert_num2i_success(:ushort, 0)
asert_num2i_success(:ushort, USHRT_MAX)
asert_num2i_success(:ushort, -1, USHRT_MAX)
asert_num2i_success(:ushort, SHRT_MIN, SHRT_MAX+1)
asert_num2i_error(:ushort, SHRT_MIN-1)
asert_num2i_error(:ushort, USHRT_MAX+1)
end
def test_num2int
asert_num2i_success(:int, INT_MIN)
asert_num2i_success(:int, INT_MAX)
asert_num2i_error(:int, INT_MIN-1)
asert_num2i_error(:int, INT_MAX+1)
end
def test_num2uint
asert_num2i_success(:uint, 0)
asert_num2i_success(:uint, UINT_MAX)
asert_num2i_success(:uint, -1, UINT_MAX)
asert_num2i_success(:uint, INT_MIN, INT_MAX+1)
asert_num2i_error(:uint, INT_MIN-1)
asert_num2i_error(:uint, UINT_MAX+1)
end
def test_num2long
#assert_output(LONG_MIN.to_s) do
# Num2int.print_num2long(LONG_MIN.to_f)
#end
asert_num2i_success(:long, LONG_MIN)
asert_num2i_success(:long, LONG_MAX)
asert_num2i_error(:long, LONG_MIN-1)
asert_num2i_error(:long, LONG_MAX+1)
asert_num2i_success(:long, FIXNUM_MIN)
asert_num2i_success(:long, FIXNUM_MIN-1)
asert_num2i_success(:long, FIXNUM_MAX)
asert_num2i_success(:long, FIXNUM_MAX+1)
end
def test_num2ulong
asert_num2i_success(:ulong, 0)
asert_num2i_success(:ulong, ULONG_MAX)
asert_num2i_success(:ulong, -1, ULONG_MAX)
asert_num2i_success(:ulong, LONG_MIN, LONG_MAX+1)
asert_num2i_error(:ulong, LONG_MIN-1)
asert_num2i_error(:ulong, ULONG_MAX+1)
asert_num2i_success(:ulong, FIXNUM_MIN, ULONG_MAX-FIXNUM_MAX)
asert_num2i_success(:ulong, FIXNUM_MIN-1, ULONG_MAX-FIXNUM_MAX-1)
asert_num2i_success(:ulong, FIXNUM_MAX, FIXNUM_MAX)
asert_num2i_success(:ulong, FIXNUM_MAX+1, FIXNUM_MAX+1)
end
def test_num2ll
asert_num2i_success(:ll, LLONG_MIN)
asert_num2i_success(:ll, LLONG_MAX)
asert_num2i_error(:ll, LLONG_MIN-1)
asert_num2i_error(:ll, LLONG_MAX+1)
asert_num2i_success(:ll, FIXNUM_MIN)
asert_num2i_success(:ll, FIXNUM_MIN-1)
asert_num2i_success(:ll, FIXNUM_MAX)
asert_num2i_success(:ll, FIXNUM_MAX+1)
end if defined?(Num2int.print_num2ll)
def test_num2ull
asert_num2i_success(:ull, 0)
asert_num2i_success(:ull, ULLONG_MAX)
asert_num2i_success(:ull, -1, ULLONG_MAX)
asert_num2i_success(:ull, LLONG_MIN, LLONG_MAX+1)
asert_num2i_error(:ull, LLONG_MIN-1)
asert_num2i_error(:ull, ULLONG_MAX+1)
asert_num2i_success(:ull, FIXNUM_MIN, ULLONG_MAX-FIXNUM_MAX)
asert_num2i_success(:ull, FIXNUM_MIN-1, ULLONG_MAX-FIXNUM_MAX-1)
asert_num2i_success(:ull, FIXNUM_MAX)
asert_num2i_success(:ull, FIXNUM_MAX+1)
end if defined?(Num2int.print_num2ull)
end
|