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
singleStringSetsGenerator 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
toorfrom.For example, consider:
val stringSets: Generator[Set[String]] = Generator.setGenerator[String] val smallStringSets: Generator[Set[String]] = stringSets.havingSizesBetween(0, 3)
The
smallStringSetsGenerator 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
sizeLimitedListsGenerator, but allows the maximum size to be clamped based on a dynamiccurrentLimitfunction.- 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
- @native() @throws( ... )
-
final
def
eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
-
def
equals(arg0: Any): 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[_]
- 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
singleStringListsGenerator 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
toorfrom.For example, consider:
val stringLists: Generator[List[String]] = Generator.ListGenerator[String] val smallStringLists: Generator[List[String]] = stringLists.havingLengthsBetween(0, 3)
The
smallStringListsGenerator will always produce Lists of zero through three Strings.The
fromparameter must be smaller than thetoparameter, 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
sizeLimitedListsGenerator, but allows the maximum length to be clamped based on a dynamiccurrentLimitfunction. -
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( ... )
-
final
def
wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
-
final
def
wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @native() @throws( ... )