in amazon-qldb-driver-core/src/qldb_hash.rs [110:143]
fn dot_examples() {
// QldbHash wants 0 or 256 len byte arrays. That's tedious to type. This macro takes a literal string and uses sha256 to produce a 256-len value. In this way we can test
// properties without verbose examples.
macro_rules! s {
($value:expr) => {
&QldbHash::from_bytes(sha256(&BytesMut::from($value.as_bytes()).freeze())).unwrap()
};
}
// QldbHash commutes
assert_eq!(dot(s!("1"), s!("2")), dot(s!("2"), s!("1")));
// Empty hashes
assert_eq!(
dot(&QldbHash::default(), &QldbHash::default()),
QldbHash::default()
);
assert_eq!(dot(s!("1"), &QldbHash::default()), *s!("1"));
assert_eq!(dot(&QldbHash::default(), s!("1")), *s!("1"));
// An actual example, values checked against the Java implementation
assert_eq!(
s!("1").bytes[..],
hex!("6b86b273ff34fce19d6b804eff5a3f5747ada4eaa22f1d49c01e52ddb7875b4b")[..]
);
assert_eq!(
s!("2").bytes[..],
hex!("d4735e3a265e16eee03f59718b9b5d03019c07d8b6c51f90da3a666eec13ab35")[..]
);
assert_eq!(
dot(s!("1"), s!("2")).bytes[..],
hex!("940ed9abddfb5ef28004408546bc5043cda391232b6afe07267f9f8ed2b500c9")[..]
);
}