| // Licensed to the Apache Software Foundation (ASF) under one |
| // or more contributor license agreements. See the NOTICE file |
| // distributed with this work for additional information |
| // regarding copyright ownership. The ASF licenses this file |
| // to you under the Apache License, Version 2.0 (the |
| // "License"); you may not use this file except in compliance |
| // with the License. You may obtain a copy of the License at |
| // |
| // http://www.apache.org/licenses/LICENSE-2.0 |
| // |
| // Unless required by applicable law or agreed to in writing, |
| // software distributed under the License is distributed on an |
| // "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| // KIND, either express or implied. See the License for the |
| // specific language governing permissions and limitations |
| // under the License. |
| |
| pub mod complex; |
| pub mod medium; |
| pub mod realworld; |
| pub mod simple; |
| |
| use rand::Rng; |
| |
| pub trait TestDataGenerator { |
| type Data; |
| fn generate_small() -> Self::Data; |
| fn generate_medium() -> Self::Data; |
| fn generate_large() -> Self::Data; |
| } |
| |
| pub fn generate_random_string(len: usize) -> String { |
| const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; |
| let mut rng = rand::thread_rng(); |
| (0..len) |
| .map(|_| { |
| let idx = rng.gen_range(0..CHARSET.len()); |
| CHARSET[idx] as char |
| }) |
| .collect() |
| } |
| |
| pub fn generate_random_strings(count: usize, len: usize) -> Vec<String> { |
| (0..count).map(|_| generate_random_string(len)).collect() |
| } |