diff options
Diffstat (limited to 'core/src/test/scala/akka/serial/SerialOperatorSpec.scala')
-rw-r--r-- | core/src/test/scala/akka/serial/SerialOperatorSpec.scala | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/core/src/test/scala/akka/serial/SerialOperatorSpec.scala b/core/src/test/scala/akka/serial/SerialOperatorSpec.scala new file mode 100644 index 0000000..6907494 --- /dev/null +++ b/core/src/test/scala/akka/serial/SerialOperatorSpec.scala @@ -0,0 +1,50 @@ +package akka.serial + +import scala.concurrent.duration._ + +import akka.actor.{ActorRef, ActorSystem} +import akka.testkit.{ImplicitSender, TestKit} +import akka.util.ByteString +import org.scalatest._ +import sync._ + +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.Close + expectMsg(Serial.Closed) + + } + + } + +} |