2015-10-27 22 views
11

Scalacheck ile rasgele veri oluşturmaya çalışıyorum. Birçok özelliği olan bir vaka sınıfları hiyerarşisi var. Dava sınıfları doldurmak için şimdiye kadar bulduğum tek yolu şu şekildedir: oldukça sıkıcı olduğunu 10-20 özelliklere sahip bir olgu sınıf içinScalacheck vaka sınıfı rasgele veri üreteci

case class Data(a: String, 
       b: String, 
       c: String) 

val genLigneDecompte: Gen[Data] = for { 
    ag <- Gen.alphaStr 
    bg <- Gen.alphaStr 
    cg <- Gen.alphaStr 
} yield Data(
    a = ag, 
    b = bg, 
    c = cg 
) 

. Bir şekilde otomasyon yapmanın bir yolu var mı diye merak ediyordum.

cevap

10

Eminim ki birisi shapeless'u kullanarak ariteyle ilgili özetleri içeren bir çözüm bulacaktır. Ama

case class Data(a: String, b: String, c: String) 

val dataArb = Arbitrary(Gen.resultOf(Data)) 
// equivalent to 
// val f: (String, String, String) => Data = Data.apply 
// val gen: Gen[Data] = Gen.resultOf(f) 
// val arb: Arbitrary[Data] = Arbitrary(gen) 
+0

Shapeless tabanlı bir lib zaten var olmadığından şaşırdım – wheaties

+0

Gen. –

+0

'da bazı yardımcı yöntemler olduğunu görünce teşekkürler, işte aradığım şey bu! – KaC

5

esaslı şekilsiz yoktur vaka sınıf arkadaşı nesnesinin uygulamak yöntemiyle kullanılabilen farklı Arity işlevlerinden Gen [T] örneklerini üretmek için bazı yardımcı yöntemler vardır Scalacheck kütüphane https://github.com/alexarchambault/scalacheck-shapeless ne