aboutsummaryrefslogtreecommitdiff
path: root/test/behavior/slice.zig
diff options
context:
space:
mode:
authordweiller <4678790+dweiller@users.noreplay.github.com>2023-05-01 15:37:25 +1000
committerdweiller <4678790+dweiller@users.noreplay.github.com>2023-05-07 15:55:20 +1000
commit7c8d60e814b985d3aab43c7c467f424596942ef9 (patch)
tree87faddca683187829a9a8e07276c9772ba6a7304 /test/behavior/slice.zig
parent2c2a0402c65986674d427390292f2fe38474c90f (diff)
downloadzig-7c8d60e814b985d3aab43c7c467f424596942ef9.tar.gz
zig-7c8d60e814b985d3aab43c7c467f424596942ef9.zip
test: add behavior tests for slice-by-length
Diffstat (limited to 'test/behavior/slice.zig')
-rw-r--r--test/behavior/slice.zig38
1 files changed, 38 insertions, 0 deletions
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();