aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/basic.zig
diff options
context:
space:
mode:
authorAndrew Kelley <andrew@ziglang.org>2023-04-23 15:26:57 -0700
committerAndrew Kelley <andrew@ziglang.org>2023-04-25 11:23:41 -0700
commit7c56145a7651124dafdc87176ba85c814cd97d2d (patch)
tree8941c49bbcb2ec4b126d9ed75d98f0706b2768d5 /test/behavior/basic.zig
parent482a0f648c90e8a61dac3a95313e0519bc5f4b5f (diff)
downloadzig-7c56145a7651124dafdc87176ba85c814cd97d2d.tar.gz
zig-7c56145a7651124dafdc87176ba85c814cd97d2d.zip
add behavior test for `@memset` on slices
and avoid new language feature in std.ArrayList for now, until x86_64 self-hosted backend can implement it.
Diffstat (limited to 'test/behavior/basic.zig')
-rw-r--r--test/behavior/basic.zig50
1 files changed, 50 insertions, 0 deletions
diff --git a/test/behavior/basic.zig b/test/behavior/basic.zig
index a1ea2c340f..a59397d0b5 100644
--- a/test/behavior/basic.zig
+++ b/test/behavior/basic.zig
@@ -357,6 +357,14 @@ test "@memset on array pointers" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_wasm) {
+ // TODO: implement memset when element ABI size > 1
+ return error.SkipZigTest;
+ }
+ if (builtin.zig_backend == .stage2_x86_64) {
+ // TODO: implement memset when element ABI size > 1
+ return error.SkipZigTest;
+ }
try testMemsetArray();
try comptime testMemsetArray();
@@ -381,6 +389,48 @@ fn testMemsetArray() !void {
}
}
+test "@memset on slices" {
+ if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_sparc64) return error.SkipZigTest;
+ if (builtin.zig_backend == .stage2_wasm) {
+ // TODO: implement memset when element ABI size > 1
+ // TODO: implement memset on slices
+ return error.SkipZigTest;
+ }
+ if (builtin.zig_backend == .stage2_x86_64) {
+ // TODO: implement memset when element ABI size > 1
+ // TODO: implement memset on slices
+ return error.SkipZigTest;
+ }
+
+ try testMemsetSlice();
+ try comptime testMemsetSlice();
+}
+
+fn testMemsetSlice() !void {
+ {
+ // memset slice to non-undefined, ABI size == 1
+ var array: [20]u8 = undefined;
+ var len = array.len;
+ var slice = array[0..len];
+ @memset(slice, 'A');
+ try expect(slice[0] == 'A');
+ try expect(slice[11] == 'A');
+ try expect(slice[19] == 'A');
+ }
+ {
+ // memset slice to non-undefined, ABI size > 1
+ var array: [20]u32 = undefined;
+ var len = array.len;
+ var slice = array[0..len];
+ @memset(slice, 1234);
+ try expect(slice[0] == 1234);
+ try expect(slice[11] == 1234);
+ try expect(slice[19] == 1234);
+ }
+}
+
test "memcpy and memset intrinsics" {
if (builtin.zig_backend == .stage2_aarch64) return error.SkipZigTest;
if (builtin.zig_backend == .stage2_arm) return error.SkipZigTest;