33import org .junit .*;
44import io .ipfs .multibase .*;
55import java .util .*;
6+ import java .security .MessageDigest ;
67
78public class MultihashTest {
89
@@ -17,4 +18,34 @@ public void base58Test() {
1718 throw new IllegalStateException ("Incorrect base58! " + example + " => " + encoded );
1819 }
1920 }
21+
22+ @ Test
23+ public void multihashTest () {
24+ Object [][] examples = new Object [][]{
25+ {Multihash .Type .sha1 , "SHA-1" , "5drNu81uhrFLRiS4bxWgAkpydaLUPW" , "hello world" },
26+ {Multihash .Type .sha2_256 , "SHA2-256" , "QmaozNR7DZHQK1ZcU9p7QdrshMvXqWK6gpu5rmrkPdT3L4" , "hello world" },
27+ {Multihash .Type .sha2_512 , "SHA2-512" , "8Vtkv2tdQ43bNGdWN9vNx9GVS9wrbXHk4ZW8kmucPmaYJwwedXir52kti9wJhcik4HehyqgLrQ1hBuirviLhxgRBNv" , "hello world" },
28+ {Multihash .Type .sha3_512 , "SHA3-512" , "8tWhXW5oUwtPd9d3FnjuLP1NozN3vc45rmsoWEEfrZL1L6gi9dqi1YkZu5iHb2HJ8WbZaaKAyNWWRAa8yaxMkGKJmX" , "hello world" },
29+ };
30+
31+ for (Object [] ex : examples ) {
32+ Multihash m = Multihash .fromBase58 ((String )ex [2 ]);
33+ try {
34+ // Make sure the hashes agree
35+ MessageDigest md = MessageDigest .getInstance ((String ) ex [3 ]);
36+ md .update (((String ) ex [3 ]).getBytes ("UTF-8" ));
37+ byte [] digest = md .digest ();
38+ assert (Arrays .equals (m .toBytes (), digest ));
39+ // Test constructor
40+ Multihash m2 = new Multihash ((Multihash .Type )ex [0 ], digest );
41+ // Test comparison
42+ assert (m2 .equals (m ));
43+ // Test conversions
44+ assert (m .toBase58 ().equals (m2 .toBase58 ()));
45+ assert (m .toBase58 ().equals ((String )ex [2 ]));
46+ }
47+ catch (Exception e ){
48+ }
49+ }
50+ }
2051}
0 commit comments