Testing akka system IO
Posted by eggsearle on February 25, 2012
All code needs tests and the contents of the previous post are no exception
The tests are surprisingly easy to define and certainly help to clarify how the implementation incrementally consumes the input as it becomes available.
import org.junit._ import Assert._ import akka.actor._ import akka.util.{ ByteString, ByteStringBuilder } class LengthBoundedTest { import IO._ @Test def one { val i1 = LengthBoundedServer.readMessage(Chunk(ByteString("0001A"))) assertEquals((Done("A"), Chunk(ByteString())), i1) assertEquals("A", i1._1.get) } @Test def two { val i1 = LengthBoundedServer.readMessage(Chunk(ByteString("0002AB"))) assertEquals((Done("AB"), Chunk(ByteString())), i1) assertEquals("AB", i1._1.get) } @Test def oneTwo { val i1 = LengthBoundedServer.readMessage(Chunk(ByteString("0001A0002AB"))) assertEquals((Done("A"), Chunk(ByteString(48, 48, 48, 50, 65, 66))), i1) assertEquals("A", i1._1.get) } @Test def onePartial { val i1 = LengthBoundedServer.readMessage(Chunk(ByteString("0001"))) assertEquals("(Cont(<function1>,None),Chunk(ByteString()))", i1.toString) assertEquals("", i1._1.get) val i2 = i1._1(Chunk(ByteString("A"))) assertEquals((Done("A"), Chunk(ByteString())), i2) assertEquals("A", i2._1.get) } }
Leave a comment