This traits enable you to use ScalaTest matchers' “have length”
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.net.DatagramPacket
import java.net.DatagramPacket
scala> import org.scalatest.matchers.ShouldMatchers._
import org.scalatest.matchers.ShouldMatchers._
scala> val dp = new DatagramPacket(Array(0x0, 0x1, 0x2, 0x3), 4)
dp: java.net.DatagramPacket = java.net.DatagramPacket@54906181
scala> dp.getLength
res0: Int = 4
scala> dp should have length 4
:13: error: could not find implicit value for parameter ev: org.scalatest.matchers.ShouldMatchers.Extent[java.net.DatagramPacket]
dp should have length 4
^
scala> implicit val lengthOfDatagramPacket =
| new Length[DatagramPacket] {
| def extentOf(dp: DatagramPacket): Long = dp.getLength
| }
lengthOfDatagramPacket: java.lang.Object with org.scalatest.matchers.ShouldMatchers.Length[java.net.DatagramPacket] = $anon$1@550c6b37
scala> dp should have length 4
scala> dp should have length 3
org.scalatest.exceptions.TestFailedException: java.net.DatagramPacket@54906181 had length 4, not length 3
Supertrait for
Length
type classes.This traits enable you to use ScalaTest matchers' “
have length
” 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.