package de.axone.tools; import static org.testng.Assert.*; import java.util.Random; import org.testng.annotations.Test; @Test( groups="tools.base64" ) public class Base64Test { public void testApacheCommons(){ Base64 b64 = new Base64ApacheCommons(); Random rand = new Random(); /* Encode */ for( int i=0; i<1024; i++ ){ byte [] plain = new byte[i]; rand.nextBytes( plain ); String encoded = b64.encode( plain ); byte [] decoded = b64.decode( encoded ); assertEquals( plain, decoded ); } /* EncodeURLSafe */ for( int i=0; i<128; i++ ){ byte [] plain = new byte[i]; rand.nextBytes( plain ); String encoded = b64.encodeURLSafe( plain ); byte [] decoded = b64.decode( encoded ); assertEquals( plain, decoded ); } } public void testJavaxDatabind(){ Base64 b64 = new Base64JavaxDatabind(); Random rand = new Random(); /* Encode */ for( int i=0; i<1024; i++ ){ byte [] plain = new byte[i]; rand.nextBytes( plain ); String encoded = b64.encode( plain ); byte [] decoded = b64.decode( encoded ); assertEquals( plain, decoded ); } } public void testXCompatibility(){ byte [] plain = new byte[256]; for( int i=0; i<plain.length; i++ ){ plain[ i ] = (byte)i; } assertEquals( Base64ApacheCommons.Decode( Base64ApacheCommons.Encode( plain ) ), plain ); assertEquals( Base64ApacheCommons.Decode( Base64ApacheCommons.EncodeURLSafe( plain ) ), plain ); assertEquals( Base64ApacheCommons.Decode( Base64JavaxDatabind.Encode( plain ) ), plain ); assertEquals( Base64JavaxDatabind.Decode( Base64ApacheCommons.Encode( plain ) ), plain ); // ApacheCommons URL-Safe encoding is currently not compatible with Javax decoding assertNotEquals( Base64JavaxDatabind.Decode( Base64ApacheCommons.EncodeURLSafe( plain ) ), plain ); assertEquals( Base64ApacheCommons.Decode( Base64JavaxDatabind.Encode( plain ) ), plain ); } }