2015-10-16 19:28:16 +03:00
|
|
|
struct RangedTerm {
|
2015-10-16 20:23:38 +03:00
|
|
|
typealias Term = Cofree<String, (String, Range<Int>)>
|
|
|
|
let term: Term
|
2015-10-16 19:28:16 +03:00
|
|
|
}
|
|
|
|
|
2015-10-16 21:24:17 +03:00
|
|
|
struct UnannotatedTerm {
|
|
|
|
typealias Term = Cofree<String, ()>
|
|
|
|
let term: Term
|
|
|
|
}
|
2015-10-16 19:28:16 +03:00
|
|
|
|
2015-10-16 21:26:32 +03:00
|
|
|
|
|
|
|
extension UnannotatedTerm: Arbitrary {
|
|
|
|
static var arbitrary: Gen<UnannotatedTerm> {
|
|
|
|
let leaf: Gen<Term> = String.arbitrary.fmap { Term((), .Leaf($0)) }
|
|
|
|
return Gen.oneOf([
|
|
|
|
leaf,
|
|
|
|
]).fmap {
|
|
|
|
UnannotatedTerm(term: $0)
|
2015-10-16 20:23:38 +03:00
|
|
|
}
|
2015-10-16 19:28:49 +03:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
2015-10-16 19:28:16 +03:00
|
|
|
@testable import Doubt
|
2015-10-16 19:28:49 +03:00
|
|
|
import SwiftCheck
|