@@ -166,3 +166,47 @@ impl<'a, C, const BYTES: usize> minicbor::Decode<'a, C> for Blake2bHash<BYTES> {
166166 } )
167167 }
168168}
169+
170+ #[ cfg( test) ]
171+ mod tests {
172+ use super :: * ;
173+
174+ #[ test]
175+ fn test_blake2b_hash_init ( ) {
176+ let data = b"Cardano" ;
177+ let hash_224 = Blake2b224Hash :: new ( data) ;
178+ let hash_256 = Blake2b256Hash :: new ( data) ;
179+ let hash_128 = Blake2b128Hash :: new ( data) ;
180+
181+ assert_eq ! ( hash_224. 0 . as_ref( ) . len( ) , BLAKE_2B224_SIZE ) ;
182+ assert_eq ! ( hash_256. 0 . as_ref( ) . len( ) , BLAKE_2B256_SIZE ) ;
183+ assert_eq ! ( hash_128. 0 . as_ref( ) . len( ) , BLAKE_2B128_SIZE ) ;
184+ }
185+
186+ #[ test]
187+ fn test_blake2b_hash_conversion ( ) {
188+ let data = b"Cardano" ;
189+ let hash = Blake2b224Hash :: new ( data) ;
190+
191+ let as_vec: Vec < u8 > = hash. clone ( ) . into ( ) ;
192+ let from_vec = Blake2b224Hash :: try_from ( & as_vec) . unwrap ( ) ;
193+ assert_eq ! ( hash, from_vec) ;
194+
195+ let from_slice = Blake2b224Hash :: try_from ( as_vec. as_slice ( ) ) . unwrap ( ) ;
196+ assert_eq ! ( hash, from_slice) ;
197+ }
198+
199+ #[ test]
200+ fn test_blake2b_hash_invalid_length ( ) {
201+ let invalid_data = vec ! [ 0u8 ; 10 ] ; // Shorter than required length
202+ let result = Blake2b224Hash :: try_from ( & invalid_data) ;
203+ assert ! ( result. is_err( ) ) ;
204+
205+ if let Err ( Blake2bHashError :: InvalidLength { expected, actual } ) = result {
206+ assert_eq ! ( expected, BLAKE_2B224_SIZE ) ;
207+ assert_eq ! ( actual, invalid_data. len( ) ) ;
208+ } else {
209+ panic ! ( "Expected InvalidLength error" ) ;
210+ }
211+ }
212+ }
0 commit comments