This traits enable you to use ScalaTest matchers' “have size”
syntax to be used with arbitrary objects. As an example, consider
java.net.DatagramPacket, which has a getLength method. By default, this
can't be used with ScalaTest's have length syntax.
scala> import java.awt.image.DataBufferByte
import java.awt.image.DataBufferByte
scala> import org.scalatest.matchers.ShouldMatchers._
import org.scalatest.matchers.ShouldMatchers._
scala> val db = new DataBufferByte(4)
db: java.awt.image.DataBufferByte = java.awt.image.DataBufferByte@33d5e94f
scala> db.getSize
res0: Int = 4
scala> db should have size 4
:17: error: could not find implicit value for parameter ev: org.scalatest.matchers.ShouldMatchers.Extent[java.awt.image.DataBufferByte]
db should have size 4
^
scala> implicit val sizeOfDataBufferByte =
| new Size[DataBufferByte] {
| def extentOf(db: DataBufferByte): Long = db.getSize
| }
sizeOfDataBufferByte: java.lang.Object with org.scalatest.matchers.ShouldMatchers.Size[java.awt.image.DataBufferByte] = $anon$1@4c69bdf8
scala> db should have size 4
scala> db should have size 3
org.scalatest.exceptions.TestFailedException: java.awt.image.DataBufferByte@33d5e94f had size 4, not size 3
Supertrait for
Size
type classes.This traits enable you to use ScalaTest matchers' “
have size
” syntax to be used with arbitrary objects. As an example, considerjava.net.DatagramPacket
, which has agetLength
method. By default, this can't be used with ScalaTest'shave length
syntax.