fn dot_examples()

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")[..]
        );
    }