scalacheck 1.6.6 및 specs 1.7 (scala 2.8.1)을 사용하여 (길이가 0이 아닌) 유효한 유니 코드 문자열을 생성하는 생성기를 만들려고합니다. 이 unicodeChar에서 필터를 사용하는 것은 문제가 될 것 같다,scalacheck로 임의의 (합법적 인) 유니 코드 문자를 생성 하시겠습니까?
import org.specs.Specification
import org.specs.matcher.ScalaCheckMatchers
object CoreSpec extends Specification with ScalaCheckMatchers {
"The core" should {
"pass trivially" in {
Generators.unicodeStr must pass((s: String) => s == s)
}
}
}
:하지만, 다음과 같은 사양에서 사용할 ...
object Generators {
def unicodeChar: Gen[Char] =
choose(Math.MIN_CHAR, Math.MAX_CHAR).map(_.toChar).filter(
c => Character.isDefined(c))
def unicodeStr: Gen[String] = for(cs <- listOf1(unicodeChar)) yield cs.mkString
}
:
는 난 그냥 같은 발전기를 만들 수 있습니다 희망 :
Specification "CoreSpec"
The core should
x pass trivially
Gave up after only 64 passed tests. 500 tests were discarded.
unicodeChar에서 필터를 제거하면 테스트가 통과되지만 다른 문제가 발생합니다. 나중에 문자열이 잘 정의 된 유니 코드가 아니기 때문입니다.
이것을 달성하는 방법에 대한 제안을 미리 감사드립니다.
그것은 좀 더 쉽게 보인다. 그러나 증상 만 수정하면 실제 원인을 해결할 수 없습니다. –