/* * The contents of this file are subject to the terms of the Common Development and * Distribution License (the License). You may not use this file except in compliance with the * License. * * You can obtain a copy of the License at legal/CDDLv1.0.txt. See the License for the * specific language governing permission and limitations under the License. * * When distributing Covered Software, include this CDDL Header Notice in each file and include * the License file at legal/CDDLv1.0.txt. If applicable, add the following below the CDDL * Header, with the fields enclosed by brackets [] replaced by your own identifying * information: "Portions Copyright [year] [name of copyright owner]". * * Copyright 2016 ForgeRock AS. */ package com.forgerock.opendj.ldap.tools; import static com.forgerock.opendj.cli.CliMessages.ERR_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_LONG_ID; import static com.forgerock.opendj.cli.CliMessages.ERR_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_SHORT_ID; import java.io.BufferedReader; import java.io.File; import java.io.FileOutputStream; import java.io.FileReader; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.forgerock.i18n.LocalizableMessage; /** Useful set of methods to manage tools unit tests. **/ @SuppressWarnings("javadoc") class ToolsTestUtils { static Args buildArgs() { return new Args(); } /** Helper class to represent arguments for command-line programs. */ static class Args { private final List args = new ArrayList<>(); Args add(String arg) { args.add(arg); return this; } Args add(String arg, Object value) { args.add(arg); args.add(value.toString()); return this; } Args addAll(String... args) { this.args.addAll(Arrays.asList(args)); return this; } Args addAll(final Args args) { this.args.addAll(Arrays.asList(args.toArray())); return this; } String[] toArray() { return args.toArray(new String[args.size()]); } @Override public String toString() { return args.toString(); } } static List args(final String... arguments) { return Arrays.asList(arguments); } static void addValueNeededShortArgs( final List> argsList, final List reasonList, final String... args) { testValueNeededArg(argsList, reasonList, "-", args); } static void addValueNeededLongArgs( final List> argsList, final List reasonList, final String... args) { testValueNeededArg(argsList, reasonList, "--", args); } private static void testValueNeededArg(final List> argsList, final List reasonList, final String prefix, final String[] argIDs) { for (final String argID : argIDs) { argsList.add(args(prefix + argID)); reasonList.add(prefix.equals("--") ? ERR_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_LONG_ID.get(argID) : ERR_ARGPARSER_NO_VALUE_FOR_ARGUMENT_WITH_SHORT_ID.get(argID)); } } static Object[][] toDataProviderArray(final List> argLists, final List reasonList) { final Object[][] array = new Object[argLists.size()][2]; for (int i = 0; i < argLists.size(); i++) { final List args = argLists.get(i); array[i][0] = args.toArray(new String[args.size()]); array[i][1] = reasonList.get(i).toString(); } return array; } static String createTempFile(final String... lines) throws Exception { final File f = File.createTempFile("ToolsTestUtils", ".txt"); f.deleteOnExit(); if (lines.length > 0) { final StringBuilder builder = new StringBuilder(); for (final String line : lines) { builder.append(line).append(System.lineSeparator()); } try (final FileOutputStream fos = new FileOutputStream(f.getPath())) { fos.write(builder.toString().getBytes()); } } return f.getAbsolutePath(); } /** Calculates the checksum of a file. */ static long calcChecksum(final String filePath) throws Exception { long checksum = 0L; try (final BufferedReader reader = new BufferedReader(new FileReader(new File(filePath)))) { String line; while ((line = reader.readLine()) != null) { checksum += line.hashCode(); } } return checksum; } }