Skip to content

Commit 2132c2c

Browse files
committed
Add type-erased Frequency generators
1 parent 2f34023 commit 2132c2c

File tree

1 file changed

+28
-0
lines changed

1 file changed

+28
-0
lines changed

Sources/PropertyBased/Gen+Frequency.swift

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,4 +43,32 @@ extension Gen {
4343
}
4444
)
4545
}
46+
47+
#if swift(>=6.2)
48+
public static func oneOf<each Seq: Sequence>(_ generators: repeat Generator<Value, each Seq>)
49+
-> Generator<Value, AnySequence<(index: Int, value: Any)>>
50+
{
51+
var gens: [(rate: Float, gen: Generator<Value, AnySequence<Any>>)] = []
52+
53+
for gen in repeat each generators {
54+
gens.append((rate: 1.0, gen.eraseToAny()))
55+
}
56+
57+
return frequency(gens)
58+
}
59+
60+
public static func frequency<each Seq: Sequence>(
61+
_ generators: repeat (rate: Float, gen: Generator<Value, each Seq>)
62+
)
63+
-> Generator<Value, AnySequence<(index: Int, value: Any)>>
64+
{
65+
var gens: [(rate: Float, gen: Generator<Value, AnySequence<Any>>)] = []
66+
67+
for (rate, gen) in repeat each generators {
68+
gens.append((rate: rate, gen.eraseToAny()))
69+
}
70+
71+
return frequency(gens)
72+
}
73+
#endif // swift(>=6.2)
4674
}

0 commit comments

Comments
 (0)