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