|
2 | 2 |
|
3 | 3 | use foundry_compilers_artifacts::Remapping; |
4 | 4 | use foundry_compilers_core::error::{Result, SolcError}; |
5 | | -use rand::{ |
6 | | - distributions::{Distribution, Uniform}, |
7 | | - seq::SliceRandom, |
8 | | - Rng, |
9 | | -}; |
| 5 | +use rand::{seq::SliceRandom, Rng}; |
10 | 6 | use serde::{Deserialize, Serialize}; |
11 | 7 | use std::{ |
12 | 8 | collections::{BTreeSet, HashMap, HashSet, VecDeque}, |
@@ -243,34 +239,36 @@ impl MockProjectGenerator { |
243 | 239 | self |
244 | 240 | } |
245 | 241 |
|
246 | | - /// randomly assign empty file status so that mocked files don't emit artifacts |
| 242 | + /// Randomly assign empty file status so that mocked files don't emit artifacts. |
247 | 243 | pub fn assign_empty_files(&mut self) -> &mut Self { |
248 | | - let mut rng = rand::thread_rng(); |
249 | | - let die = Uniform::from(0..self.inner.files.len()); |
| 244 | + let mut rng = rand::rng(); |
| 245 | + let n = self.inner.files.len(); |
| 246 | + |
250 | 247 | for file in self.inner.files.iter_mut() { |
251 | | - let throw = die.sample(&mut rng); |
| 248 | + let throw = rng.random_range(0..n); |
252 | 249 | if throw == 0 { |
253 | | - // give it a 1 in num(files) chance that the file will be empty |
| 250 | + // 1 in n chance that the file will be empty |
254 | 251 | file.emit_artifacts = false; |
255 | 252 | } |
256 | 253 | } |
| 254 | + |
257 | 255 | self |
258 | 256 | } |
259 | 257 |
|
260 | 258 | /// Populates the imports of the project |
261 | 259 | pub fn populate_imports(&mut self, settings: &MockProjectSettings) -> &mut Self { |
262 | | - let mut rng = rand::thread_rng(); |
| 260 | + let mut rng = rand::rng(); |
263 | 261 |
|
264 | 262 | // populate imports |
265 | 263 | for id in 0..self.inner.files.len() { |
266 | 264 | let imports = if let Some(lib) = self.inner.files[id].lib_id { |
267 | 265 | let num_imports = rng |
268 | | - .gen_range(settings.min_imports..=settings.max_imports) |
| 266 | + .random_range(settings.min_imports..=settings.max_imports) |
269 | 267 | .min(self.inner.libraries[lib].num_files.saturating_sub(1)); |
270 | 268 | self.unique_imports_for_lib(&mut rng, lib, id, num_imports) |
271 | 269 | } else { |
272 | 270 | let num_imports = rng |
273 | | - .gen_range(settings.min_imports..=settings.max_imports) |
| 271 | + .random_range(settings.min_imports..=settings.max_imports) |
274 | 272 | .min(self.inner.files.len().saturating_sub(1)); |
275 | 273 | self.unique_imports_for_source(&mut rng, id, num_imports) |
276 | 274 | }; |
@@ -557,14 +555,14 @@ pub struct MockProjectSettings { |
557 | 555 | impl MockProjectSettings { |
558 | 556 | /// Generates a new instance with random settings within an arbitrary range |
559 | 557 | pub fn random() -> Self { |
560 | | - let mut rng = rand::thread_rng(); |
| 558 | + let mut rng = rand::rng(); |
561 | 559 | // arbitrary thresholds |
562 | 560 | Self { |
563 | | - num_sources: rng.gen_range(2..25), |
564 | | - num_libs: rng.gen_range(0..5), |
565 | | - num_lib_files: rng.gen_range(1..10), |
566 | | - min_imports: rng.gen_range(0..3), |
567 | | - max_imports: rng.gen_range(4..10), |
| 561 | + num_sources: rng.random_range(2..25), |
| 562 | + num_libs: rng.random_range(0..5), |
| 563 | + num_lib_files: rng.random_range(1..10), |
| 564 | + min_imports: rng.random_range(0..3), |
| 565 | + max_imports: rng.random_range(4..10), |
568 | 566 | allow_no_artifacts_files: true, |
569 | 567 | } |
570 | 568 | } |
|
0 commit comments