authorgravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-02-11 12:35:31+01:00
committergravatar for kubkon@jakubkonka.comJakub Konka <kubkon@jakubkonka.com> 2022-02-11 12:49:06+01:00
logcad3e3e63a238902cdd80eb2504c879d6637a4d5
tree298c559ac845e266a2c8b0337775021036e17be1
parent066758b1a296aa6f01d505f7b90d5aee2f387d30

x64: enable more behavior tests


3 files changed, 59 insertions(+), 10 deletions(-)

test/behavior.zig+1-1
......@@ -38,6 +38,7 @@ test {
3838 _ = @import("behavior/optional.zig");
3939 _ = @import("behavior/prefetch.zig");
4040 _ = @import("behavior/pub_enum.zig");
41 _ = @import("behavior/slice.zig");
4142 _ = @import("behavior/slice_sentinel_comptime.zig");
4243 _ = @import("behavior/type.zig");
4344 _ = @import("behavior/truncate.zig");
......@@ -76,7 +77,6 @@ test {
7677 _ = @import("behavior/pointers.zig");
7778 _ = @import("behavior/ptrcast.zig");
7879 _ = @import("behavior/ref_var_in_if_after_if_2nd_switch_prong.zig");
79 _ = @import("behavior/slice.zig");
8080 _ = @import("behavior/src.zig");
8181 _ = @import("behavior/this.zig");
8282 _ = @import("behavior/try.zig");
test/behavior/basic.zig-9
......@@ -120,14 +120,12 @@ test "return string from function" {
120120
121121test "hex escape" {
122122 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
123 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
124123
125124 try expect(mem.eql(u8, "\x68\x65\x6c\x6c\x6f", "hello"));
126125}
127126
128127test "multiline string" {
129128 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
130 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
131129
132130 const s1 =
133131 \\one
......@@ -140,7 +138,6 @@ test "multiline string" {
140138
141139test "multiline string comments at start" {
142140 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
143 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
144141
145142 const s1 =
146143 //\\one
......@@ -153,7 +150,6 @@ test "multiline string comments at start" {
153150
154151test "multiline string comments at end" {
155152 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
156 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
157153
158154 const s1 =
159155 \\one
......@@ -166,7 +162,6 @@ test "multiline string comments at end" {
166162
167163test "multiline string comments in middle" {
168164 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
169 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
170165
171166 const s1 =
172167 \\one
......@@ -179,7 +174,6 @@ test "multiline string comments in middle" {
179174
180175test "multiline string comments at multiple places" {
181176 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
182 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
183177
184178 const s1 =
185179 \\one
......@@ -193,14 +187,11 @@ test "multiline string comments at multiple places" {
193187}
194188
195189test "string concatenation" {
196 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
197
198190 try expect(mem.eql(u8, "OK" ++ " IT " ++ "WORKED", "OK IT WORKED"));
199191}
200192
201193test "array mult operator" {
202194 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
203 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
204195
205196 try expect(mem.eql(u8, "ab" ** 5, "ababababab"));
206197}
test/behavior/slice.zig+58
......@@ -27,7 +27,10 @@ comptime {
2727}
2828
2929test "slicing" {
30 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
31 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
3032 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
33
3134 var array: [20]i32 = undefined;
3235
3336 array[5] = 1234;
......@@ -45,6 +48,8 @@ test "slicing" {
4548
4649test "const slice" {
4750 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
51 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
52
4853 comptime {
4954 const a = "1234567890";
5055 try expect(a.len == 10);
......@@ -56,6 +61,8 @@ test "const slice" {
5661
5762test "comptime slice of undefined pointer of length 0" {
5863 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
64 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
65
5966 const slice1 = @as([*]i32, undefined)[0..0];
6067 try expect(slice1.len == 0);
6168 const slice2 = @as([*]i32, undefined)[100..100];
......@@ -64,6 +71,8 @@ test "comptime slice of undefined pointer of length 0" {
6471
6572test "implicitly cast array of size 0 to slice" {
6673 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
74 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
75
6776 var msg = [_]u8{};
6877 try assertLenIsZero(&msg);
6978}
......@@ -74,6 +83,8 @@ fn assertLenIsZero(msg: []const u8) !void {
7483
7584test "access len index of sentinel-terminated slice" {
7685 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
86 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
87
7788 const S = struct {
7889 fn doTheTest() !void {
7990 var slice: [:0]const u8 = "hello";
......@@ -88,6 +99,8 @@ test "access len index of sentinel-terminated slice" {
8899
89100test "comptime slice of slice preserves comptime var" {
90101 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
102 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
103
91104 comptime {
92105 var buff: [10]u8 = undefined;
93106 buff[0..][0..][0] = 1;
......@@ -97,6 +110,8 @@ test "comptime slice of slice preserves comptime var" {
97110
98111test "slice of type" {
99112 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
113 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
114
100115 comptime {
101116 var types_array = [_]type{ i32, f64, type };
102117 for (types_array) |T, i| {
......@@ -120,6 +135,9 @@ test "slice of type" {
120135
121136test "generic malloc free" {
122137 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
138 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
139 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
140
123141 const a = memAlloc(u8, 10) catch unreachable;
124142 memFree(u8, a);
125143}
......@@ -133,6 +151,8 @@ fn memFree(comptime T: type, memory: []T) void {
133151
134152test "slice of hardcoded address to pointer" {
135153 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
154 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
155
136156 const S = struct {
137157 fn doTheTest() !void {
138158 const pointer = @intToPtr([*]u8, 0x04)[0..2];
......@@ -148,6 +168,8 @@ test "slice of hardcoded address to pointer" {
148168
149169test "comptime slice of pointer preserves comptime var" {
150170 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
171 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
172
151173 comptime {
152174 var buff: [10]u8 = undefined;
153175 var a = @ptrCast([*]u8, &buff);
......@@ -158,6 +180,8 @@ test "comptime slice of pointer preserves comptime var" {
158180
159181test "comptime pointer cast array and then slice" {
160182 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
183 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
184
161185 const array = [_]u8{ 1, 2, 3, 4, 5, 6, 7, 8 };
162186
163187 const ptrA: [*]const u8 = @ptrCast([*]const u8, &array);
......@@ -172,6 +196,9 @@ test "comptime pointer cast array and then slice" {
172196
173197test "slicing zero length array" {
174198 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
199 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
200 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
201
175202 const s1 = ""[0..];
176203 const s2 = ([_]u32{})[0..];
177204 try expect(s1.len == 0);
......@@ -185,6 +212,8 @@ const y = x[0x100..];
185212test "compile time slice of pointer to hard coded address" {
186213 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
187214 if (builtin.zig_backend == .stage1) return error.SkipZigTest;
215 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
216 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
188217
189218 try expect(@ptrToInt(x) == 0x1000);
190219 try expect(x.len == 0x500);
......@@ -194,6 +223,9 @@ test "compile time slice of pointer to hard coded address" {
194223}
195224
196225test "slice string literal has correct type" {
226 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
227 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
228
197229 comptime {
198230 try expect(@TypeOf("aoeu"[0..]) == *const [4:0]u8);
199231 const array = [_]i32{ 1, 2, 3, 4 };
......@@ -207,6 +239,7 @@ test "slice string literal has correct type" {
207239
208240test "result location zero sized array inside struct field implicit cast to slice" {
209241 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
242 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
210243
211244 const E = struct {
212245 entries: []u32,
......@@ -216,6 +249,9 @@ test "result location zero sized array inside struct field implicit cast to slic
216249}
217250
218251test "runtime safety lets us slice from len..len" {
252 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
253 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
254
219255 var an_array = [_]u8{ 1, 2, 3 };
220256 try expect(mem.eql(u8, sliceFromLenToLen(an_array[0..], 3, 3), ""));
221257}
......@@ -225,6 +261,9 @@ fn sliceFromLenToLen(a_slice: []u8, start: usize, end: usize) []u8 {
225261}
226262
227263test "C pointer" {
264 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
265 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
266
228267 var buf: [*c]const u8 = "kjdhfkjdhfdkjhfkfjhdfkjdhfkdjhfdkjhf";
229268 var len: u32 = 10;
230269 var slice = buf[0..len];
......@@ -232,6 +271,9 @@ test "C pointer" {
232271}
233272
234273test "C pointer slice access" {
274 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
275 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
276
235277 var buf: [10]u32 = [1]u32{42} ** 10;
236278 const c_ptr = @ptrCast([*c]const u32, &buf);
237279
......@@ -245,6 +287,8 @@ test "C pointer slice access" {
245287}
246288
247289test "comptime slices are disambiguated" {
290 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
291
248292 try expect(sliceSum(&[_]u8{ 1, 2 }) == 3);
249293 try expect(sliceSum(&[_]u8{ 3, 4 }) == 7);
250294}
......@@ -258,6 +302,9 @@ fn sliceSum(comptime q: []const u8) i32 {
258302}
259303
260304test "slice type with custom alignment" {
305 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
306 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
307
261308 const LazilyResolvedType = struct {
262309 anything: i32,
263310 };
......@@ -269,6 +316,8 @@ test "slice type with custom alignment" {
269316}
270317
271318test "obtaining a null terminated slice" {
319 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
320 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
272321 if (builtin.zig_backend == .stage2_c) return error.SkipZigTest; // TODO
273322
274323 // here we have a normal array
......@@ -294,6 +343,7 @@ test "obtaining a null terminated slice" {
294343
295344test "empty array to slice" {
296345 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
346 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
297347
298348 const S = struct {
299349 fn doTheTest() !void {
......@@ -312,6 +362,9 @@ test "empty array to slice" {
312362}
313363
314364test "@ptrCast slice to pointer" {
365 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
366 if (builtin.zig_backend == .stage2_x86_64) return error.SkipZigTest;
367
315368 const S = struct {
316369 fn doTheTest() !void {
317370 var array align(@alignOf(u16)) = [5]u8{ 0xff, 0xff, 0xff, 0xff, 0xff };
......@@ -327,6 +380,7 @@ test "@ptrCast slice to pointer" {
327380
328381test "slice syntax resulting in pointer-to-array" {
329382 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
383 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
330384
331385 const S = struct {
332386 fn doTheTest() !void {
......@@ -475,6 +529,7 @@ test "slice syntax resulting in pointer-to-array" {
475529
476530test "type coercion of pointer to anon struct literal to pointer to slice" {
477531 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
532 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
478533
479534 const S = struct {
480535 const U = union {
......@@ -508,6 +563,7 @@ test "type coercion of pointer to anon struct literal to pointer to slice" {
508563
509564test "array concat of slices gives slice" {
510565 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
566 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
511567
512568 comptime {
513569 var a: []const u8 = "aoeu";
......@@ -519,6 +575,7 @@ test "array concat of slices gives slice" {
519575
520576test "slice bounds in comptime concatenation" {
521577 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
578 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
522579
523580 const bs = comptime blk: {
524581 const b = "........1........";
......@@ -535,6 +592,7 @@ test "slice bounds in comptime concatenation" {
535592
536593test "slice sentinel access at comptime" {
537594 if (builtin.zig_backend != .stage1) return error.SkipZigTest; // TODO
595 if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
538596
539597 {
540598 const str0 = &[_:0]u8{ '1', '2', '3' };