objectiveai_sdk/functions/check/example_inputs/
multi.rs1use rand::rngs::StdRng;
2
3use crate::functions::expression::{InputValue, InputSchema};
4
5pub fn generate(schema: &InputSchema, rng: StdRng) -> Generator {
6 match schema {
7 InputSchema::Boolean(s) => {
8 Generator::Boolean(super::boolean::generate(s, rng))
9 }
10 InputSchema::String(s) => {
11 Generator::String(super::string::generate(s, rng))
12 }
13 InputSchema::Integer(s) => {
14 Generator::Integer(super::integer::generate(s, rng))
15 }
16 InputSchema::Number(s) => {
17 Generator::Number(super::number::generate(s, rng))
18 }
19 InputSchema::Image(s) => {
20 Generator::Image(super::image::generate(s, rng))
21 }
22 InputSchema::Audio(s) => {
23 Generator::Audio(super::audio::generate(s, rng))
24 }
25 InputSchema::Video(s) => {
26 Generator::Video(super::video::generate(s, rng))
27 }
28 InputSchema::File(s) => {
29 Generator::File(super::file::generate(s, rng))
30 }
31 InputSchema::Object(s) => {
32 Generator::Object(super::object::generate(s, rng))
33 }
34 InputSchema::Array(s) => {
35 Generator::Array(super::array::generate(s, rng))
36 }
37 InputSchema::AnyOf(s) => {
38 Generator::AnyOf(super::any_of::generate(s, rng))
39 }
40 }
41}
42
43pub enum Generator {
44 Boolean(super::boolean::Generator<StdRng>),
45 String(super::string::Generator<StdRng>),
46 Integer(super::integer::Generator<StdRng>),
47 Number(super::number::Generator<StdRng>),
48 Image(super::image::Generator<StdRng>),
49 Audio(super::audio::Generator<StdRng>),
50 Video(super::video::Generator<StdRng>),
51 File(super::file::Generator<StdRng>),
52 Object(super::object::Generator),
53 Array(super::array::Generator<StdRng>),
54 AnyOf(super::any_of::Generator<StdRng>),
55}
56
57impl Iterator for Generator {
58 type Item = InputValue;
59 fn next(&mut self) -> Option<InputValue> {
60 match self {
61 Generator::Boolean(g) => g.next(),
62 Generator::String(g) => g.next(),
63 Generator::Integer(g) => g.next(),
64 Generator::Number(g) => g.next(),
65 Generator::Image(g) => g.next(),
66 Generator::Audio(g) => g.next(),
67 Generator::Video(g) => g.next(),
68 Generator::File(g) => g.next(),
69 Generator::Object(g) => g.next(),
70 Generator::Array(g) => g.next(),
71 Generator::AnyOf(g) => g.next(),
72 }
73 }
74}