| ... | @@ -1351,7 +1351,7 @@ pub fn ArrayHashMapUnmanaged( | ... | @@ -1351,7 +1351,7 @@ pub fn ArrayHashMapUnmanaged( |
| 1351 | pub fn setKeyContext(self: *Self, gpa: Allocator, index: usize, new_key: K, ctx: Context) Oom!void { | 1351 | pub fn setKeyContext(self: *Self, gpa: Allocator, index: usize, new_key: K, ctx: Context) Oom!void { |
| 1352 | const key_ptr = &self.entries.items(.key)[index]; | 1352 | const key_ptr = &self.entries.items(.key)[index]; |
| 1353 | key_ptr.* = new_key; | 1353 | key_ptr.* = new_key; |
| 1354 | if (store_hash) self.entries.items(.hash)[index].* = checkedHash(ctx, key_ptr.*); | 1354 | if (store_hash) self.entries.items(.hash)[index] = checkedHash(ctx, key_ptr.*); |
| 1355 | try rebuildIndex(self, gpa, undefined); | 1355 | try rebuildIndex(self, gpa, undefined); |
| 1356 | } | 1356 | } |
| 1357 | | 1357 | |
| ... | @@ -2550,10 +2550,26 @@ test "0 sized key and 0 sized value" { | ... | @@ -2550,10 +2550,26 @@ test "0 sized key and 0 sized value" { |
| 2550 | try testing.expectEqual(map.get(0), null); | 2550 | try testing.expectEqual(map.get(0), null); |
| 2551 | } | 2551 | } |
| 2552 | | 2552 | |
| 2553 | test "setKey" { | 2553 | test "setKey storehash true" { |
| 2554 | const gpa = std.testing.allocator; | 2554 | const gpa = std.testing.allocator; |
| 2555 | | 2555 | |
| 2556 | var map: AutoArrayHashMapUnmanaged(i32, i32) = .empty; | 2556 | var map: ArrayHashMapUnmanaged(i32, i32, AutoContext(i32), true) = .empty; |
| | 2557 | defer map.deinit(gpa); |
| | 2558 | |
| | 2559 | try map.put(gpa, 12, 34); |
| | 2560 | try map.put(gpa, 56, 78); |
| | 2561 | |
| | 2562 | try map.setKey(gpa, 0, 42); |
| | 2563 | try testing.expectEqual(2, map.count()); |
| | 2564 | try testing.expectEqual(false, map.contains(12)); |
| | 2565 | try testing.expectEqual(34, map.get(42)); |
| | 2566 | try testing.expectEqual(78, map.get(56)); |
| | 2567 | } |
| | 2568 | |
| | 2569 | test "setKey storehash false" { |
| | 2570 | const gpa = std.testing.allocator; |
| | 2571 | |
| | 2572 | var map: ArrayHashMapUnmanaged(i32, i32, AutoContext(i32), false) = .empty; |
| 2557 | defer map.deinit(gpa); | 2573 | defer map.deinit(gpa); |
| 2558 | | 2574 | |
| 2559 | try map.put(gpa, 12, 34); | 2575 | try map.put(gpa, 12, 34); |