v2 / vlib / builtin / js / int_test.js.v
246 lines · 224 sloc · 5.29 KB · 99be39cbd15d4bbb5ab14d2f870199908c00bc8d
Raw
1// vtest retry: 3
2// vtest build: present_node?
3
4const a = 3
5const u = u64(1)
6
7fn test_const() {
8 b := (true && true) || false
9 assert b == true
10 assert a == 3
11 assert u == u64(1)
12 assert u == 1 // make sure this works without the cast
13}
14
15fn test_str_methods() {
16 assert i8(1).str() == '1'
17 assert i8(-1).str() == '-1'
18 assert i16(1).str() == '1'
19 assert i16(-1).str() == '-1'
20 assert int(1).str() == '1'
21 assert int(-1).str() == '-1'
22 assert int(2147483647).str() == '2147483647'
23 // todo: overflow check for integers
24 // assert int(2147483648).str() == '-2147483648'
25 // assert int(-2147483648).str() == '-2147483648'
26 assert i64(1).str() == '1'
27 assert i64(-1).str() == '-1'
28 assert u16(1).str() == '1'
29 // assert u16(-1).str() == '65535'
30 assert u32(1).str() == '1'
31 // assert u32(-1).str() == '4294967295'
32 assert u64(1).str() == '1'
33 // assert u64(-1).str() == '18446744073709551615'
34}
35
36fn test_and_precedence() {
37 assert (2 & 0 == 0) == ((2 & 0) == 0)
38 assert (2 & 0 != 0) == ((2 & 0) != 0)
39 assert (0 & 0 >= 0) == ((0 & 0) >= 0)
40 assert (0 & 0 <= 0) == ((0 & 0) <= 0)
41 assert (0 & 0 < 1) == ((0 & 0) < 1)
42 assert (1 & 2 > 0) == ((1 & 2) > 0)
43}
44
45fn test_or_precedence() {
46 assert (1 | 0 == 0) == ((1 | 0) == 0)
47 assert (1 | 0 != 1) == ((1 | 0) != 1)
48 assert (1 | 0 >= 2) == ((1 | 0) >= 2)
49 assert (1 | 0 <= 0) == ((1 | 0) <= 0)
50 assert (1 | 0 < 0) == ((1 | 0) < 0)
51 assert (1 | 0 > 1) == ((1 | 0) > 1)
52}
53
54fn test_xor_precedence() {
55 assert (1 ^ 0 == 2) == ((1 ^ 0) == 2)
56 assert (1 ^ 0 != 2) == ((1 ^ 0) != 2)
57 assert (1 ^ 0 >= 0) == ((1 ^ 0) >= 0)
58 assert (1 ^ 0 <= 1) == ((1 ^ 0) <= 1)
59 assert (1 ^ 0 < 0) == ((1 ^ 0) < 0)
60 assert (1 ^ 0 > 1) == ((1 ^ 0) > 1)
61}
62
63fn test_left_shift_precedence() {
64 assert (2 << 4 | 3) == ((2 << 4) | 3)
65 assert (2 << 4 | 3) != (2 << (4 | 3))
66}
67
68fn test_right_shift_precedence() {
69 assert (256 >> 4 | 3) == ((256 >> 4) | 3)
70 assert (256 >> 4 | 3) != (256 >> (4 | 3))
71}
72
73fn test_i8_print() {
74 b := i8(0)
75 println(b)
76 c := i16(7)
77 println(c)
78 d := u16(6)
79 println(d)
80 assert true
81}
82
83/*
84fn test_cmp() {
85 assert 1 ≠ 2
86 assert 1 ⩽ 2
87 assert 1 ⩾ 0
88}
89*/
90type MyInt = int
91
92fn test_int_alias() {
93 i := MyInt(2)
94 assert i + 10 == 12
95}
96
97fn test_hex() {
98 x := u64(10)
99 assert x.hex() == 'a'
100 b := 1234
101 assert b.hex() == '4d2'
102 b1 := -1
103 println(b1)
104 // assert b1.hex() == 'ffffffff'
105 // unsigned tests
106 // assert u8(12).hex() == '0c'
107 // assert u8(255).hex() == 'ff'
108 assert u16(65535).hex() == 'ffff'
109 // assert u32(-1).hex() == 'ffffffff'
110 // assert u64(-1).hex() == 'ffffffffffffffff'
111 // signed tests
112 // assert i8(-1).hex() == 'ff'
113 assert i8(12).hex() == '0c'
114 assert i16(32767).hex() == '7fff'
115 assert int(2147483647).hex() == '7fffffff'
116 assert i64(9223372036854775807).hex() == '7fffffffffffffff'
117}
118
119fn test_bin() {
120 x1 := 0b10
121 assert x1 == 2
122 x2 := 0b10101010
123 assert x2 == 0xAA
124 x3 := -0b0000001
125 assert x3 == -1
126 x4 := 0b11111111
127 assert x4 == 255
128 x5 := u8(0b11111111)
129 assert x5 == 255
130 x6 := char(0b11111111)
131 assert int(x6) == -1
132 x7 := 0b0
133 assert x7 == 0
134 x8 := -0b0
135 assert x8 == 0
136}
137
138fn test_oct() {
139 x1 := 0o12
140 assert x1 == 10
141 x2 := 0o350
142 assert x2 == 232
143 x3 := 0o00073
144 assert x3 == 59
145 x4 := 0
146 assert x4 == 0
147 x5 := 195
148 assert x5 == 195
149 x6 := -0o744
150 assert x6 == -484
151 x7 := -0o000042
152 assert x7 == -34
153 x8 := -112
154 assert x8 == -112
155 x9 := -0
156 assert x9 == 0
157}
158
159fn test_num_separator() {
160 // int
161 assert 100_000_0 == 1000000
162 assert -2_23_4_6 == -22346
163
164 // bin
165 assert 0b0_11 == 3
166 assert -0b0_100 == -4
167
168 // oct
169 assert 0o1_73 == 123
170 assert -0o17_5 == -125
171 assert -0o175 == -125
172
173 // hex
174 assert 0xFF == 255
175 assert 0xF_F == 255
176
177 // f32 or f64
178 assert 312_2.55 == 3122.55
179 assert 312_2.55 == 3122.55
180}
181
182fn test_int_decl() {
183 x1 := 0
184 x2 := 1333
185 x3 := -88955
186 x4 := 2000000000
187 x5 := -1999999999
188 assert typeof(x1).name == 'int'
189 assert typeof(x2).name == 'int'
190 assert typeof(x3).name == 'int'
191 assert typeof(x4).name == 'int'
192 assert typeof(x5).name == 'int'
193 x7 := u64(-321314588900011)
194 assert typeof(x7).name == 'u64'
195}
196
197fn test_int_to_hex() {
198 // array hex
199 /*
200 st := [u8(`V`), `L`, `A`, `N`, `G`]
201 assert st.hex() == '564c414e47'
202 assert st.hex().len == 10
203 st1 := [u8(0x41)].repeat(100)
204 assert st1.hex() == '41'.repeat(100)*/
205 // --- int to hex tests
206 c := 12
207 // 8Bit
208 assert u8(0).hex() == '00'
209 assert u8(c).hex() == '0c'
210 assert i8(c).hex() == '0c'
211 assert u8(127).hex() == '7f'
212 assert i8(127).hex() == '7f'
213 assert u8(255).hex() == 'ff'
214 // assert u8(-1).hex() == 'ff'
215 // 16bit
216 assert u16(0).hex() == '0'
217 assert i16(c).hex() == 'c'
218 assert u16(c).hex() == 'c'
219 assert i16(32767).hex() == '7fff'
220 assert u16(32767).hex() == '7fff'
221 // assert i16(-1).hex() == 'ffff'
222 assert u16(65535).hex() == 'ffff'
223 // 32bit
224 assert u32(0).hex() == '0'
225 assert c.hex() == 'c'
226 assert u32(c).hex() == 'c'
227 assert 2147483647.hex() == '7fffffff'
228 assert u32(2147483647).hex() == '7fffffff'
229 // assert (-1).hex() == 'ffffffffffffffff'
230 // assert u32(4294967295).hex() == 'ffffffff'
231 // 64 bit
232 assert u64(0).hex() == '0'
233 assert i64(c).hex() == 'c'
234 assert u64(c).hex() == 'c'
235 assert i64(9223372036854775807).hex() == '7fffffffffffffff'
236 assert u64(9223372036854775807).hex() == '7fffffffffffffff'
237 // assert i64(-1).hex() == 'ffffffffffffffff'
238 assert u64(18446744073709551615).hex() == 'ffffffffffffffff'
239}
240
241fn test_repeat() {
242 b := u8(`V`)
243 assert b.repeat(5) == 'VVVVV'
244 assert b.repeat(1) == b.ascii_str()
245 assert b.repeat(0) == ''
246}
247