objectiveai_sdk/functions/check/example_inputs/
mod.rs1pub mod any_of;
2pub mod array;
3pub mod audio;
4pub mod boolean;
5pub mod file;
6pub mod image;
7pub mod integer;
8pub mod multi;
9pub mod number;
10pub mod object;
11pub mod optional;
12pub mod string;
13pub mod video;
14
15#[cfg(test)]
16mod array_tests;
17#[cfg(test)]
18mod tests;
19
20use rand::rngs::StdRng;
21use rand::SeedableRng;
22
23use crate::functions::expression::{InputValue, InputSchema};
24
25pub fn permutations(schema: &InputSchema) -> usize {
26 optional::inner_permutations(schema)
27}
28
29pub fn generate(schema: &InputSchema) -> Generator {
30 generate_seeded(schema, StdRng::from_os_rng())
31}
32
33pub fn generate_seeded(schema: &InputSchema, rng: StdRng) -> Generator {
34 let perms = permutations(schema);
35 Generator {
36 inner: multi::generate(schema, rng),
37 remaining: perms,
38 }
39}
40
41pub struct Generator {
42 inner: multi::Generator,
43 remaining: usize,
44}
45
46impl Iterator for Generator {
47 type Item = InputValue;
48 fn next(&mut self) -> Option<InputValue> {
49 if self.remaining == 0 {
50 return None;
51 }
52 self.remaining -= 1;
53 self.inner.next()
54 }
55}