mirror of
https://github.com/processing/processing4.git
synced 2026-01-29 19:31:16 +01:00
106 lines
3.0 KiB
Java
106 lines
3.0 KiB
Java
package processing.mode.java;
|
|
|
|
import java.io.File;
|
|
import java.io.FileInputStream;
|
|
import java.io.IOException;
|
|
import java.io.InputStreamReader;
|
|
import java.io.StringWriter;
|
|
import java.util.Optional;
|
|
|
|
import processing.app.Preferences;
|
|
import processing.app.SketchException;
|
|
import processing.mode.java.preproc.PdePreprocessor;
|
|
import processing.mode.java.preproc.PreprocessorResult;
|
|
import processing.mode.java.preproc.issue.PdePreprocessIssueException;
|
|
|
|
|
|
public class ProcessingTestUtil {
|
|
static void init() {
|
|
// noop; just causes class to be loaded
|
|
}
|
|
|
|
private static final String RESOURCES = "test/resources/";
|
|
private static final String RESOURCES_UP_DIR = "../java/test/resources";
|
|
static final UTCompiler COMPILER;
|
|
|
|
static {
|
|
try {
|
|
COMPILER = new UTCompiler(new File("bin-test"), new File("../core/bin"));
|
|
Preferences.load(new FileInputStream(res("preferences.txt")));
|
|
} catch (Exception e) {
|
|
throw new RuntimeException(e);
|
|
}
|
|
//System.err.println("ProcessingTestUtil initialized.");
|
|
}
|
|
|
|
static String normalize(final Object s) {
|
|
return String.valueOf(s).replace("\r", "");
|
|
}
|
|
|
|
static String preprocess(final String name, final File resource)
|
|
throws SketchException {
|
|
return preprocess(name, resource, Optional.empty());
|
|
}
|
|
static String preprocess(final String name, final File resource, Optional<String> optionalPackage)
|
|
throws SketchException {
|
|
|
|
final String program = read(resource);
|
|
final StringWriter out = new StringWriter();
|
|
|
|
PdePreprocessor.PdePreprocessorBuilder builder = PdePreprocessor.builderFor(name);
|
|
builder.setTabSize(4);
|
|
builder.setIsTesting(true);
|
|
|
|
if (optionalPackage.isPresent()) {
|
|
builder.setDestinationPackage(optionalPackage.get());
|
|
}
|
|
|
|
PdePreprocessor preprocessor = builder.build();
|
|
|
|
PreprocessorResult result = preprocessor.write(out, program);
|
|
|
|
if (result.getPreprocessIssues().size() > 0) {
|
|
throw new PdePreprocessIssueException(result.getPreprocessIssues().get(0));
|
|
}
|
|
|
|
return normalize(out);
|
|
}
|
|
|
|
static String format(final File resource)
|
|
{
|
|
return format(read(resource));
|
|
}
|
|
|
|
static String format(final String programText) {
|
|
return normalize(new AutoFormat().format(programText));
|
|
}
|
|
|
|
static File res(final String resourceName) {
|
|
File target = new File(RESOURCES, resourceName);
|
|
if (target.exists()) {
|
|
return target;
|
|
}
|
|
return new File(RESOURCES_UP_DIR, resourceName);
|
|
}
|
|
|
|
static String read(final File f) {
|
|
try {
|
|
final FileInputStream fin = new FileInputStream(f);
|
|
final InputStreamReader in = new InputStreamReader(fin, "UTF-8");
|
|
try {
|
|
final StringBuilder sb = new StringBuilder();
|
|
final char[] buf = new char[1 << 12];
|
|
int len;
|
|
while ((len = in.read(buf)) != -1)
|
|
sb.append(buf, 0, len);
|
|
return normalize(sb);
|
|
} finally {
|
|
in.close();
|
|
}
|
|
} catch (Exception e) {
|
|
throw new RuntimeException("Unexpected", e);
|
|
}
|
|
}
|
|
|
|
}
|