unity-random 1.0.0

A reimplementation of Unity's pseudo-random number generator.
Documentation
use std::collections::HashMap;
use unity_random::Random;

#[test]
fn inside_unit_circle() {
    let mut random = Random::new();

    let mut map = HashMap::new();
    map.insert(
        0,
        [
            (-0.5568735, 0.3252837),
            (-0.2231333, 0.4286076),
            (-0.2005469, -0.5566905),
            (-0.405624, 0.5776114),
            (-0.1846074, -0.9116018),
        ],
    );
    map.insert(
        1,
        [
            (0.4751172, 0.0009412759),
            (-0.308636, 0.666549),
            (-0.3846249, 0.2593728),
            (0.7976097, 0.475883),
            (-0.02884089, -0.6656236),
        ],
    );
    map.insert(
        358118,
        [
            (-0.4736371, 0.7924381),
            (0.568339, 0.2900833),
            (0.4668945, 0.1359149),
            (-0.9719155, 0.01098891),
            (0.6989536, 0.7077643),
        ],
    );
    map.insert(
        30029247,
        [
            (-0.5878728, -0.3794819),
            (0.6351724, 0.5193423),
            (0.5896927, -0.5685552),
            (-0.4813436, 0.7190998),
            (0.4176237, 0.8590526),
        ],
    );
    map.insert(
        719188662,
        [
            (-0.1262154, -0.8890297),
            (0.9354575, 0.2605929),
            (0.3340298, -0.7768455),
            (-0.5394579, 0.7793431),
            (-0.6767728, -0.0851628),
        ],
    );

    for (seed, values) in map {
        random.init_state(seed);

        for point in values {
            let result = random.inside_unit_circle();

            assert!((point.0 - result.0).abs() < f32::EPSILON);
            assert!((point.1 - result.1).abs() < f32::EPSILON);
        }
    }
}