Skip to content

Commit f486cdc

Browse files
committed
---
yaml --- r: 20766 b: refs/heads/snap-stage3 c: a89ed49 h: refs/heads/master v: v3
1 parent 62a450e commit f486cdc

File tree

2 files changed

+43
-1
lines changed

2 files changed

+43
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
refs/heads/master: e430a699f2c60890d9b86069fd0c68a70ece7120
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
4-
refs/heads/snap-stage3: 513557b465a6393aebf8d309320c7eaab9ceae2c
4+
refs/heads/snap-stage3: a89ed49d3d01abbd49889832d87650b6c99ff85c
55
refs/heads/try: ffbe0e0e00374358b789b0037bcb3a577cd218be
66
refs/tags/release-0.1: 1f5c5126e96c79d22cb7862f75304136e204f105
77
refs/heads/ndm: f3868061cd7988080c30d6d5bf352a5a5fe2460b

branches/snap-stage3/src/libcore/hash.rs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -401,3 +401,45 @@ fn test_hash_uint() {
401401
assert hash_u64(val as u64) != hash_uint(val as uint);
402402
assert hash_u32(val as u32) == hash_uint(val as uint);
403403
}
404+
405+
#[test]
406+
fn test_hash_idempotent() {
407+
let val64 = 0xdeadbeef_deadbeef_u64;
408+
assert hash_u64(val64) == hash_u64(val64);
409+
let val32 = 0xdeadbeef_u32;
410+
assert hash_u32(val32) == hash_u32(val32);
411+
}
412+
413+
#[test]
414+
fn test_hash_no_bytes_dropped_64() {
415+
let val = 0xdeadbeef_deadbeef_u64;
416+
417+
assert hash_u64(val) != hash_u64(zero_byte(val, 0));
418+
assert hash_u64(val) != hash_u64(zero_byte(val, 1));
419+
assert hash_u64(val) != hash_u64(zero_byte(val, 2));
420+
assert hash_u64(val) != hash_u64(zero_byte(val, 3));
421+
assert hash_u64(val) != hash_u64(zero_byte(val, 4));
422+
assert hash_u64(val) != hash_u64(zero_byte(val, 5));
423+
assert hash_u64(val) != hash_u64(zero_byte(val, 6));
424+
assert hash_u64(val) != hash_u64(zero_byte(val, 7));
425+
426+
fn zero_byte(val: u64, byte: uint) -> u64 {
427+
assert 0 <= byte; assert byte < 8;
428+
val & !(0xff << (byte * 8))
429+
}
430+
}
431+
432+
#[test]
433+
fn test_hash_no_bytes_dropped_32() {
434+
let val = 0xdeadbeef_u32;
435+
436+
assert hash_u32(val) != hash_u32(zero_byte(val, 0));
437+
assert hash_u32(val) != hash_u32(zero_byte(val, 1));
438+
assert hash_u32(val) != hash_u32(zero_byte(val, 2));
439+
assert hash_u32(val) != hash_u32(zero_byte(val, 3));
440+
441+
fn zero_byte(val: u32, byte: uint) -> u32 {
442+
assert 0 <= byte; assert byte < 4;
443+
val & !(0xff << (byte * 8))
444+
}
445+
}

0 commit comments

Comments
 (0)