1 | const ( |
2 | a = 3 |
3 | u = u64(1) |
4 | ) |
5 | |
6 | fn 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 | |
14 | fn 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 | |
42 | fn 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 | |
51 | fn 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 | |
60 | fn 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 | |
69 | fn test_left_shift_precendence() { |
70 | assert (2 << 4 | 3) == ((2 << 4) | 3) |
71 | assert (2 << 4 | 3) != (2 << (4 | 3)) |
72 | } |
73 | |
74 | fn test_right_shift_precendence() { |
75 | assert (256 >> 4 | 3) == ((256 >> 4) | 3) |
76 | assert (256 >> 4 | 3) != (256 >> (4 | 3)) |
77 | } |
78 | |
79 | fn 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 | /* |
90 | fn test_cmp() { |
91 | assert 1 ≠ 2 |
92 | assert 1 ⩽ 2 |
93 | assert 1 ⩾ 0 |
94 | } |
95 | */ |
96 | type MyInt = int |
97 | |
98 | fn test_int_alias() { |
99 | i := MyInt(2) |
100 | assert i + 10 == 12 |
101 | } |
102 | |
103 | fn 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 | |
124 | fn 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 | |
143 | fn 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 | |
164 | fn 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 | |
187 | fn 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 | |
202 | fn 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 | |
245 | fn 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 | } |