diff options
| author | arthurprs <arthurprs@gmail.com> | 2016-10-21 00:09:59 +0200 |
|---|---|---|
| committer | arthurprs <arthurprs@gmail.com> | 2016-10-25 20:33:03 +0200 |
| commit | a319d13a9beba484a5c7e4e9c674ef905fd3d6f4 (patch) | |
| tree | a89265290471a2d4322d6780612b6d8c4d5dafe1 /src/libcoretest | |
| parent | 7bccb829d0fe9a733bd6efcf6f7313186ae237ab (diff) | |
| download | rust-a319d13a9beba484a5c7e4e9c674ef905fd3d6f4.tar.gz rust-a319d13a9beba484a5c7e4e9c674ef905fd3d6f4.zip | |
Small improvement to SipHasher
Diffstat (limited to 'src/libcoretest')
| -rw-r--r-- | src/libcoretest/hash/sip.rs | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/src/libcoretest/hash/sip.rs b/src/libcoretest/hash/sip.rs index b465d7de180..fa3bfdea42d 100644 --- a/src/libcoretest/hash/sip.rs +++ b/src/libcoretest/hash/sip.rs @@ -14,6 +14,7 @@ use test::{Bencher, black_box}; use core::hash::{Hash, Hasher}; use core::hash::{SipHasher, SipHasher13, SipHasher24}; +use core::{slice, mem}; // Hash just the bytes of the slice, without length prefix struct Bytes<'a>(&'a [u8]); @@ -327,6 +328,26 @@ fn test_hash_no_concat_alias() { assert!(hash(&v) != hash(&w)); } +#[test] +fn test_write_short_works() { + let test_usize = 0xd0c0b0a0usize; + let mut h1 = SipHasher24::new(); + h1.write_usize(test_usize); + h1.write(b"bytes"); + h1.write(b"string"); + h1.write_u8(0xFFu8); + h1.write_u8(0x01u8); + let mut h2 = SipHasher24::new(); + h2.write(unsafe { + slice::from_raw_parts(&test_usize as *const _ as *const u8, + mem::size_of::<usize>()) + }); + h2.write(b"bytes"); + h2.write(b"string"); + h2.write(&[0xFFu8, 0x01u8]); + assert_eq!(h1.finish(), h2.finish()); +} + #[bench] fn bench_str_under_8_bytes(b: &mut Bencher) { let s = "foo"; |
