package io.urmia.dd; import org.apache.commons.codec.binary.Base64; import org.junit.Assert; import org.junit.Test; import java.nio.ByteBuffer; import java.util.Random; public class DirectDigestTest { @Test public void test_md5() { ByteBuffer bb = ByteBuffer.allocateDirect(3); bb.put(new byte[]{'a', 'b', 'c'}); long ctx = DirectDigest.md5_init(); DirectDigest.md5_update(ctx, bb); byte[] bytes = DirectDigest.md5_final(ctx); String base64 = new String(Base64.encodeBase64(bytes)); Assert.assertEquals("kAFQmDzST7DWlj99KOF/cg==", base64); } @Test public void test_md5_array() { ByteBuffer bb = ByteBuffer.allocate(3); bb.put(new byte[]{'a', 'b', 'c'}); long ctx = DirectDigest.md5_init(); DirectDigest.md5_update(ctx, bb.array()); byte[] md5 = DirectDigest.md5_final(ctx); String base64 = new String(Base64.encodeBase64(md5)); Assert.assertEquals("kAFQmDzST7DWlj99KOF/cg==", base64); } @Test public void test_md5_1k() { Random r = new Random(); ByteBuffer bb = ByteBuffer.allocateDirect(1024); byte[] b = new byte[1024]; r.nextBytes(b); bb.put(b); long ctx = DirectDigest.md5_init(); DirectDigest.md5_update(ctx, bb); byte[] md5 = DirectDigest.md5_final(ctx); String base64 = new String(Base64.encodeBase64(md5)); System.out.println("base64 = " + base64); } @Test public void test_md5_empty() { ByteBuffer bb = ByteBuffer.allocateDirect(0); long ctx = DirectDigest.md5_init(); DirectDigest.md5_update(ctx, bb); byte[] md5 = DirectDigest.md5_final(ctx); String base64 = new String(Base64.encodeBase64(md5)); Assert.assertEquals("1B2M2Y8AsgTpgAmY7PhCfg==", base64); } @Test public void test_md5_1k_load() { Random r = new Random(); for (int i = 0; i < 10; i++) { int size = r.nextInt(65536); ByteBuffer bb = ByteBuffer.allocateDirect(size); byte[] b = new byte[size]; r.nextBytes(b); bb.put(b); long ctx = DirectDigest.md5_init(); DirectDigest.md5_update(ctx, bb); byte[] md5 = DirectDigest.md5_final(ctx); String base64 = new String(Base64.encodeBase64(md5)); System.out.println(i + "(" + size + ")\tbase64 = " + base64); } } }