Skip to content

Commit

Permalink
refactor: refactor MappedGenerator
Browse files Browse the repository at this point in the history
  • Loading branch information
WenyXu committed Jan 23, 2024
1 parent 8f4c42d commit 6958abe
Show file tree
Hide file tree
Showing 2 changed files with 30 additions and 12 deletions.
38 changes: 28 additions & 10 deletions tests-fuzz/src/fake.rs
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
// limitations under the License.

use std::collections::HashSet;
use std::marker::PhantomData;

use lazy_static::lazy_static;
use rand::seq::{IteratorRandom, SliceRandom};
Expand Down Expand Up @@ -50,11 +51,16 @@ faker_impl_from_values!(Word, LOREM_WORDS);
pub struct WordGenerator;
impl_random!(String, WordGenerator, LOREM_WORDS);

pub type WordMapFn<R> = Box<dyn Fn(&mut R, String) -> String>;

pub struct MapWordGenerator<R: Rng> {
base: WordGenerator,
map: WordMapFn<R>,
pub struct MappedGenerator<T, F, R, V>
where
T: Random<V, R>,
F: Fn(&mut R, V) -> V,
R: Rng,
{
base: T,
map: F,
_r: PhantomData<R>,
_v: PhantomData<V>,
}

pub fn random_capitalize_map<R: Rng + 'static>(rng: &mut R, s: String) -> String {
Expand Down Expand Up @@ -154,17 +160,29 @@ pub fn merge_two_word_map_fn<R: Rng>(
}
}

impl<R: Rng> MapWordGenerator<R> {
pub fn new(map: WordMapFn<R>) -> Self {
impl<T, F, R, V> MappedGenerator<T, F, R, V>
where
T: Random<V, R>,
F: Fn(&mut R, V) -> V,
R: Rng,
{
pub fn new(base: T, map: F) -> Self {
Self {
base: WordGenerator,
base,
map,
_r: Default::default(),
_v: Default::default(),
}
}
}

impl<R: Rng> Random<String, R> for MapWordGenerator<R> {
fn choose(&self, rng: &mut R, amount: usize) -> Vec<String> {
impl<T, F, R, V> Random<V, R> for MappedGenerator<T, F, R, V>
where
T: Random<V, R>,
F: Fn(&mut R, V) -> V,
R: Rng,
{
fn choose(&self, rng: &mut R, amount: usize) -> Vec<V> {
self.base
.choose(rng, amount)
.into_iter()
Expand Down
4 changes: 2 additions & 2 deletions tests-fuzz/src/generator/create_expr.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ use snafu::{ensure, ResultExt};

use super::Generator;
use crate::error::{self, Error, Result};
use crate::fake::{random_capitalize_map, MapWordGenerator};
use crate::fake::{random_capitalize_map, MappedGenerator, WordGenerator};
use crate::generator::{ColumnOptionGenerator, ConcreteDataTypeGenerator, Random};
use crate::ir::create_expr::CreateTableExprBuilder;
use crate::ir::{
Expand Down Expand Up @@ -58,7 +58,7 @@ impl<R: Rng + 'static> Default for CreateTableExprGenerator<R> {
if_not_exists: false,
partition: 0,
name: String::new(),
name_generator: Box::new(MapWordGenerator::new(Box::new(random_capitalize_map))),
name_generator: Box::new(MappedGenerator::new(WordGenerator, random_capitalize_map)),
ts_column_type_generator: Box::new(TsColumnTypeGenerator),
column_type_generator: Box::new(ColumnTypeGenerator),
partible_column_type_generator: Box::new(PartibleColumnTypeGenerator),
Expand Down

0 comments on commit 6958abe

Please sign in to comment.