drand48 0.2.0

drand48 - POSIX.1 standard LCG random number generator
Documentation
/*
DRAND48 Linear congruential generator
implementation by Radim Kolar <hsn@sendmail.cz> 2025
https://gitlab.com/hsn10/drand48

This is free and unencumbered software released into the public domain.
SPDX-License-Identifier: Unlicense OR CC0-1.0

For more information, please refer to <http://unlicense.org/>
*/

#[test]
fn extract_byte3_order() {
   let drand_output: i64 = 0b_10110100_01011001_11100010_00000000_00000000_00000000;
   assert!( drand_output < crate::M );
   let extracted_bytes = super::get_bytes3(drand_output);
   assert_eq!( extracted_bytes.len(), 3);
   assert_eq!( extracted_bytes[0], 0b_10110100);
   assert_eq!( extracted_bytes[1], 0b_01011001);
   assert_eq!( extracted_bytes[2], 0b_11100010);
}

#[test]
fn extract_byte_order() {
   let drand_output: i64 = 0b_10110100_01011001_11100010_01100111_00000000_00000000;
   assert!( drand_output < crate::M );
   let extracted_bytes = super::get_bytes(drand_output);
   assert_eq!( extracted_bytes.len(), 4);
   assert_eq!( extracted_bytes[0], 0b_10110100);
   assert_eq!( extracted_bytes[1], 0b_01011001);
   assert_eq!( extracted_bytes[2], 0b_11100010);
   assert_eq!( extracted_bytes[3], 0b_01100111);
}

#[test]
fn extract_u16() {
   let drand_output: i64 = 0b_10110100_01011001_11100010_01100111_00000000_00000000;
   assert!( drand_output < crate::M );
   let extracted = super::get_u16(drand_output);
   assert_eq!( extracted, 0b_10110100_01011001);
}

#[test]
fn extract_i16() {
   let drand_output: i64 = 0b_10110100_01011001_11100010_01100111_00000000_00000000;
   assert!( drand_output < crate::M );
   let extracted = super::get_i16(drand_output);
   assert_eq!( extracted, 0b_10110100_0101100);
}

#[test]
fn fill_bytes_test() {
   let mut buffer: [ u8; 53 ] = [ 0; 53 ];
   super::fill_bytes(&mut buffer, & mut crate::DRAND48::new());
   let nonzero = buffer.iter().any(|&x| x != 0 );
   assert! (nonzero);
}