Skip to main content

nt_time/file_time/
rand.rs

1// SPDX-FileCopyrightText: 2024 Shun Sakai
2//
3// SPDX-License-Identifier: Apache-2.0 OR MIT
4
5//! Implementations of [`rand`] for [`FileTime`].
6
7use rand::{
8    Rng,
9    distr::{Distribution, StandardUniform},
10};
11
12use super::FileTime;
13
14impl Distribution<FileTime> for StandardUniform {
15    fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> FileTime {
16        FileTime::new(rng.random())
17    }
18}
19
20#[cfg(test)]
21mod tests {
22    use rand_pcg::{Pcg64Mcg, rand_core::SeedableRng};
23
24    use super::*;
25
26    #[test]
27    fn sample() {
28        let mut rng = Pcg64Mcg::from_seed(Default::default());
29        let buf: [FileTime; 8] = rng.random();
30        assert_eq!(
31            buf,
32            [
33                FileTime::new(0xE160_E532_6180_0AAB),
34                FileTime::new(0x2A29_11D5_87FC_4ED5),
35                FileTime::new(0xDFE7_5554_BBD3_4D0D),
36                FileTime::new(0x2A4C_F66B_2879_6F51),
37                FileTime::new(0x500E_B6DE_08BD_473B),
38                FileTime::new(0x8660_66C5_0DAB_6374),
39                FileTime::new(0xE8E3_3086_F142_3EFF),
40                FileTime::new(0x7D67_17B2_E579_844F)
41            ]
42        );
43    }
44}