(
batch_size: usize,
single_char_delimiter: bool,
)
| 102 | } |
| 103 | |
| 104 | fn array_data( |
| 105 | batch_size: usize, |
| 106 | single_char_delimiter: bool, |
| 107 | ) -> (Vec<String>, Vec<String>, Vec<i64>) { |
| 108 | let count_dist = Filter { |
| 109 | dist: Uniform::new(-4, 5).expect("valid count distribution"), |
| 110 | test: |x: &i64| x != &0, |
| 111 | }; |
| 112 | let mut rng = StdRng::seed_from_u64(ARRAY_DATA_SEED); |
| 113 | let mut strings = Vec::with_capacity(batch_size); |
| 114 | let mut delimiters = Vec::with_capacity(batch_size); |
| 115 | let mut counts = Vec::with_capacity(batch_size); |
| 116 | |
| 117 | for _ in 0..batch_size { |
| 118 | let length = rng.random_range(20..50); |
| 119 | let base = random_token(&mut rng, length); |
| 120 | |
| 121 | let (string_value, delimiter) = if single_char_delimiter { |
| 122 | let char_idx = rng.random_range(0..base.chars().count()); |
| 123 | let delimiter = base.chars().nth(char_idx).unwrap().to_string(); |
| 124 | (base, delimiter) |
| 125 | } else { |
| 126 | let long_delimiters = ["|||", "***", "&&&", "###", "@@@", "$$$"]; |
| 127 | let delimiter = |
| 128 | long_delimiters[rng.random_range(0..long_delimiters.len())].to_string(); |
| 129 | |
| 130 | let delimiter_count = rng.random_range(1..4); |
| 131 | let mut result = String::new(); |
| 132 | for i in 0..delimiter_count { |
| 133 | result.push_str(&base); |
| 134 | if i < delimiter_count - 1 { |
| 135 | result.push_str(&delimiter); |
| 136 | } |
| 137 | } |
| 138 | (result, delimiter) |
| 139 | }; |
| 140 | |
| 141 | strings.push(string_value); |
| 142 | delimiters.push(delimiter); |
| 143 | counts.push(count_dist.sample(&mut rng)); |
| 144 | } |
| 145 | |
| 146 | (strings, delimiters, counts) |
| 147 | } |
| 148 | |
| 149 | fn scalar_data(batch_size: usize, delimiter: &str) -> Vec<String> { |
| 150 | let mut rng = StdRng::seed_from_u64(SCALAR_DATA_SEED); |
no test coverage detected
searching dependent graphs…