Commit 2a7cedfeb9
Changed files (1)
lib
lib/std/array_list.zig
@@ -1651,115 +1651,219 @@ test "insertSlice" {
}
}
-test "replaceRange" {
- var arena = std.heap.ArenaAllocator.init(testing.allocator);
- defer arena.deinit();
- const a = arena.allocator();
+test "ArrayList.replaceRange" {
+ const a = testing.allocator;
+
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(1, 0, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(1, 1, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(
+ i32,
+ &[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
+ list.items,
+ );
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(1, 2, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(1, 3, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(1, 4, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
+ }
+}
+
+test "ArrayList.replaceRangeAssumeCapacity" {
+ const a = testing.allocator;
+
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ list.replaceRangeAssumeCapacity(1, 0, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ list.replaceRangeAssumeCapacity(1, 1, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(
+ i32,
+ &[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
+ list.items,
+ );
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ list.replaceRangeAssumeCapacity(1, 2, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
+
+ list.replaceRangeAssumeCapacity(1, 3, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
+ }
+ {
+ var list = ArrayList(i32).init(a);
+ defer list.deinit();
+ try list.appendSlice(&[_]i32{ 1, 2, 3, 4, 5 });
- const init = [_]i32{ 1, 2, 3, 4, 5 };
- const new = [_]i32{ 0, 0, 0 };
+ list.replaceRangeAssumeCapacity(1, 4, &[_]i32{ 0, 0, 0 });
- const result_zero = [_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 };
- const result_eq = [_]i32{ 1, 0, 0, 0, 5 };
- const result_le = [_]i32{ 1, 0, 0, 0, 4, 5 };
- const result_gt = [_]i32{ 1, 0, 0, 0 };
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
+ }
+}
+
+test "ArrayListUnmanaged.replaceRange" {
+ const a = testing.allocator;
{
- var list_zero = ArrayList(i32).init(a);
- var list_eq = ArrayList(i32).init(a);
- var list_lt = ArrayList(i32).init(a);
- var list_gt = ArrayList(i32).init(a);
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- try list_zero.appendSlice(&init);
- try list_eq.appendSlice(&init);
- try list_lt.appendSlice(&init);
- try list_gt.appendSlice(&init);
+ try list.replaceRange(a, 1, 0, &[_]i32{ 0, 0, 0 });
- try list_zero.replaceRange(1, 0, &new);
- try list_eq.replaceRange(1, 3, &new);
- try list_lt.replaceRange(1, 2, &new);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- // after_range > new_items.len in function body
- try testing.expect(1 + 4 > new.len);
- try list_gt.replaceRange(1, 4, &new);
+ try list.replaceRange(a, 1, 1, &[_]i32{ 0, 0, 0 });
- try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
- try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
- try testing.expectEqualSlices(i32, list_lt.items, &result_le);
- try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
+ try testing.expectEqualSlices(
+ i32,
+ &[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
+ list.items,
+ );
}
{
- var list_zero = ArrayListUnmanaged(i32){};
- var list_eq = ArrayListUnmanaged(i32){};
- var list_lt = ArrayListUnmanaged(i32){};
- var list_gt = ArrayListUnmanaged(i32){};
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- try list_zero.appendSlice(a, &init);
- try list_eq.appendSlice(a, &init);
- try list_lt.appendSlice(a, &init);
- try list_gt.appendSlice(a, &init);
+ try list.replaceRange(a, 1, 2, &[_]i32{ 0, 0, 0 });
- try list_zero.replaceRange(a, 1, 0, &new);
- try list_eq.replaceRange(a, 1, 3, &new);
- try list_lt.replaceRange(a, 1, 2, &new);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
+ }
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- // after_range > new_items.len in function body
- try testing.expect(1 + 4 > new.len);
- try list_gt.replaceRange(a, 1, 4, &new);
+ try list.replaceRange(a, 1, 3, &[_]i32{ 0, 0, 0 });
- try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
- try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
- try testing.expectEqualSlices(i32, list_lt.items, &result_le);
- try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
}
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
+
+ try list.replaceRange(a, 1, 4, &[_]i32{ 0, 0, 0 });
+
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
+ }
+}
+
+test "ArrayListUnmanaged.replaceRangeAssumeCapacity" {
+ const a = testing.allocator;
+
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
+
+ list.replaceRangeAssumeCapacity(1, 0, &[_]i32{ 0, 0, 0 });
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 2, 3, 4, 5 }, list.items);
+ }
{
- var list_zero = ArrayList(i32).init(a);
- var list_eq = ArrayList(i32).init(a);
- var list_lt = ArrayList(i32).init(a);
- var list_gt = ArrayList(i32).init(a);
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- try list_zero.appendSlice(&init);
- try list_eq.appendSlice(&init);
- try list_lt.appendSlice(&init);
- try list_gt.appendSlice(&init);
+ list.replaceRangeAssumeCapacity(1, 1, &[_]i32{ 0, 0, 0 });
- list_zero.replaceRangeAssumeCapacity(1, 0, &new);
- list_eq.replaceRangeAssumeCapacity(1, 3, &new);
- list_lt.replaceRangeAssumeCapacity(1, 2, &new);
+ try testing.expectEqualSlices(
+ i32,
+ &[_]i32{ 1, 0, 0, 0, 3, 4, 5 },
+ list.items,
+ );
+ }
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- // after_range > new_items.len in function body
- try testing.expect(1 + 4 > new.len);
- list_gt.replaceRangeAssumeCapacity(1, 4, &new);
+ list.replaceRangeAssumeCapacity(1, 2, &[_]i32{ 0, 0, 0 });
- try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
- try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
- try testing.expectEqualSlices(i32, list_lt.items, &result_le);
- try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 4, 5 }, list.items);
}
{
- var list_zero = ArrayListUnmanaged(i32){};
- var list_eq = ArrayListUnmanaged(i32){};
- var list_lt = ArrayListUnmanaged(i32){};
- var list_gt = ArrayListUnmanaged(i32){};
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- try list_zero.appendSlice(a, &init);
- try list_eq.appendSlice(a, &init);
- try list_lt.appendSlice(a, &init);
- try list_gt.appendSlice(a, &init);
+ list.replaceRangeAssumeCapacity(1, 3, &[_]i32{ 0, 0, 0 });
- list_zero.replaceRangeAssumeCapacity(1, 0, &new);
- list_eq.replaceRangeAssumeCapacity(1, 3, &new);
- list_lt.replaceRangeAssumeCapacity(1, 2, &new);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0, 5 }, list.items);
+ }
+ {
+ var list = ArrayListUnmanaged(i32){};
+ defer list.deinit(a);
+ try list.appendSlice(a, &[_]i32{ 1, 2, 3, 4, 5 });
- // after_range > new_items.len in function body
- try testing.expect(1 + 4 > new.len);
- list_gt.replaceRangeAssumeCapacity(1, 4, &new);
+ list.replaceRangeAssumeCapacity(1, 4, &[_]i32{ 0, 0, 0 });
- try testing.expectEqualSlices(i32, list_zero.items, &result_zero);
- try testing.expectEqualSlices(i32, list_eq.items, &result_eq);
- try testing.expectEqualSlices(i32, list_lt.items, &result_le);
- try testing.expectEqualSlices(i32, list_gt.items, &result_gt);
+ try testing.expectEqualSlices(i32, &[_]i32{ 1, 0, 0, 0 }, list.items);
}
}