Skip to content

Commit 6329ced

Browse files
committed
tests which exercise most of the implementation
1 parent 47102bf commit 6329ced

1 file changed

Lines changed: 31 additions & 0 deletions

File tree

src/test/java/io/ipfs/multihash/MultihashTest.java

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import org.junit.*;
44
import io.ipfs.multibase.*;
55
import java.util.*;
6+
import java.security.MessageDigest;
67

78
public 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

Comments
 (0)