test/jdk/java/util/Base64/TestBase64.java

Print this page




   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /**
  25  * @test
  26  * @bug 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
  27  *      8014217 8025003 8026330 8028397 8129544 8165243
  28  * @summary tests java.util.Base64
  29  * @library /test/lib
  30  * @build jdk.test.lib.RandomFactory
  31  * @run main TestBase64
  32  * @key randomness
  33  */
  34 
  35 import java.io.ByteArrayInputStream;
  36 import java.io.ByteArrayOutputStream;
  37 import java.io.InputStream;
  38 import java.io.IOException;
  39 import java.io.OutputStream;
  40 import java.nio.ByteBuffer;
  41 import java.util.Arrays;
  42 import java.util.ArrayList;
  43 import java.util.Base64;
  44 import java.util.List;
  45 import java.util.Random;
  46 
  47 import jdk.test.lib.RandomFactory;


  61         test(Base64.getEncoder(), Base64.getDecoder(), numRuns, numBytes);
  62         test(Base64.getUrlEncoder(), Base64.getUrlDecoder(), numRuns, numBytes);
  63         test(Base64.getMimeEncoder(), Base64.getMimeDecoder(), numRuns, numBytes);
  64 
  65         byte[] nl_1 = new byte[] {'\n'};
  66         byte[] nl_2 = new byte[] {'\n', '\r'};
  67         byte[] nl_3 = new byte[] {'\n', '\r', '\n'};
  68         for (int i = 0; i < 10; i++) {
  69             int len = rnd.nextInt(200) + 4;
  70             test(Base64.getMimeEncoder(len, nl_1),
  71                  Base64.getMimeDecoder(),
  72                  numRuns, numBytes);
  73             test(Base64.getMimeEncoder(len, nl_2),
  74                  Base64.getMimeDecoder(),
  75                  numRuns, numBytes);
  76             test(Base64.getMimeEncoder(len, nl_3),
  77                  Base64.getMimeDecoder(),
  78                  numRuns, numBytes);
  79         }
  80 















  81         testNull(Base64.getEncoder());
  82         testNull(Base64.getUrlEncoder());
  83         testNull(Base64.getMimeEncoder());
  84         testNull(Base64.getMimeEncoder(10, new byte[]{'\n'}));
  85         testNull(Base64.getDecoder());
  86         testNull(Base64.getUrlDecoder());
  87         testNull(Base64.getMimeDecoder());
  88         checkNull(() -> Base64.getMimeEncoder(10, null));
  89 
  90         testIOE(Base64.getEncoder());
  91         testIOE(Base64.getUrlEncoder());
  92         testIOE(Base64.getMimeEncoder());
  93         testIOE(Base64.getMimeEncoder(10, new byte[]{'\n'}));
  94 
  95         byte[] src = new byte[1024];
  96         rnd.nextBytes(src);
  97         final byte[] decoded = Base64.getEncoder().encode(src);
  98         testIOE(Base64.getDecoder(), decoded);
  99         testIOE(Base64.getMimeDecoder(), decoded);
 100         testIOE(Base64.getUrlDecoder(), Base64.getUrlEncoder().encode(src));




   7  * published by the Free Software Foundation.
   8  *
   9  * This code is distributed in the hope that it will be useful, but WITHOUT
  10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  12  * version 2 for more details (a copy is included in the LICENSE file that
  13  * accompanied this code).
  14  *
  15  * You should have received a copy of the GNU General Public License version
  16  * 2 along with this work; if not, write to the Free Software Foundation,
  17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  18  *
  19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  20  * or visit www.oracle.com if you need additional information or have any
  21  * questions.
  22  */
  23 
  24 /**
  25  * @test
  26  * @bug 4235519 8004212 8005394 8007298 8006295 8006315 8006530 8007379 8008925
  27  *      8014217 8025003 8026330 8028397 8129544 8165243 8176379
  28  * @summary tests java.util.Base64
  29  * @library /test/lib
  30  * @build jdk.test.lib.RandomFactory
  31  * @run main TestBase64
  32  * @key randomness
  33  */
  34 
  35 import java.io.ByteArrayInputStream;
  36 import java.io.ByteArrayOutputStream;
  37 import java.io.InputStream;
  38 import java.io.IOException;
  39 import java.io.OutputStream;
  40 import java.nio.ByteBuffer;
  41 import java.util.Arrays;
  42 import java.util.ArrayList;
  43 import java.util.Base64;
  44 import java.util.List;
  45 import java.util.Random;
  46 
  47 import jdk.test.lib.RandomFactory;


  61         test(Base64.getEncoder(), Base64.getDecoder(), numRuns, numBytes);
  62         test(Base64.getUrlEncoder(), Base64.getUrlDecoder(), numRuns, numBytes);
  63         test(Base64.getMimeEncoder(), Base64.getMimeDecoder(), numRuns, numBytes);
  64 
  65         byte[] nl_1 = new byte[] {'\n'};
  66         byte[] nl_2 = new byte[] {'\n', '\r'};
  67         byte[] nl_3 = new byte[] {'\n', '\r', '\n'};
  68         for (int i = 0; i < 10; i++) {
  69             int len = rnd.nextInt(200) + 4;
  70             test(Base64.getMimeEncoder(len, nl_1),
  71                  Base64.getMimeDecoder(),
  72                  numRuns, numBytes);
  73             test(Base64.getMimeEncoder(len, nl_2),
  74                  Base64.getMimeDecoder(),
  75                  numRuns, numBytes);
  76             test(Base64.getMimeEncoder(len, nl_3),
  77                  Base64.getMimeDecoder(),
  78                  numRuns, numBytes);
  79         }
  80 
  81         // test mime case with < 4 length
  82         for (int len = 0; len < 4; len++) {
  83             test(Base64.getMimeEncoder(len, nl_1),
  84                  Base64.getMimeDecoder(),
  85                  numRuns, numBytes);
  86 
  87             test(Base64.getMimeEncoder(len, nl_2),
  88                  Base64.getMimeDecoder(),
  89                  numRuns, numBytes);
  90 
  91             test(Base64.getMimeEncoder(len, nl_3),
  92                  Base64.getMimeDecoder(),
  93                  numRuns, numBytes);
  94         }
  95 
  96         testNull(Base64.getEncoder());
  97         testNull(Base64.getUrlEncoder());
  98         testNull(Base64.getMimeEncoder());
  99         testNull(Base64.getMimeEncoder(10, new byte[]{'\n'}));
 100         testNull(Base64.getDecoder());
 101         testNull(Base64.getUrlDecoder());
 102         testNull(Base64.getMimeDecoder());
 103         checkNull(() -> Base64.getMimeEncoder(10, null));
 104 
 105         testIOE(Base64.getEncoder());
 106         testIOE(Base64.getUrlEncoder());
 107         testIOE(Base64.getMimeEncoder());
 108         testIOE(Base64.getMimeEncoder(10, new byte[]{'\n'}));
 109 
 110         byte[] src = new byte[1024];
 111         rnd.nextBytes(src);
 112         final byte[] decoded = Base64.getEncoder().encode(src);
 113         testIOE(Base64.getDecoder(), decoded);
 114         testIOE(Base64.getMimeDecoder(), decoded);
 115         testIOE(Base64.getUrlDecoder(), Base64.getUrlEncoder().encode(src));