У меня есть тип Foo
с конструктором, который принимает Int
.Как определить implicit
Arbitrary
для Foo
для использования с scalacheck?
implicit def arbFoo: Arbitrary[Foo] = ???
Я придумал следующее решение, но оно слишком «ручное» и низкоуровневоена мой вкус:
val fooGen = for (i <- Gen.choose(Int.MinValue, Int.MaxValue)) yield new Foo(i)
implicit def arbFoo: Arbitrary[Foo] = Arbitrary(fooGen)
В идеале, я бы хотел функцию высшего порядка, где мне просто нужно подключить функцию Int => Foo
.
Мне удалось ее обрезатьдо:
implicit def arbFoo = Arbitrary(Gen.resultOf((i: Int) => new Foo(i)))
Но я все еще чувствую, что должен быть немного более простой способ.