package org.vertx.testtools; /* * Copyright 2013 Red Hat, Inc. * * Red Hat licenses this file to you under the Apache License, version 2.0 * (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at: * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations * under the License. * */ import org.vertx.java.core.buffer.Buffer; /** * Static helper methods for dealing with buffers, strings and byte arrays. */ public class TestUtils { /** * Creates a Buffer of random bytes. * @param length The length of the Buffer * @return the Buffer */ public static Buffer generateRandomBuffer(int length) { return generateRandomBuffer(length, false, (byte) 0); } /** * Create an array of random bytes * @param length The length of the created array * @return the byte array */ public static byte[] generateRandomByteArray(int length) { return generateRandomByteArray(length, false, (byte) 0); } /** * Create an array of random bytes * @param length The length of the created array * @param avoid If true, the resulting array will not contain avoidByte * @param avoidByte A byte that is not to be included in the resulting array * @return an array of random bytes */ public static byte[] generateRandomByteArray(int length, boolean avoid, byte avoidByte) { byte[] line = new byte[length]; for (int i = 0; i < length; i++) { byte rand; do { rand = (byte) ((int) (Math.random() * 255) - 128); } while (avoid && rand == avoidByte); line[i] = rand; } return line; } /** * Creates a Buffer containing random bytes * @param length the size of the Buffer to create * @param avoid if true, the resulting Buffer will not contain avoidByte * @param avoidByte A byte that is not to be included in the resulting array * @return a Buffer of random bytes */ public static Buffer generateRandomBuffer(int length, boolean avoid, byte avoidByte) { byte[] line = generateRandomByteArray(length, avoid, avoidByte); return new Buffer(line); } /** * Creates a String containing random unicode characters * @param length The length of the string to create * @return a String of random unicode characters */ public static String randomUnicodeString(int length) { StringBuilder builder = new StringBuilder(length); for (int i = 0; i < length; i++) { char c; do { c = (char) (0xFFFF * Math.random()); } while ((c >= 0xFFFE && c <= 0xFFFF) || (c >= 0xD800 && c <= 0xDFFF)); //Illegal chars builder.append(c); } return builder.toString(); } /** * Creates a random string of ascii alpha characters * @param length the length of the string to create * @return a String of random ascii alpha characters */ public static String randomAlphaString(int length) { StringBuilder builder = new StringBuilder(length); for (int i = 0; i < length; i++) { char c = (char) (65 + 25 * Math.random()); builder.append(c); } return builder.toString(); } /** * Determine if two Buffer objects are equal * @param b1 The first buffer to compare * @param b2 The second buffer to compare * @return true if the Buffers are equal */ public static boolean buffersEqual(Buffer b1, Buffer b2) { if (b1.length() != b2.length()) return false; for (int i = 0; i < b1.length(); i++) { if (b1.getByte(i) != b2.getByte(i)) return false; } return true; } /** * Determine if two byte arrays are equal * @param b1 The first byte array to compare * @param b2 The second byte array to compare * @return true if the byte arrays are equal */ public static boolean byteArraysEqual(byte[] b1, byte[] b2) { if (b1.length != b2.length) return false; for (int i = 0; i < b1.length; i++) { if (b1[i] != b2[i]) return false; } return true; } private TestUtils() { // no need to instantiate this class } }