flexible_transcript/
tests.rs1use crate::Transcript;
2
3pub fn test_transcript<T: Transcript>()
5where
6 T::Challenge: PartialEq,
7{
8 {
10 let mut t1 = T::new(b"1");
11 let mut t2 = T::new(b"2");
12 assert!(t1.challenge(b"c") != t2.challenge(b"c"));
13 }
14
15 {
17 let mut t1 = T::new(b"12");
18 let c1 = t1.challenge(b"c");
19 let mut t2 = T::new(b"1");
20 let c2 = t2.challenge(b"2c");
21 assert!(c1 != c2);
22 }
23
24 let t = || T::new(b"name");
25 let c = |mut t: T| t.challenge(b"c");
26
27 {
29 let mut t1 = t();
30 t1.domain_separate(b"d");
31 assert!(c(t1) != c(t()));
32 }
33
34 {
36 let mut t1 = t();
37 let mut t2 = t();
38 t1.domain_separate(b"d1");
39 t2.domain_separate(b"d2");
40 assert!(c(t1) != c(t2));
41 }
42
43 {
45 {
47 let mut t1 = t();
48 let mut t2 = t();
49 t1.append_message(b"msg", b"a");
50 t2.append_message(b"msg", b"b");
51 assert!(c(t1) != c(t2));
52 }
53
54 {
56 let mut t1 = t();
57 let mut t2 = t();
58 t1.append_message(b"a", b"val");
59 t2.append_message(b"b", b"val");
60 assert!(c(t1) != c(t2));
61 }
62 }
63
64 {
66 let mut t = t();
67 let c1 = t.challenge(b"c");
68 let c2 = t.challenge(b"c");
69 assert!(c1 != c2);
70 }
71
72 assert!(t().challenge(b"a") != t().challenge(b"b"));
74
75 {
77 let mut t = t();
78 let s1 = t.rng_seed(b"s");
79 let s2 = t.rng_seed(b"s");
80 assert!(s1 != s2);
81 }
82
83 assert!(t().rng_seed(b"a") != t().rng_seed(b"b"));
85}
86
87#[test]
88fn test_digest() {
89 test_transcript::<crate::DigestTranscript<sha2::Sha256>>();
90 test_transcript::<crate::DigestTranscript<blake2::Blake2b512>>();
91}
92
93#[cfg(feature = "recommended")]
94#[test]
95fn test_recommended() {
96 test_transcript::<crate::RecommendedTranscript>();
97}
98
99#[cfg(feature = "merlin")]
100#[test]
101fn test_merlin() {
102 test_transcript::<crate::MerlinTranscript>();
103}