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
- Alphabetic
- By Inheritance
- HavingLength
- HavingSize
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Abstract Value Members
- 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
- 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
orfrom
.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
- 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 dynamiccurrentLimit
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
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##(): Int
- Definition Classes
- AnyRef → Any
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def clone(): AnyRef
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def finalize(): Unit
- Attributes
- protected[java.lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- 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
- 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
orfrom
.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 theto
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
- 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 dynamiccurrentLimit
function. - final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
- final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()