diff options
| author | Andrew Kelley <andrew@ziglang.org> | 2023-04-23 15:26:57 -0700 |
|---|---|---|
| committer | Andrew Kelley <andrew@ziglang.org> | 2023-04-25 11:23:41 -0700 |
| commit | 7c56145a7651124dafdc87176ba85c814cd97d2d (patch) | |
| tree | 8941c49bbcb2ec4b126d9ed75d98f0706b2768d5 /test/behavior/basic.zig | |
| parent | 482a0f648c90e8a61dac3a95313e0519bc5f4b5f (diff) | |
| download | zig-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.zig | 50 |
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; |
