Trait

org.scalatest.prop

HavingLength

Related Doc: package prop

Permalink

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
Visibility
  1. Public
  2. All

Abstract Value Members

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

    Permalink

    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]

    Permalink

    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]

    Permalink

    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: Any): Boolean

    Permalink
    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

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

    Permalink
    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Permalink
    Definition Classes
    Any
  5. def clone(): AnyRef

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

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

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

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

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

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

    Permalink

    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

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

    Permalink

    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

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

    Permalink

    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

  14. final def isInstanceOf[T0]: Boolean

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

    Permalink
    Definition Classes
    AnyRef
  16. final def notify(): Unit

    Permalink
    Definition Classes
    AnyRef
  17. final def notifyAll(): Unit

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

    Permalink
    Definition Classes
    AnyRef
  19. def toString(): String

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

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

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

    Permalink
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from HavingSize[T]

Inherited from AnyRef

Inherited from Any

Ungrouped