summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorPhilipp Haller <hallerp@gmail.com>2009-05-28 08:57:30 +0000
committerPhilipp Haller <hallerp@gmail.com>2009-05-28 08:57:30 +0000
commit503d8c26b9c75a7689cfecee07803e4cd0d21401 (patch)
tree666b6afe5fdd705d5ae0dd4bfe451b7fce0911d3 /test
parentce0d59af0470a445170c74c161b8f971b6f2a5b3 (diff)
downloadscala-503d8c26b9c75a7689cfecee07803e4cd0d21401.tar.gz
scala-503d8c26b9c75a7689cfecee07803e4cd0d21401.tar.bz2
scala-503d8c26b9c75a7689cfecee07803e4cd0d21401.zip
Added test for OutputChannelActor.
Diffstat (limited to 'test')
-rw-r--r--test/files/jvm/outputchannelactor.check22
-rw-r--r--test/files/jvm/outputchannelactor.scala63
2 files changed, 85 insertions, 0 deletions
diff --git a/test/files/jvm/outputchannelactor.check b/test/files/jvm/outputchannelactor.check
new file mode 100644
index 0000000000..7b16085797
--- /dev/null
+++ b/test/files/jvm/outputchannelactor.check
@@ -0,0 +1,22 @@
+Pong: ping 0
+Ping: pong
+Pong: ping 10000
+Ping: pong
+Pong: ping 20000
+Ping: pong
+Pong: ping 30000
+Ping: pong
+Pong: ping 40000
+Ping: pong
+Pong: ping 50000
+Ping: pong
+Pong: ping 60000
+Ping: pong
+Pong: ping 70000
+Ping: pong
+Pong: ping 80000
+Ping: pong
+Pong: ping 90000
+Ping: pong
+Ping: stop
+Pong: stop
diff --git a/test/files/jvm/outputchannelactor.scala b/test/files/jvm/outputchannelactor.scala
new file mode 100644
index 0000000000..6a982b7a94
--- /dev/null
+++ b/test/files/jvm/outputchannelactor.scala
@@ -0,0 +1,63 @@
+
+import scala.actors.OutputChannelActor
+import scala.actors.Actor._
+
+case class Ping(from: OutputChannelActor)
+case object Pong
+case object Stop
+
+/**
+ * Ping pong example for OutputChannelActor.
+ *
+ * @author Philipp Haller
+ */
+object Test {
+ def main(args: Array[String]) {
+ val pong = new PongActor
+ val ping = new PingActor(100000, pong)
+ ping.start
+ pong.start
+ }
+}
+
+class PingActor(count: Int, pong: OutputChannelActor) extends OutputChannelActor {
+ ignoreSender = true
+ def act() {
+ var pingsLeft = count - 1
+ pong ! Ping(this)
+ loop {
+ react {
+ case Pong =>
+ if (pingsLeft % 10000 == 0)
+ println("Ping: pong")
+ if (pingsLeft > 0) {
+ pong ! Ping(this)
+ pingsLeft -= 1
+ } else {
+ println("Ping: stop")
+ pong ! Stop
+ exit()
+ }
+ }
+ }
+ }
+}
+
+class PongActor extends OutputChannelActor {
+ ignoreSender = true
+ def act() {
+ var pongCount = 0
+ loop {
+ react {
+ case Ping(from) =>
+ if (pongCount % 10000 == 0)
+ println("Pong: ping "+pongCount)
+ from ! Pong
+ pongCount += 1
+ case Stop =>
+ println("Pong: stop")
+ exit()
+ }
+ }
+ }
+}