Trait Size is a typeclass trait for objects that can be queried for size.
Objects of type T for which an implicit Size[T] is available can be used
with the should have size syntax.
In other words, this trait enables you to use the size checking
syntax with arbitrary objects. As an example, consider
java.net.DatagramPacket, which has a getSize method. By default, this
can't be used with ScalaTest's have size 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 sizeOf(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
typeclasses.Trait
Size
is a typeclass trait for objects that can be queried for size. Objects of type T for which an implicitSize[T]
is available can be used with theshould have size
syntax. In other words, this trait enables you to use the size checking syntax with arbitrary objects. As an example, considerjava.net.DatagramPacket
, which has agetSize
method. By default, this can't be used with ScalaTest'shave size
syntax.