From 4cb608e92143b00c46eb5dd479a92ab6763a6a05 Mon Sep 17 00:00:00 2001 From: Hila Friedman Date: Wed, 24 Jun 2026 13:42:58 +0300 Subject: [PATCH] add test coverage for overlapping assignment --- test/behavior.zig | 1 + test/behavior/overlapping_assign.zig | 37 ++++++++++++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 test/behavior/overlapping_assign.zig diff --git a/test/behavior.zig b/test/behavior.zig index 32be1951bcd7359632884683ca6b2108bd18a717..26333758086ae14904d9c275e4afcb55eb3176f7 100644 --- a/test/behavior.zig +++ b/test/behavior.zig @@ -60,6 +60,7 @@ test { _ = @import("behavior/nan.zig"); _ = @import("behavior/null.zig"); _ = @import("behavior/optional.zig"); + _ = @import("behavior/overlapping_assign.zig"); _ = @import("behavior/packed-struct.zig"); _ = @import("behavior/packed_struct_explicit_backing_int.zig"); _ = @import("behavior/packed-union.zig"); diff --git a/test/behavior/overlapping_assign.zig b/test/behavior/overlapping_assign.zig new file mode 100644 index 0000000000000000000000000000000000000000..42e11b20fea2006f660c4ae818d3c16972e1f63c --- /dev/null +++ b/test/behavior/overlapping_assign.zig @@ -0,0 +1,37 @@ +const std = @import("std"); +const expectEqualSlices = std.testing.expectEqualSlices; + +test "assignment to overlapping memory" { + try theTest(); + try comptime theTest(); +} + +fn theTest() !void { + var a1: [3]usize = .{ 0, 1, 2 }; + a1[1..3].* = a1[0..2].*; + try expectEqualSlices(usize, &.{ 0, 0, 1 }, &a1); + + var a2: [3]usize = .{ 0, 1, 2 }; + a2[0..2].* = a2[1..3].*; + try expectEqualSlices(usize, &.{ 1, 2, 2 }, &a2); + + var a3: [16]u8 = .{ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + }; + a3[1..16].* = a3[0..15].*; + try expectEqualSlices(u8, &.{ + 0, 0, 1, 2, 3, 4, 5, 6, + 7, 8, 9, 10, 11, 12, 13, 14, + }, &a3); + + var a4: [16]u8 = .{ + 0, 1, 2, 3, 4, 5, 6, 7, + 8, 9, 10, 11, 12, 13, 14, 15, + }; + a4[0..15].* = a4[1..16].*; + try expectEqualSlices(u8, &.{ + 1, 2, 3, 4, 5, 6, 7, 8, + 9, 10, 11, 12, 13, 14, 15, 15, + }, &a4); +} -- 2.54.0