Skip to main content

objectiveai_sdk/functions/check/example_inputs/
multi.rs

1use rand::rngs::StdRng;
2
3use crate::functions::expression::{InputSchema, InputValue};
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) => Generator::File(super::file::generate(s, rng)),
29        InputSchema::Object(s) => {
30            Generator::Object(super::object::generate(s, rng))
31        }
32        InputSchema::Array(s) => {
33            Generator::Array(super::array::generate(s, rng))
34        }
35        InputSchema::AnyOf(s) => {
36            Generator::AnyOf(super::any_of::generate(s, rng))
37        }
38    }
39}
40
41pub enum Generator {
42    Boolean(super::boolean::Generator<StdRng>),
43    String(super::string::Generator<StdRng>),
44    Integer(super::integer::Generator<StdRng>),
45    Number(super::number::Generator<StdRng>),
46    Image(super::image::Generator<StdRng>),
47    Audio(super::audio::Generator<StdRng>),
48    Video(super::video::Generator<StdRng>),
49    File(super::file::Generator<StdRng>),
50    Object(super::object::Generator),
51    Array(super::array::Generator<StdRng>),
52    AnyOf(super::any_of::Generator<StdRng>),
53}
54
55impl Iterator for Generator {
56    type Item = InputValue;
57    fn next(&mut self) -> Option<InputValue> {
58        match self {
59            Generator::Boolean(g) => g.next(),
60            Generator::String(g) => g.next(),
61            Generator::Integer(g) => g.next(),
62            Generator::Number(g) => g.next(),
63            Generator::Image(g) => g.next(),
64            Generator::Audio(g) => g.next(),
65            Generator::Video(g) => g.next(),
66            Generator::File(g) => g.next(),
67            Generator::Object(g) => g.next(),
68            Generator::Array(g) => g.next(),
69            Generator::AnyOf(g) => g.next(),
70        }
71    }
72}