hegeltest 0.23.2

Property-based testing for Rust, built on Hypothesis
Documentation
use std::collections::HashMap;

use serde_json::{Map, Number, Value};

use crate::generators::{self as gs, BoxedGenerator, DefaultGenerator, Generator};

use super::{NumberGenerator, ValueGenerator, numbers, values};

impl DefaultGenerator for Number {
    type Generator = NumberGenerator;
    fn default_generator() -> Self::Generator {
        numbers()
    }
}

impl DefaultGenerator for Value {
    type Generator = ValueGenerator;
    fn default_generator() -> Self::Generator {
        values()
    }
}

impl DefaultGenerator for Map<String, Value> {
    type Generator = BoxedGenerator<'static, Map<String, Value>>;
    fn default_generator() -> Self::Generator {
        gs::hashmaps(
            <String as DefaultGenerator>::default_generator(),
            <Value as DefaultGenerator>::default_generator(),
        )
        .map(|m: HashMap<String, Value>| m.into_iter().collect::<Map<String, Value>>())
        .boxed()
    }
}

#[cfg(feature = "serde_json_raw_value")]
impl DefaultGenerator for Box<serde_json::value::RawValue> {
    type Generator = super::RawValueGenerator;
    fn default_generator() -> Self::Generator {
        super::raw_values()
    }
}