Trait that provides an implicit conversion that adds to collection types a loneElement method, which
will return the value of the lone element if the collection does
indeed contain one and only one element, or throw TestFailedException if not.
This construct allows you to express in one statement that a collection should contain one and only one element and that the element value should meet some expectation. Here's an example:
set.loneElement should be > 9
Or, using an assertion instead of a matcher expression:
assert(set.loneElement > 9)
The loneElement syntax can be used with any collection type C for which an
implicit Collecting[C] is available. ScalaTest provides
implicit Collecting instances for scala.collection.GenTraversable, Array,
and java.util.Collection. You can enable the loneElement
syntax on other collection types by defining an implicit Collecting instances for those types.
If you want to use loneElement with a java.util.Map, first transform it to a
set of entries with entrySet, and if helpful, use ScalaTest's Entry class:
scala> import org.scalatest._
import org.scalatest._
scala> import LoneElement._
import LoneElement._
scala> import Matchers._
import Matchers._
scala> val jmap = new java.util.HashMap[String, Int]
jmap: java.util.HashMap[String,Int] = {}
scala> jmap.put("one", 1)
res0: Int = 0
scala> jmap.entrySet.loneElement should be (Entry("one", 1))
- Companion:
- object
Type members
Classlikes
Wrapper class that adds a loneElement method to any collection type C for which
an implicit Collecting[C] is available.
Wrapper class that adds a loneElement method to any collection type C for which
an implicit Collecting[C] is available.
Through the implicit conversion provided by trait LoneElement, this class allows you to make statements like:
trav.loneElement should be > 9
- Type parameters:
- CTC
the "collection type constructor" for the collection on which to add the
loneElementmethod- E
the element type of the collection on which to add the
loneElementmethod
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax- collection
a collection to wrap in a
LoneElementCollectionWrapper, which provides theloneElementmethod.
Wrapper class that adds a loneElement method to Java Map for which
an implicit Collecting[org.scalatest.Entry, java.util.Map] is available.
Wrapper class that adds a loneElement method to Java Map for which
an implicit Collecting[org.scalatest.Entry, java.util.Map] is available.
Through the implicit conversion provided by trait LoneElement, this class allows you to make statements like:
jmap.loneElement.getKey should be > 9
- Type parameters:
- JMAP
the "Java Map type constructor" for the collection on which to add the
loneElementmethod- K
the element type of the Java Map key on which to add the
loneElementmethod- V
the element type of the Java Map value on which to add the
loneElementmethod
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax
Wrapper class that adds a loneElement method to Map for which
an implicit Collecting[(K, V), scala.collection.GenTraversable[(K, V)]] is available.
Wrapper class that adds a loneElement method to Map for which
an implicit Collecting[(K, V), scala.collection.GenTraversable[(K, V)]] is available.
Through the implicit conversion provided by trait LoneElement, this class allows you to make statements like:
map.loneElement._1 should be > 9
- Type parameters:
- K
the element type of the Map key on which to add the
loneElementmethod- MAP
the "Map type constructor" for the collection on which to add the
loneElementmethod- V
the element type of the Map value on which to add the
loneElementmethod
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax
Wrapper class that adds a loneElement method to String for which an
implicit Collecting[C] is available.
Wrapper class that adds a loneElement method to String for which an
implicit Collecting[C] is available.
Through the implicit conversion provided by trait LoneElement, this class allows you to make statements like:
"9".loneElement should be ('9')
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax- s
the
Stringto wrap
Implicits
Implicits
Implicit conversion that adds a loneElement method to any collection type C for which an
implicit Collecting[C] is available.
Implicit conversion that adds a loneElement method to any collection type C for which an
implicit Collecting[C] is available.
- Type parameters:
- CTC
the "collection type constructor" for the collection on which to add the
loneElementmethod- E
the element type of the collection on which to add the
loneElementmethod
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax- collection
the collection on which to add the
loneElementmethod
Implicit conversion that adds a loneElement method to String for which an
implicit Collecting[C] is available.
Implicit conversion that adds a loneElement method to String for which an
implicit Collecting[C] is available.
- Value parameters:
- collecting
a typeclass that enables the
loneElementsyntax- s
the
Stringto wrap