From 7c8d60e814b985d3aab43c7c467f424596942ef9 Mon Sep 17 00:00:00 2001 From: dweiller <4678790+dweiller@users.noreplay.github.com> Date: Mon, 1 May 2023 15:37:25 +1000 Subject: [PATCH] test: add behavior tests for slice-by-length --- test/behavior/slice.zig | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/test/behavior/slice.zig b/test/behavior/slice.zig index 237ddd195b..51538d9b10 100644 --- a/test/behavior/slice.zig +++ b/test/behavior/slice.zig @@ -355,6 +355,10 @@ test "slice syntax resulting in pointer-to-array" { try testSlice(); try testSliceOpt(); try testSliceAlign(); + try testSliceLength(); + try testSliceLengthZ(); + try testArrayLength(); + try testArrayLengthZ(); } fn testArray() !void { @@ -465,6 +469,40 @@ test "slice syntax resulting in pointer-to-array" { try expectEqualSlices("a"[0..] ++ "b"[0..], "ab"); try expectEqualSlices("a"[0.. :0] ++ "b"[0.. :0], "ab"); } + + fn testSliceLength() !void { + var array = [5]u8{ 1, 2, 3, 4, 5 }; + var slice: []u8 = &array; + comptime try expect(@TypeOf(slice[1..][0..2]) == *[2]u8); + comptime try expect(@TypeOf(slice[1..][0..4]) == *[4]u8); + comptime try expect(@TypeOf(slice[1..][0..2 :4]) == *[2:4]u8); + } + + fn testSliceLengthZ() !void { + var array = [5:0]u8{ 1, 2, 3, 4, 5 }; + var slice: [:0]u8 = &array; + comptime try expect(@TypeOf(slice[1..][0..2]) == *[2]u8); + comptime try expect(@TypeOf(slice[1..][0..2 :4]) == *[2:4]u8); + comptime try expect(@TypeOf(slice[1.. :0][0..2]) == *[2]u8); + comptime try expect(@TypeOf(slice[1.. :0][0..2 :4]) == *[2:4]u8); + } + + fn testArrayLength() !void { + var array = [5]u8{ 1, 2, 3, 4, 5 }; + comptime try expect(@TypeOf(array[1..][0..2]) == *[2]u8); + comptime try expect(@TypeOf(array[1..][0..4]) == *[4]u8); + comptime try expect(@TypeOf(array[1..][0..2 :4]) == *[2:4]u8); + } + + fn testArrayLengthZ() !void { + var array = [5:0]u8{ 1, 2, 3, 4, 5 }; + comptime try expect(@TypeOf(array[1..][0..2]) == *[2]u8); + comptime try expect(@TypeOf(array[1..][0..4]) == *[4:0]u8); + comptime try expect(@TypeOf(array[1..][0..2 :4]) == *[2:4]u8); + comptime try expect(@TypeOf(array[1.. :0][0..2]) == *[2]u8); + comptime try expect(@TypeOf(array[1.. :0][0..4]) == *[4:0]u8); + comptime try expect(@TypeOf(array[1.. :0][0..2 :4]) == *[2:4]u8); + } }; try S.doTheTest();