authorgravatar for walt@waltermays.comWalter Mays <walt@waltermays.com> 2020-05-26 16:17:15-05:00
committergravatar for andrew@ziglang.orgAndrew Kelley <andrew@ziglang.org> 2020-05-28 23:09:21-04:00
log8630ae7523362e00efe9cc914cf05dcef09c3500
treeb63cb2c18e60b5a7aa6f751ae68ba63c7a35e6bd
parent1e0de896b8343e82a46a23fc287eab4fce06b423

Remove reliance on hashing algorithm for iterator reset test.


1 files changed, 29 insertions(+), 22 deletions(-)

lib/std/hash_map.zig+29-22
...@@ -473,46 +473,53 @@ test "iterator hash map" {...@@ -473,46 +473,53 @@ test "iterator hash map" {
473 var reset_map = AutoHashMap(i32, i32).init(std.testing.allocator);473 var reset_map = AutoHashMap(i32, i32).init(std.testing.allocator);
474 defer reset_map.deinit();474 defer reset_map.deinit();
475475
476 try reset_map.putNoClobber(1, 11);476 try reset_map.putNoClobber(0, 11);
477 try reset_map.putNoClobber(2, 22);477 try reset_map.putNoClobber(1, 22);
478 try reset_map.putNoClobber(3, 33);478 try reset_map.putNoClobber(2, 33);
479479
480 // TODO this test depends on the hashing algorithm, because it assumes the
481 // order of the elements in the hashmap. This should not be the case.
482 var keys = [_]i32{480 var keys = [_]i32{
483 1,481 0, 2, 1,
484 3,
485 2,
486 };482 };
483
487 var values = [_]i32{484 var values = [_]i32{
488 11,485 11, 33, 22,
489 33,486 };
490 22,487
488 var buffer = [_]i32{
489 0, 0, 0,
491 };490 };
492491
493 var it = reset_map.iterator();492 var it = reset_map.iterator();
493 const first_entry = it.next().?;
494 it.reset();
495
494 var count: usize = 0;496 var count: usize = 0;
495 while (it.next()) |next| {497 while (it.next()) |kv| : (count += 1) {
496 testing.expect(next.key == keys[count]);498 buffer[@intCast(usize, kv.key)] = kv.value;
497 testing.expect(next.value == values[count]);
498 count += 1;
499 }499 }
500
501 testing.expect(count == 3);500 testing.expect(count == 3);
502 testing.expect(it.next() == null);501 testing.expect(it.next() == null);
502
503 for (buffer) |v, i| {
504 testing.expect(buffer[@intCast(usize, keys[i])] == values[i]);
505 }
506
503 it.reset();507 it.reset();
504 count = 0;508 count = 0;
505 while (it.next()) |next| {509 while (it.next()) |kv| {
506 testing.expect(next.key == keys[count]);510 buffer[@intCast(usize, kv.key)] = kv.value;
507 testing.expect(next.value == values[count]);
508 count += 1;511 count += 1;
509 if (count == 2) break;512 if (count >= 2) break;
513 }
514
515 for (buffer[0..2]) |v, i| {
516 testing.expect(buffer[@intCast(usize, keys[i])] == values[i]);
510 }517 }
511518
512 it.reset();519 it.reset();
513 var entry = it.next().?;520 var entry = it.next().?;
514 testing.expect(entry.key == keys[0]);521 testing.expect(entry.key == first_entry.key);
515 testing.expect(entry.value == values[0]);522 testing.expect(entry.value == first_entry.value);
516}523}
517524
518test "ensure capacity" {525test "ensure capacity" {