mirror of https://github.com/sbt/sbt.git
52 lines
1.7 KiB
Scala
52 lines
1.7 KiB
Scala
package xsbt.boot
|
|
|
|
import org.scalacheck._
|
|
import Prop.{ Exception => _, _ }
|
|
|
|
object EnumerationTest extends Properties("Enumeration") {
|
|
property("MultiEnum.toValue") = checkToValue(MultiEnum, multiElements: _*)
|
|
property("MultiEnum.elements") = checkElements(MultiEnum, multiElements: _*)
|
|
property("EmptyEnum.toValue") = checkToValue(EmptyEnum)
|
|
property("EmptyEnum.elements") = EmptyEnum.elements.isEmpty
|
|
property("SingleEnum.toValue") = checkToValue(SingleEnum, singleElements)
|
|
property("SingleEnum.elements") = checkElements(SingleEnum, singleElements)
|
|
|
|
def singleElements = ("A", SingleEnum.a)
|
|
def multiElements =
|
|
{
|
|
import MultiEnum.{ a, b, c }
|
|
List(("A" -> a), ("B" -> b), ("C" -> c))
|
|
}
|
|
|
|
def checkElements(enum: Enumeration, mapped: (String, Enumeration#Value)*) =
|
|
{
|
|
val elements = enum.elements
|
|
("elements: " + elements) |:
|
|
(mapped.forall { case (s, v) => elements.contains(v) } && (elements.length == mapped.length))
|
|
}
|
|
def checkToValue(enum: Enumeration, mapped: (String, Enumeration#Value)*) =
|
|
{
|
|
def invalid(s: String) =
|
|
("valueOf(" + s + ")") |:
|
|
Prop.throws(classOf[Exception])(enum.toValue(s))
|
|
def valid(s: String, expected: Enumeration#Value) =
|
|
("valueOf(" + s + ")") |:
|
|
("Expected " + expected) |:
|
|
(enum.toValue(s) == expected)
|
|
val map = Map(mapped: _*)
|
|
Prop.forAll((s: String) =>
|
|
map.get(s) match {
|
|
case Some(v) => valid(s, v)
|
|
case None => invalid(s)
|
|
})
|
|
}
|
|
object MultiEnum extends Enumeration {
|
|
val a = value("A")
|
|
val b = value("B")
|
|
val c = value("C")
|
|
}
|
|
object SingleEnum extends Enumeration {
|
|
val a = value("A")
|
|
}
|
|
object EmptyEnum extends Enumeration
|
|
} |