trait LoneElement extends AnyRef
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))
- Source
- LoneElement.scala
- Alphabetic
- By Inheritance
- LoneElement
- AnyRef
- Any
- Hide All
- Show All
- Public
- All
Type Members
-
final
class
LoneElementCollectionWrapper[E, CTC[_]] extends AnyRef
Wrapper class that adds a
loneElement
method to any collection typeC
for which an implicitCollecting[C]
is available.Wrapper class that adds a
loneElement
method to any collection typeC
for which an implicitCollecting[C]
is available.Through the implicit conversion provided by trait
LoneElement
, this class allows you to make statements like:trav.loneElement should be > 9
- E
the element type of the collection on which to add the
loneElement
method- CTC
the "collection type constructor" for the collection on which to add the
loneElement
method
-
final
class
LoneElementJavaMapWrapper[K, V, JMAP[_, _] <: Map[_, _]] extends AnyRef
Wrapper class that adds a
loneElement
method to Java Map for which an implicitCollecting[org.scalatest.Entry, java.util.Map]
is available.Wrapper class that adds a
loneElement
method to Java Map for which an implicitCollecting[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
- K
the element type of the Java Map key on which to add the
loneElement
method- V
the element type of the Java Map value on which to add the
loneElement
method- JMAP
the "Java Map type constructor" for the collection on which to add the
loneElement
method
-
final
class
LoneElementMapWrapper[K, V, MAP[k, v] <: GenMap[k, v]] extends AnyRef
Wrapper class that adds a
loneElement
method to Map for which an implicitCollecting[(K, V), scala.collection.GenTraversable[(K, V)]]
is available.Wrapper class that adds a
loneElement
method to Map for which an implicitCollecting[(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
- K
the element type of the Map key on which to add the
loneElement
method- V
the element type of the Map value on which to add the
loneElement
method- MAP
the "Map type constructor" for the collection on which to add the
loneElement
method
-
final
class
LoneElementStringWrapper extends AnyRef
Wrapper class that adds a
loneElement
method toString
for which an implicitCollecting[C]
is available.Wrapper class that adds a
loneElement
method toString
for which an implicitCollecting[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 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( ... )
- implicit def convertJavaMapToCollectionLoneElementWrapper[K, V, JMAP[_, _] <: Map[_, _]](jmap: JMAP[K, V])(implicit collecting: Collecting[Entry[K, V], JMAP[K, V]], prettifier: Prettifier, pos: Position): LoneElementJavaMapWrapper[K, V, JMAP]
- implicit def convertMapToCollectionLoneElementWrapper[K, V, MAP[k, v] <: GenMap[k, v]](map: MAP[K, V])(implicit collecting: Collecting[(K, V), GenTraversable[(K, V)]], prettifier: Prettifier, pos: Position): LoneElementMapWrapper[K, V, MAP]
-
implicit
def
convertToCollectionLoneElementWrapper[E, CTC[_]](collection: CTC[E])(implicit collecting: Collecting[E, CTC[E]], prettifier: Prettifier, pos: Position): LoneElementCollectionWrapper[E, CTC]
Implicit conversion that adds a
loneElement
method to any collection typeC
for which an implicitCollecting[C]
is available.Implicit conversion that adds a
loneElement
method to any collection typeC
for which an implicitCollecting[C]
is available.- E
the element type of the collection on which to add the
loneElement
method- CTC
the "collection type constructor" for the collection on which to add the
loneElement
method- collection
the collection on which to add the
loneElement
method- collecting
a typeclass that enables the
loneElement
syntax
-
implicit
def
convertToStringLoneElementWrapper(s: String)(implicit prettifier: Prettifier, pos: Position): LoneElementStringWrapper
Implicit conversion that adds a
loneElement
method to String for which an implicitCollecting[C]
is available.Implicit conversion that adds a
loneElement
method to String for which an implicitCollecting[C]
is available.- s
the
String
to wrap
-
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
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( ... )