Skip to main content

objectiveai_sdk/functions/check/example_inputs/
multi.rs

1use 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}