org.scalatest.prop

HavingLength

trait HavingLength[T] extends HavingSize[T]

This trait is mixed in to Generators that have a well-defined notion of "length".

Broadly speaking, this applies when T is a type that has a length method. For example, Generator.listGenerator (also known as CommonGenerators.lists) has the HavingLength trait because List has a length method.

Generators with this trait provide several functions that allow you to create more-specialized Generators, with specific length bounds.

Note that this trait extends HavingSize, and is quite similar to it, reflecting the relationship between the length and size methods in many standard library types. The functions in here are basically just a shell around those in HavingSize.

T

the type that this Generator produces

Source
HavingLength.scala
Linear Supertypes
HavingSize[T], AnyRef, Any
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. HavingLength
  2. HavingSize
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Abstract Value Members

  1. abstract def havingSize(len: PosZInt): Generator[T]

    Create a version of this Generator that produces values of exactly the specified size.

    Create a version of this Generator that produces values of exactly the specified size.

    For example, consider:

    val stringSets: Generator[Set[String]] =
      Generator.setGenerator[String]
    
    val singleStringSets: Generator[Set[String]] =
      stringSets.havingSize(1)

    The singleStringSets Generator will always produce Sets of exactly one String.

    len

    the size of the values to produce

    returns

    a new Generator that produces values of that size

    Definition Classes
    HavingSize
  2. abstract def havingSizesBetween(from: PosZInt, to: PosZInt): Generator[T]

    Create a version of this Generator that produces values within the specified size range.

    Create a version of this Generator that produces values within the specified size range.

    The bounds are inclusive: the resulting Generator may produce values with a size of to or from.

    For example, consider:

    val stringSets: Generator[Set[String]] =
      Generator.setGenerator[String]
    
    val smallStringSets: Generator[Set[String]] =
      stringSets.havingSizesBetween(0, 3)

    The smallStringSets Generator will always produce Sets of zero through three Strings.

    from

    The smallest desired size to produce

    to

    The largest desired size to produce

    returns

    a Generator that will only produce values within that size range

    Definition Classes
    HavingSize
  3. abstract def havingSizesDeterminedBy(f: (SizeParam) ⇒ SizeParam): Generator[T]

    Create a version of this Generator whose legal sizes are adjusted by a specified function.

    Create a version of this Generator whose legal sizes are adjusted by a specified function.

    For example:

    def currentLimit: PosZInt = ...
    
    def limitedSize(szp: SizeParam): SizeParam = {
      val limit = currentLimit
      val sz = if (szp.maxSize < limit) szp.maxSize else limit
      szp.copy(size = sz)
    }
    
    val sizelimitedLists = lists[Int].havingSizesDeterminedBy(limitedSize)

    This doesn't hard-code the size of the sizeLimitedLists Generator, but allows the maximum size to be clamped based on a dynamic currentLimit function.

    f

    a transformation function that takes the current SizeParam and returns a new one

    returns

    a Generator that will base its sizes on the given function

    Definition Classes
    HavingSize

Concrete Value Members

  1. final def !=(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  2. final def !=(arg0: Any): Boolean

    Definition Classes
    Any
  3. final def ##(): Int

    Definition Classes
    AnyRef → Any
  4. final def ==(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  5. final def ==(arg0: Any): Boolean

    Definition Classes
    Any
  6. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  7. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  8. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  9. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  10. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  11. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  12. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  13. final def havingLength(len: PosZInt): Generator[T]

    Create a version of this Generator that produces values of exactly the specified length.

    Create a version of this Generator that produces values of exactly the specified length.

    For example, consider:

    val stringLists: Generator[List[String]] =
      Generator.ListGenerator[String]
    
    val singleStringLists: Generator[List[String]] =
      stringLists.havingSize(1)

    The singleStringLists Generator will always produce Lists of exactly one String.

    len

    the length of the values to produce

    returns

    a new Generator that produces values of that length

  14. final def havingLengthsBetween(from: PosZInt, to: PosZInt): Generator[T]

    Create a version of this Generator that produces values within the specified length range.

    Create a version of this Generator that produces values within the specified length range.

    The bounds are inclusive: the resulting Generator may produce values with a length of to or from.

    For example, consider:

    val stringLists: Generator[List[String]] =
      Generator.ListGenerator[String]
    
    val smallStringLists: Generator[List[String]] =
      stringLists.havingLengthsBetween(0, 3)

    The smallStringLists Generator will always produce Lists of zero through three Strings.

    The from parameter must be smaller than the to parameter, and may not be equal to it. If you want a Generator with a single specific length, use havingLength() instead.

    from

    The smallest desired size to produce

    to

    The largest desired size to produce

    returns

    a Generator that will only produce values within that length range

  15. final def havingLengthsDeterminedBy(f: (SizeParam) ⇒ SizeParam): Generator[T]

    Create a version of this Generator whose legal lengths are adjusted by a specified function.

    Create a version of this Generator whose legal lengths are adjusted by a specified function.

    For example:

    def currentLimit: PosZInt = ...
    
    def limitedSize(szp: SizeParam): SizeParam = {
      val limit = currentLimit
      val sz = if (szp.maxSize < limit) szp.maxSize else limit
      szp.copy(size = sz)
    }
    
    val sizelimitedLists = lists[Int].havingLengthsDeterminedBy(limitedSize)

    This doesn't hard-code the length of the sizeLimitedLists Generator, but allows the maximum length to be clamped based on a dynamic currentLimit function.

    f

    a transformation function that takes the current SizeParam and returns a new one

    returns

    a Generator that will base its lengths on the given function

  16. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  17. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  18. final def notify(): Unit

    Definition Classes
    AnyRef
  19. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  20. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  21. def toString(): String

    Definition Classes
    AnyRef → Any
  22. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  23. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  24. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from HavingSize[T]

Inherited from AnyRef

Inherited from Any

Ungrouped