comparison truffle/com.oracle.truffle.sl.test/src/com/oracle/truffle/sl/test/SLTestRunner.java @ 22165:67f75f61c974

Certain languages (like FastR) prefer access to raw byte streams. Offering it. One always has an option to wrap Input and Output Streams into character based Readers and Writers
author Jaroslav Tulach <jaroslav.tulach@oracle.com>
date Mon, 21 Sep 2015 12:36:30 +0200
parents dc83cc1f94f2
children 0480c4873a4a
comparison
equal deleted inserted replaced
22164:567d324c306c 22165:67f75f61c974
44 import com.oracle.truffle.api.vm.TruffleVM; 44 import com.oracle.truffle.api.vm.TruffleVM;
45 import com.oracle.truffle.sl.SLLanguage; 45 import com.oracle.truffle.sl.SLLanguage;
46 import com.oracle.truffle.sl.builtins.SLBuiltinNode; 46 import com.oracle.truffle.sl.builtins.SLBuiltinNode;
47 import com.oracle.truffle.sl.test.SLTestRunner.TestCase; 47 import com.oracle.truffle.sl.test.SLTestRunner.TestCase;
48 import java.io.BufferedReader; 48 import java.io.BufferedReader;
49 import java.io.ByteArrayInputStream;
49 import java.io.ByteArrayOutputStream; 50 import java.io.ByteArrayOutputStream;
50 import java.io.File; 51 import java.io.File;
51 import java.io.FileNotFoundException; 52 import java.io.FileNotFoundException;
52 import java.io.IOException; 53 import java.io.IOException;
53 import java.io.PrintWriter; 54 import java.io.PrintWriter;
227 @Override 228 @Override
228 protected void runChild(TestCase testCase, RunNotifier notifier) { 229 protected void runChild(TestCase testCase, RunNotifier notifier) {
229 notifier.fireTestStarted(testCase.name); 230 notifier.fireTestStarted(testCase.name);
230 231
231 ByteArrayOutputStream out = new ByteArrayOutputStream(); 232 ByteArrayOutputStream out = new ByteArrayOutputStream();
232 PrintWriter printer = new PrintWriter(out);
233 try { 233 try {
234 TruffleVM vm = TruffleVM.newVM().stdIn(new BufferedReader(new StringReader(repeat(testCase.testInput, repeats)))).stdOut(printer).build(); 234 TruffleVM vm = TruffleVM.newVM().setIn(new ByteArrayInputStream(repeat(testCase.testInput, repeats).getBytes("UTF-8"))).setOut(out).build();
235 235
236 String script = readAllLines(testCase.path); 236 String script = readAllLines(testCase.path);
237
238 PrintWriter printer = new PrintWriter(out);
237 SLLanguage.run(vm, testCase.path, null, printer, repeats, builtins); 239 SLLanguage.run(vm, testCase.path, null, printer, repeats, builtins);
238
239 printer.flush(); 240 printer.flush();
241
240 String actualOutput = new String(out.toByteArray()); 242 String actualOutput = new String(out.toByteArray());
241 Assert.assertEquals(script, repeat(testCase.expectedOutput, repeats), actualOutput); 243 Assert.assertEquals(script, repeat(testCase.expectedOutput, repeats), actualOutput);
242 } catch (Throwable ex) { 244 } catch (Throwable ex) {
243 notifier.fireTestFailure(new Failure(testCase.name, new IllegalStateException("Cannot run " + testCase.sourceName, ex))); 245 notifier.fireTestFailure(new Failure(testCase.name, new IllegalStateException("Cannot run " + testCase.sourceName, ex)));
244 } finally { 246 } finally {