diff options
author | Jakob Odersky <jakob@odersky.com> | 2016-12-03 22:36:23 -0800 |
---|---|---|
committer | Jakob Odersky <jakob@odersky.com> | 2016-12-03 22:36:23 -0800 |
commit | 8e42c6f340b2a35bfb5c08df116a1e88de052eb7 (patch) | |
tree | a683195edf1a1abc16e63d0dcd465676f282dfed /flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala | |
parent | e8117e273b1d57f2d31d43e58e190dda1cf2a025 (diff) | |
download | akka-serial-8e42c6f340b2a35bfb5c08df116a1e88de052eb7.tar.gz akka-serial-8e42c6f340b2a35bfb5c08df116a1e88de052eb7.tar.bz2 akka-serial-8e42c6f340b2a35bfb5c08df116a1e88de052eb7.zip |
Add test suite
Diffstat (limited to 'flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala')
-rw-r--r-- | flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala b/flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala new file mode 100644 index 0000000..4a6cf1e --- /dev/null +++ b/flow-core/src/test/scala/ch/jodersky/flow/SerialOperatorSpec.scala @@ -0,0 +1,53 @@ +package ch.jodersky.flow + +import scala.concurrent.duration._ + +import akka.actor.{ActorRef, ActorSystem} +import akka.testkit.{ImplicitSender, TestKit} +import akka.util.ByteString +import org.scalatest._ + +case class Ack(n: Int) extends Serial.Event + +class SerialOperatorSpec + extends TestKit(ActorSystem("serial-operator")) + with ImplicitSender + with WordSpecLike + with Matchers + with BeforeAndAfterAll + with SequentialNestedSuiteExecution + with PseudoTerminal { + + override def afterAll { + TestKit.shutdownActorSystem(system) + } + + def withEchoOp[A](action: ActorRef => A): A = { + withEcho { case (port, settings) => + val connection = SerialConnection.open(port, settings) + val operator = system.actorOf(SerialOperator.apply(connection, 1024, testActor)) + action(operator) + } + } + + "Serial operator" should { + + "follow the correct protocol" in withEchoOp { op => + expectMsgType[Serial.Opened] + + val data = ByteString("hello world".getBytes("utf-8")) + op ! Serial.Write(data) + expectMsg(Serial.Received(data)) + + op ! Serial.Write(data, n => Ack(n)) + expectMsg(Serial.Received(data)) + expectMsg(Ack(data.length)) + + op ! Serial.Close + expectMsg(Serial.Closed) + + } + + } + +} |