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