package xsbt.boot import org.scalacheck._ object ListMapProperties extends Properties("ListMap") { implicit val genListMap = Arbitrary ( for(list <- Arbitrary.arbitrary[List[(Int,Int)]]) yield ListMap(list : _*) ) property("ListMap from List contains all members of that List") = Prop.forAll { (list: List[(Int,Int)]) => val map = ListMap(list : _*) list forall { entry => map contains entry._1 } } property("contains added entry") = Prop.forAll { (map: ListMap[Int,Int], key: Int, value: Int) => { (map + (key, value) ) contains(key) } && { (map + (key, value) )(key) == value } && { (map + (key, value) ).get(key) == Some(value) } } property("remove") = Prop.forAll { (map: ListMap[Int,Int], key: Int) => { Prop.throws((map - key)(key), classOf[Exception]) } && { !(map - key).contains(key) } && { (map - key).get(key).isEmpty } } property("empty") = Prop.forAll { (key: Int) => { Prop.throws(ListMap.empty(key), classOf[Exception]) } { !ListMap.empty.contains(key) } && { ListMap.empty.get(key).isEmpty } } } object ListMapEmpty extends Properties("ListMap.empty") { import ListMap.empty property("isEmpty") = empty.isEmpty property("toList.isEmpty") = empty.toList.isEmpty property("toSeq.isEmpty") = empty.toSeq.isEmpty property("toStream.isEmpty") = empty.toStream.isEmpty property("keys.isEmpty") = empty.keys.isEmpty property("elements.isEmpty") = !empty.elements.hasNext }