| ... | @@ -85,7 +85,7 @@ pub fn AlignedArrayList(comptime T: type, comptime A: u29) type { | ... | @@ -85,7 +85,7 @@ pub fn AlignedArrayList(comptime T: type, comptime A: u29) type { |
| 85 | try self.ensureCapacity(self.len + 1); | 85 | try self.ensureCapacity(self.len + 1); |
| 86 | self.len += 1; | 86 | self.len += 1; |
| 87 | | 87 | |
| 88 | mem.copy(T, self.items[n + 1 .. self.len], self.items[n .. self.len - 1]); | 88 | mem.copyBackwards(T, self.items[n + 1 .. self.len], self.items[n .. self.len - 1]); |
| 89 | self.items[n] = item; | 89 | self.items[n] = item; |
| 90 | } | 90 | } |
| 91 | | 91 | |
| ... | @@ -93,7 +93,7 @@ pub fn AlignedArrayList(comptime T: type, comptime A: u29) type { | ... | @@ -93,7 +93,7 @@ pub fn AlignedArrayList(comptime T: type, comptime A: u29) type { |
| 93 | try self.ensureCapacity(self.len + items.len); | 93 | try self.ensureCapacity(self.len + items.len); |
| 94 | self.len += items.len; | 94 | self.len += items.len; |
| 95 | | 95 | |
| 96 | mem.copy(T, self.items[n + items.len .. self.len], self.items[n .. self.len - items.len]); | 96 | mem.copyBackwards(T, self.items[n + items.len .. self.len], self.items[n .. self.len - items.len]); |
| 97 | mem.copy(T, self.items[n .. n + items.len], items); | 97 | mem.copy(T, self.items[n .. n + items.len], items); |
| 98 | } | 98 | } |
| 99 | | 99 | |
| ... | @@ -266,19 +266,36 @@ test "insert ArrayList test" { | ... | @@ -266,19 +266,36 @@ test "insert ArrayList test" { |
| 266 | defer list.deinit(); | 266 | defer list.deinit(); |
| 267 | | 267 | |
| 268 | try list.append(1); | 268 | try list.append(1); |
| | 269 | try list.append(2); |
| | 270 | try list.append(3); |
| 269 | try list.insert(0, 5); | 271 | try list.insert(0, 5); |
| 270 | assert(list.items[0] == 5); | 272 | assert(list.items[0] == 5); |
| 271 | assert(list.items[1] == 1); | 273 | assert(list.items[1] == 1); |
| | 274 | assert(list.items[2] == 2); |
| | 275 | assert(list.items[3] == 3); |
| | 276 | } |
| | 277 | |
| | 278 | test "insertSlice ArrayList test" { |
| | 279 | var list = ArrayList(i32).init(debug.global_allocator); |
| | 280 | defer list.deinit(); |
| 272 | | 281 | |
| | 282 | try list.append(1); |
| | 283 | try list.append(2); |
| | 284 | try list.append(3); |
| | 285 | try list.append(4); |
| 273 | try list.insertSlice(1, []const i32{ | 286 | try list.insertSlice(1, []const i32{ |
| 274 | 9, | 287 | 9, |
| 275 | 8, | 288 | 8, |
| 276 | }); | 289 | }); |
| 277 | assert(list.items[0] == 5); | 290 | assert(list.items[0] == 1); |
| 278 | assert(list.items[1] == 9); | 291 | assert(list.items[1] == 9); |
| 279 | assert(list.items[2] == 8); | 292 | assert(list.items[2] == 8); |
| | 293 | assert(list.items[3] == 2); |
| | 294 | assert(list.items[4] == 3); |
| | 295 | assert(list.items[5] == 4); |
| 280 | | 296 | |
| 281 | const items = []const i32{1}; | 297 | const items = []const i32{1}; |
| 282 | try list.insertSlice(0, items[0..0]); | 298 | try list.insertSlice(0, items[0..0]); |
| 283 | assert(list.items[0] == 5); | 299 | assert(list.len == 6); |
| | 300 | assert(list.items[0] == 1); |
| 284 | } | 301 | } |