diff options
| author | blake2-ppc <blake2-ppc> | 2013-08-18 15:23:42 +0200 |
|---|---|---|
| committer | blake2-ppc <blake2-ppc> | 2013-08-18 18:39:47 +0200 |
| commit | bfa1331cd7fb4a8a74ede969abe22004d0232184 (patch) | |
| tree | a7a2315b7b7d3ba09a0c33b3867fc5a7d9819b9e /src/libstd | |
| parent | 73fdacbac98b2a820684556fc8245148af3a9247 (diff) | |
| download | rust-bfa1331cd7fb4a8a74ede969abe22004d0232184.tar.gz rust-bfa1331cd7fb4a8a74ede969abe22004d0232184.zip | |
std::hash: Add testcase for colliding hashes of tuples
Add a testcase that verifies that (s, t) and (u, v) don't collide even if s + t == u + v (concatenation).
Diffstat (limited to 'src/libstd')
| -rw-r--r-- | src/libstd/hash.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/libstd/hash.rs b/src/libstd/hash.rs index 1af885100cd..f3df42f7a43 100644 --- a/src/libstd/hash.rs +++ b/src/libstd/hash.rs @@ -595,4 +595,18 @@ mod tests { fn test_float_hashes_of_zero() { assert_eq!(0.0.hash(), (-0.0).hash()); } + + #[test] + fn test_hash_no_concat_alias() { + let s = ("aa", "bb"); + let t = ("aabb", ""); + let u = ("a", "abb"); + + let v = (&[1u8], &[0u8, 0], &[0u8]); + let w = (&[1u8, 0, 0, 0], &[], &[]); + + assert!(v != w); + assert!(s.hash() != t.hash() && s.hash() != u.hash()); + assert!(v.hash() != w.hash()); + } } |
