package org.peerbox.testutils;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import org.apache.commons.lang3.RandomStringUtils;
public class FileTestUtils {
private static int FOLDER_NUMBER = 0;
private static int FILE_NUMBER = 0;
public static List<Path> createFolderWithFiles(Path basePath, int numberOfFiles, int numberOfChars) throws IOException {
List<Path> files = new ArrayList<Path>();
// create folder
Path folder = createRandomFolder(basePath);
files.add(folder);
// create files
List<Path> f = createRandomFiles(folder, numberOfFiles, numberOfChars);
files.addAll(f);
return files;
}
public static Path createRandomFolder(Path basePath) throws IOException {
String folderName = "f"+FOLDER_NUMBER++;
Path p = basePath.resolve(folderName);
Files.createDirectory(p);
return p;
}
public static List<Path> createRandomFolders(Path basePath, int numberOfFolders) throws IOException {
List<Path> folders = new ArrayList<>();
for(int i = 0; i < numberOfFolders; ++i) {
Path folder = createRandomFolder(basePath);
folders.add(folder);
}
return folders;
}
public static Path createRandomFile(Path basePath, int numChars) throws IOException {
String name = String.format("%s.file", FILE_NUMBER++);
Path file = basePath.resolve(name);
String data = createRandomData(numChars);
org.apache.commons.io.FileUtils.writeStringToFile(file.toFile(), data);
return file;
}
public static Path recreateRandomFile(Path file) throws IOException{
String data = createRandomData(100);
org.apache.commons.io.FileUtils.writeStringToFile(file.toFile(), data);
return file;
}
public static void writeRandomData(Path file, int numChars) throws IOException {
String data = createRandomData(numChars);
org.apache.commons.io.FileUtils.writeStringToFile(file.toFile(), data);
}
public static Path createTestFile(Path basePath, int numChars) throws IOException {
String name = String.format("%s.txt", "test");
Path file = basePath.resolve(name);
String data = "test";
org.apache.commons.io.FileUtils.writeStringToFile(file.toFile(), data);
return file;
}
public static List<Path> createRandomFiles(Path basePath, int numberOfFiles, int numberOfChars) throws IOException {
List<Path> files = new ArrayList<Path>();
for(int i = 0; i < numberOfFiles; ++i) {
Path f = createRandomFile(basePath, numberOfChars);
files.add(f);
}
return files;
}
public static String createRandomData(int numChars) {
return RandomStringUtils.randomAscii(numChars);
}
}