aboutsummaryrefslogtreecommitdiff
path: root/test/test/TestREPL.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-03-17 16:19:03 +0100
committerMartin Odersky <odersky@gmail.com>2016-03-18 12:25:47 +0100
commite1fb19412c5dcc722e7df24e543aadf03a463c9a (patch)
tree15c3732fba37b8b609c09b0632edd63fd0b59f77 /test/test/TestREPL.scala
parent57bde5b5c31b76c687649848bbe2207ebeb7a57d (diff)
downloaddotty-e1fb19412c5dcc722e7df24e543aadf03a463c9a.tar.gz
dotty-e1fb19412c5dcc722e7df24e543aadf03a463c9a.tar.bz2
dotty-e1fb19412c5dcc722e7df24e543aadf03a463c9a.zip
Add REPL tests
Diffstat (limited to 'test/test/TestREPL.scala')
-rw-r--r--test/test/TestREPL.scala40
1 files changed, 40 insertions, 0 deletions
diff --git a/test/test/TestREPL.scala b/test/test/TestREPL.scala
new file mode 100644
index 000000000..a9978cdde
--- /dev/null
+++ b/test/test/TestREPL.scala
@@ -0,0 +1,40 @@
+package test
+
+import dotty.tools.dotc.repl._
+import dotty.tools.dotc.core.Contexts.Context
+import collection.mutable
+import java.io.StringWriter
+
+
+class TestREPL(script: String) extends REPL {
+
+ private val prompt = "scala> "
+ private val continuationPrompt = " | "
+
+ private val out = new StringWriter()
+ override val output = new NewLinePrintWriter(out)
+
+ override def input(implicit ctx: Context) = new InteractiveReader {
+ val lines = script.lines
+ def readLine(prompt: String): String = {
+ val line = lines.next
+ if (line.startsWith(prompt) || line.startsWith(continuationPrompt)) {
+ output.println(line)
+ line.drop(prompt.length)
+ }
+ else readLine(prompt)
+ }
+ val interactive = false
+ }
+
+ def check() = {
+ out.close()
+ val printed = out.toString
+ val transcript = printed.drop(printed.indexOf(prompt))
+ if (transcript.toString != script) {
+ println("input differs from transcript:")
+ println(transcript)
+ assert(false)
+ }
+ }
+} \ No newline at end of file