Skip to content

Commit 8320dfd

Browse files
Merge pull request metno#53 from metno/dependabot/cargo/rand-0.9
2 parents 47ba92d + 3a2d46c commit 8320dfd

File tree

4 files changed

+66
-67
lines changed

4 files changed

+66
-67
lines changed

hdf5/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ num-complex = { workspace = true }
5858
parking_lot = "0.12.3"
5959
paste = "1.0"
6060
pretty_assertions = "1.4"
61-
rand = { version = "0.8", features = ["small_rng"] }
61+
rand = { version = "0.9", features = ["small_rng"] }
6262
regex = { workspace = true }
6363
scopeguard = "1.2"
6464
tempfile = "3.9"

hdf5/tests/common/gen.rs

Lines changed: 59 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,13 @@ use hdf5_metno as hdf5;
99
use half::f16;
1010
use ndarray::{ArrayD, SliceInfo, SliceInfoElem};
1111
use num_complex::Complex;
12-
use rand::distributions::Standard;
13-
use rand::distributions::{Alphanumeric, Uniform};
14-
use rand::prelude::Distribution;
15-
use rand::prelude::{Rng, SliceRandom};
12+
use rand::distr::StandardUniform;
13+
use rand::distr::{Alphanumeric, Uniform};
14+
use rand::prelude::Rng;
15+
use rand::prelude::{Distribution, IndexedRandom};
1616

1717
pub fn gen_shape<R: Rng + ?Sized>(rng: &mut R, ndim: usize) -> Vec<usize> {
18-
iter::repeat(()).map(|_| rng.gen_range(0..11)).take(ndim).collect()
18+
iter::repeat(()).map(|_| rng.random_range(0..11)).take(ndim).collect()
1919
}
2020

2121
pub fn gen_ascii<R: Rng + ?Sized>(rng: &mut R, len: usize) -> String {
@@ -37,35 +37,36 @@ fn gen_slice_one_dim<R: Rng + ?Sized>(rng: &mut R, shape: usize) -> ndarray::Sli
3737
return ndarray::SliceInfoElem::Slice { start: 0, end: None, step: 1 };
3838
}
3939

40-
if rng.gen_bool(0.1) {
41-
ndarray::SliceInfoElem::Index(rng.gen_range(0..shape) as isize)
40+
if rng.random_bool(0.1) {
41+
ndarray::SliceInfoElem::Index(rng.random_range(0..shape) as isize)
4242
} else {
43-
let start = rng.gen_range(0..shape) as isize;
43+
let start = rng.random_range(0..shape) as isize;
4444

45-
let end = if rng.gen_bool(0.5) {
45+
let end = if rng.random_bool(0.5) {
4646
None
47-
} else if rng.gen_bool(0.9) {
48-
Some(rng.gen_range(start..shape as isize))
47+
} else if rng.random_bool(0.9) {
48+
Some(rng.random_range(start as i64..shape as i64))
4949
} else {
5050
// Occasionally generate a slice with end < start.
51-
Some(rng.gen_range(0..shape as isize))
51+
Some(rng.random_range(0..shape as i64))
5252
};
5353

54-
let step = if rng.gen_bool(0.9) { 1isize } else { rng.gen_range(1..shape * 2) as isize };
54+
let step =
55+
if rng.random_bool(0.9) { 1isize } else { rng.random_range(1..shape * 2) as isize };
5556

56-
ndarray::SliceInfoElem::Slice { start, end, step }
57+
ndarray::SliceInfoElem::Slice { start, end: end.map(|x| x as isize), step }
5758
}
5859
}
5960

6061
pub trait Gen: Sized + fmt::Debug {
61-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self;
62+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self;
6263
}
6364

6465
macro_rules! impl_gen_primitive {
6566
($ty:ty) => {
6667
impl Gen for $ty {
67-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
68-
rng.gen()
68+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
69+
rng.random()
6970
}
7071
}
7172
};
@@ -75,21 +76,21 @@ macro_rules! impl_gen_primitive {
7576
};
7677
}
7778

78-
impl_gen_primitive!(usize, isize, u8, u16, u32, u64, i8, i16, i32, i64, bool, f32, f64);
79+
impl_gen_primitive!(u8, u16, u32, u64, i8, i16, i32, i64, bool, f32, f64);
7980

8081
macro_rules! impl_gen_tuple {
8182
($t:ident) => (
8283
impl<$t> Gen for ($t,) where $t: Gen {
83-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
84-
(<$t as Gen>::gen(rng),)
84+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
85+
(<$t as Gen>::random(rng),)
8586
}
8687
}
8788
);
8889

8990
($t:ident, $($tt:ident),*) => (
9091
impl<$t, $($tt),*> Gen for ($t, $($tt),*) where $t: Gen, $($tt: Gen),* {
91-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
92-
(<$t as Gen>::gen(rng), $(<$tt as Gen>::gen(rng)),*)
92+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
93+
(<$t as Gen>::random(rng), $(<$tt as Gen>::random(rng)),*)
9394
}
9495
}
9596
impl_gen_tuple!($($tt),*);
@@ -99,22 +100,22 @@ macro_rules! impl_gen_tuple {
99100
impl_gen_tuple! { A, B, C, D, E, F, G, H, I, J, K, L }
100101

101102
impl Gen for f16 {
102-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
103-
Self::from_f32(rng.gen())
103+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
104+
Self::from_f32(rng.random())
104105
}
105106
}
106107

107108
impl<T: Debug> Gen for Complex<T>
108109
where
109-
Standard: Distribution<T>,
110+
StandardUniform: Distribution<T>,
110111
{
111-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
112-
Self::new(rng.gen(), rng.gen())
112+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
113+
Self::new(rng.random(), rng.random())
113114
}
114115
}
115116

116117
pub fn gen_vec<R: Rng + ?Sized, T: Gen>(rng: &mut R, size: usize) -> Vec<T> {
117-
iter::repeat(()).map(|_| T::gen(rng)).take(size).collect()
118+
iter::repeat(()).map(|_| T::random(rng)).take(size).collect()
118119
}
119120

120121
pub fn gen_arr<T, R>(rng: &mut R, ndim: usize) -> ArrayD<T>
@@ -129,9 +130,9 @@ where
129130
}
130131

131132
impl<const N: usize> Gen for FixedAscii<N> {
132-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
133-
let len = rng.sample(Uniform::new_inclusive(0, N));
134-
let dist = Uniform::new_inclusive(0, 127);
133+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
134+
let len = rng.sample(Uniform::new_inclusive(0, N).unwrap());
135+
let dist = Uniform::new_inclusive(0, 127).unwrap();
135136
let mut v = Vec::with_capacity(len);
136137
for _ in 0..len {
137138
v.push(rng.sample(dist));
@@ -141,11 +142,11 @@ impl<const N: usize> Gen for FixedAscii<N> {
141142
}
142143

143144
impl<const N: usize> Gen for FixedUnicode<N> {
144-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
145-
let len = rng.sample(Uniform::new_inclusive(0, N));
145+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
146+
let len = rng.sample(Uniform::new_inclusive(0, N).unwrap());
146147
let mut s = String::new();
147148
for _ in 0..len {
148-
let c = rng.gen::<char>();
149+
let c = rng.random::<char>();
149150
if c != '\0' {
150151
if s.as_bytes().len() + c.len_utf8() >= len {
151152
break;
@@ -158,9 +159,9 @@ impl<const N: usize> Gen for FixedUnicode<N> {
158159
}
159160

160161
impl Gen for VarLenAscii {
161-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
162-
let len = rng.sample(Uniform::new_inclusive(0, 8));
163-
let dist = Uniform::new_inclusive(0, 127);
162+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
163+
let len = rng.sample(Uniform::new_inclusive(0, 8).unwrap());
164+
let dist = Uniform::new_inclusive(0, 127).unwrap();
164165
let mut v = Vec::with_capacity(len);
165166
for _ in 0..len {
166167
v.push(rng.sample(dist));
@@ -170,11 +171,11 @@ impl Gen for VarLenAscii {
170171
}
171172

172173
impl Gen for VarLenUnicode {
173-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
174-
let len = rng.sample(Uniform::new_inclusive(0, 8));
174+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
175+
let len = rng.sample(Uniform::new_inclusive(0, 8).unwrap());
175176
let mut s = String::new();
176177
while s.len() < len {
177-
let c = rng.gen::<char>();
178+
let c = rng.random::<char>();
178179
if c != '\0' {
179180
s.push(c);
180181
}
@@ -184,11 +185,11 @@ impl Gen for VarLenUnicode {
184185
}
185186

186187
impl<T: Gen + Copy> Gen for VarLenArray<T> {
187-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
188-
let len = rng.sample(Uniform::new_inclusive(0, 8));
188+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
189+
let len = rng.sample(Uniform::new_inclusive(0, 8).unwrap());
189190
let mut v = Vec::with_capacity(len);
190191
for _ in 0..len {
191-
v.push(Gen::gen(rng));
192+
v.push(Gen::random(rng));
192193
}
193194
VarLenArray::from_slice(&v)
194195
}
@@ -202,7 +203,7 @@ pub enum Enum {
202203
}
203204

204205
impl Gen for Enum {
205-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
206+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
206207
*[Enum::X, Enum::Y].choose(rng).unwrap()
207208
}
208209
}
@@ -212,8 +213,8 @@ impl Gen for Enum {
212213
pub struct TupleStruct(bool, Enum);
213214

214215
impl Gen for TupleStruct {
215-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
216-
TupleStruct(Gen::gen(rng), Gen::gen(rng))
216+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
217+
TupleStruct(Gen::random(rng), Gen::random(rng))
217218
}
218219
}
219220

@@ -227,12 +228,12 @@ pub struct FixedStruct {
227228
}
228229

229230
impl Gen for FixedStruct {
230-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
231+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
231232
FixedStruct {
232-
fa: Gen::gen(rng),
233-
fu: Gen::gen(rng),
234-
tuple: (Gen::gen(rng), Gen::gen(rng), Gen::gen(rng)),
235-
array: [Gen::gen(rng), Gen::gen(rng)],
233+
fa: Gen::random(rng),
234+
fu: Gen::random(rng),
235+
tuple: (Gen::random(rng), Gen::random(rng), Gen::random(rng)),
236+
array: [Gen::random(rng), Gen::random(rng)],
236237
}
237238
}
238239
}
@@ -246,8 +247,8 @@ pub struct VarLenStruct {
246247
}
247248

248249
impl Gen for VarLenStruct {
249-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
250-
VarLenStruct { va: Gen::gen(rng), vu: Gen::gen(rng), vla: Gen::gen(rng) }
250+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
251+
VarLenStruct { va: Gen::random(rng), vu: Gen::random(rng), vla: Gen::random(rng) }
251252
}
252253
}
253254

@@ -260,8 +261,8 @@ pub struct RenameStruct {
260261
}
261262

262263
impl Gen for RenameStruct {
263-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
264-
RenameStruct { first: Gen::gen(rng), second: Gen::gen(rng) }
264+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
265+
RenameStruct { first: Gen::random(rng), second: Gen::random(rng) }
265266
}
266267
}
267268

@@ -270,8 +271,8 @@ impl Gen for RenameStruct {
270271
pub struct RenameTupleStruct(#[hdf5(rename = "my_boolean")] bool, #[hdf5(rename = "my_enum")] Enum);
271272

272273
impl Gen for RenameTupleStruct {
273-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
274-
RenameTupleStruct(Gen::gen(rng), Gen::gen(rng))
274+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
275+
RenameTupleStruct(Gen::random(rng), Gen::random(rng))
275276
}
276277
}
277278

@@ -285,7 +286,7 @@ pub enum RenameEnum {
285286
}
286287

287288
impl Gen for RenameEnum {
288-
fn gen<R: Rng + ?Sized>(rng: &mut R) -> Self {
289+
fn random<R: Rng + ?Sized>(rng: &mut R) -> Self {
289290
*[RenameEnum::X, RenameEnum::Y].choose(rng).unwrap()
290291
}
291292
}

hdf5/tests/common/util.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use super::gen::gen_ascii;
33
use hdf5_metno as hdf5;
44

55
pub fn random_filename() -> String {
6-
gen_ascii(&mut rand::thread_rng(), 8)
6+
gen_ascii(&mut rand::rng(), 8)
77
}
88

99
pub fn new_in_memory_file() -> hdf5::Result<hdf5::File> {

hdf5/tests/test_dataset.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,7 +194,7 @@ fn test_byte_read_seek_impl(ds: &hdf5::Dataset, arr: &ArrayD<u8>, ndim: usize) -
194194
reader.seek(std::io::SeekFrom::Start(0)).expect("io::Seek failed");
195195
let mut pos = 0;
196196
while pos < arr.len() {
197-
let chunk_len: usize = rng.gen_range(1..arr.len() + 1);
197+
let chunk_len: usize = rng.random_range(1..arr.len() + 1);
198198
let mut chunk = vec![0u8; chunk_len];
199199
let n_read = reader.read(&mut chunk).expect("io::Read failed");
200200
if pos + chunk_len < arr.len() {
@@ -212,15 +212,15 @@ fn test_byte_read_seek_impl(ds: &hdf5::Dataset, arr: &ArrayD<u8>, ndim: usize) -
212212
assert_eq!(out_bytes.as_slice(), arr.as_slice().unwrap());
213213

214214
// Seek to a random position from start
215-
let pos = rng.gen_range(0..arr.len() + 1) as u64;
215+
let pos = rng.random_range(0..arr.len() + 1) as u64;
216216
let seek_pos = reader.seek(SeekFrom::Start(pos)).expect("io::Seek failed") as usize;
217217
let mut out_bytes = vec![0u8; arr.len() - seek_pos];
218218
reader.read(&mut out_bytes.as_mut_slice()).expect("io::Read failed");
219219
assert_eq!(out_bytes.as_slice(), arr.slice(s![seek_pos..]).as_slice().unwrap());
220220

221221
// Seek from current position
222222
let orig_pos = reader.seek(SeekFrom::Start(pos)).expect("io::Seek failed") as i64;
223-
let rel_pos = rng.gen_range(-(arr.len() as i64)..arr.len() as i64 + 1);
223+
let rel_pos = rng.random_range(-(orig_pos as i64)..(arr.len() as i64 - orig_pos) + 1);
224224
let pos_res = reader.seek(SeekFrom::Current(rel_pos));
225225
if (rel_pos + orig_pos) < 0 {
226226
assert!(pos_res.is_err()) // We cannot seek before start
@@ -233,7 +233,7 @@ fn test_byte_read_seek_impl(ds: &hdf5::Dataset, arr: &ArrayD<u8>, ndim: usize) -
233233
}
234234

235235
// Seek to a random position from end
236-
let pos = -(rng.gen_range(0..arr.len() + 1) as i64);
236+
let pos = -(rng.random_range(0..arr.len() + 1) as i64);
237237
let seek_pos = reader.seek(SeekFrom::End(pos)).expect("io::Seek failed") as usize;
238238
assert_eq!(pos, seek_pos as i64 - arr.len() as i64);
239239
let mut out_bytes = vec![0u8; arr.len() - seek_pos];
@@ -285,7 +285,7 @@ where
285285
} else if mode == 2 {
286286
test_read_slice(&mut rng, &ds, &arr, ndim)?;
287287
} else if mode == 3 {
288-
let default_value = T::gen(&mut rng);
288+
let default_value = T::random(&mut rng);
289289
test_write_slice(&mut rng, &ds, &arr, &default_value, ndim)?;
290290
}
291291
}
@@ -306,8 +306,6 @@ fn test_read_write_primitive() -> hdf5::Result<()> {
306306
test_read_write::<u16>()?;
307307
test_read_write::<u32>()?;
308308
test_read_write::<u64>()?;
309-
test_read_write::<isize>()?;
310-
test_read_write::<usize>()?;
311309
test_read_write::<bool>()?;
312310
test_read_write::<f32>()?;
313311
test_read_write::<f64>()?;

0 commit comments

Comments
 (0)