2016-04-18 26 views
0

在我的ScalaTest測試中,我需要可以用US-ASCII編碼的字符串。我試圖檢查是否字符串可以在字符集與絃樂的默認生成器,之後進行編碼:生成可以在ScalaCheck中通過特定字符集編碼的字符串

forAll { str: String => 
    StandardCharsets.US_ASCII.newEncoder().canEncode(str) ==> { 
    // my test code is here 
    } 
} 

,但我得到一個錯誤:

Gave up after only 8 passed tests. 501 tests were discarded.

是否有生成的字符串的簡單方法哪些可以編碼在一個特定的字符集?

回答

3

您可以創建一個發電機,僅產生有效的字符

val usAsciiStringGen = Gen.containerOf[Array, Char](Gen.choose[Char](0,127)).map(_.mkString) 

然後在測試中使用它:

​​

注意檢查是不是真的有必要了,因爲只有美國ASCII字符串將會產生。

+0

這裏不需要理解。上限應該是127,而不是128。 –

相關問題