私はscalacheck 1.6.6とspecs 1.7(scala 2.8.1)で、(ゼロでない長さの)有効なUnicode文字列を生成するジェネレータを作成しようとしています。scalacheckを使って任意の(正式な)Unicode文字を生成していますか?
私は同じように発電機を作成することができ期待し:その後のようなスペックからそれらを使用して...
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
}
:
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)
}
}
}
しかし、unicodeCharでフィルタを使用すると、問題が発生しているようです:私はunicodeCharからフィルタを削除した場合
Specification "CoreSpec"
The core should
x pass trivially
Gave up after only 64 passed tests. 500 tests were discarded.
、私のテストは合格、私は他の問題に遭遇します私の文字列は常によく定義されたUnicodeではないので、後で。
これを達成する方法に関するご意見をお寄せいただきありがとうございます。
私はスペックを使用して、新しい暗黙のPARAMSインスタンスを提供しない場合、それは少し簡単に思えます。しかしそれは症状を修正するだけであり、根本的な原因を実際には解決しません。 –