sbrd_gen/generator/primitive/
bool_generator.rs1use crate::builder::GeneratorBuilder;
2use crate::error::{BuildError, GenerateError};
3use crate::generator::{GeneratorBase, Randomizer};
4use crate::value::{DataValue, DataValueMap};
5use crate::GeneratorType;
6
7#[derive(Debug, PartialEq, Eq, Clone)]
11pub struct BoolGenerator {
12 nullable: bool,
13}
14
15impl<R: Randomizer + ?Sized> GeneratorBase<R> for BoolGenerator {
16 fn create(builder: GeneratorBuilder) -> Result<Self, BuildError>
17 where
18 Self: Sized,
19 {
20 let GeneratorBuilder {
21 generator_type,
22 nullable,
23 ..
24 } = builder;
25
26 if generator_type != GeneratorType::Bool {
27 return Err(BuildError::InvalidType(generator_type));
28 }
29
30 Ok(Self { nullable })
31 }
32
33 fn is_nullable(&self) -> bool {
34 self.nullable
35 }
36
37 fn generate_without_null(
38 &self,
39 rng: &mut R,
40 _context: &DataValueMap<&str>,
41 ) -> Result<DataValue, GenerateError> {
42 Ok(DataValue::Bool(rng.gen_bool(0.5)))
43 }
44}