changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > core / annotate rust/lib/hash/src/tests.rs

changeset 698: 96958d3eb5b0
parent: 0ccbbd142694
author: Richard Westhaver <ellis@rwest.io>
date: Fri, 04 Oct 2024 22:04:59 -0400
permissions: -rw-r--r--
description: fixes
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
1
 use crate::*;
8
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
2
 use hex::decode;
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
3
 use std::convert::TryInto;
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
4
 
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
5
 #[test]
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
6
 fn hex_hash() -> Result<(), Box<dyn std::error::Error>> {
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
7
   let mut hasher1 = B3Hasher::new();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
8
   hasher1.update(b"foo");
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
9
   hasher1.update(b"bar");
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
10
   hasher1.update(b"baz");
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
11
   let out1 = hasher1.finalize();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
12
   let mut xof1 = [0; 301];
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
13
   hasher1.finalize_xof().fill(&mut xof1);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
14
   assert_eq!(out1.as_bytes(), &xof1[..32]);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
15
 
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
16
   let hash_hex =
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
17
     "d74981efa70a0c880b8d8c1985d075dbcbf679b99a5f9914e5aaf96b831a9e24";
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
18
   let hash_bytes = decode(hash_hex).unwrap();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
19
   let hash_array: [u8; OUT_LEN] = hash_bytes[..].try_into().unwrap();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
20
   let _: B3Hash = hash_array.into();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
21
   Ok(())
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
22
 }
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
23
 
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
24
 #[test]
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
25
 fn id_state_hash() {
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
26
   let id = Id(vec![0; crate::KEY_LEN]);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
27
   let hash = id.state_hash(&mut crate::B3Hasher::new());
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
28
   assert_eq!(hash, id.state_hash(&mut crate::B3Hasher::new()));
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
29
 }
8
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
30
 
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
31
 #[test]
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
32
 fn id_hex() {
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
33
   let id = crate::Id(vec![255; crate::KEY_LEN]);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
34
 
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
35
   assert_eq!(
67
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
36
     hex::decode(
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
37
       "ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
38
     )
0ccbbd142694 rust cleanup, added rocksdb bindings
ellis <ellis@rwest.io>
parents: 25
diff changeset
39
     .unwrap(),
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
40
     id.0
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
41
   );
8
1227f932b628 rust import
ellis <ellis@rwest.io>
parents:
diff changeset
42
 }
25
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
43
 
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
44
 #[test]
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
45
 fn rand_id() {
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
46
   let id = crate::Id::rand();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
47
   let hash = id.state_hash(&mut crate::B3Hasher::new());
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
48
   assert_eq!(hash, id.state_hash(&mut crate::B3Hasher::new()));
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
49
 }
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
50
 
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
51
 #[test]
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
52
 fn random_demon_id_is_valid() {
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
53
   use crate::PeerId;
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
54
   for _ in 0..5000 {
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
55
     let did = PeerId::rand();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
56
     let did2 = PeerId::rand();
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
57
     assert_eq!(did, did);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
58
     assert_ne!(did, did2);
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
59
   }
94253682df1f krypt, hash test refactor
ellis <ellis@rwest.io>
parents: 8
diff changeset
60
 }