| 205 | } // namespace |
| 206 | |
| 207 | FUZZ_TARGET(prevector) |
| 208 | { |
| 209 | FuzzedDataProvider prov(buffer.data(), buffer.size()); |
| 210 | prevector_tester<8, int> test; |
| 211 | |
| 212 | LIMITED_WHILE(prov.remaining_bytes(), 3000) |
| 213 | { |
| 214 | switch (prov.ConsumeIntegralInRange<int>(0, 13 + 3 * (test.size() > 0))) { |
| 215 | case 0: |
| 216 | test.insert(prov.ConsumeIntegralInRange<size_t>(0, test.size()), prov.ConsumeIntegral<int>()); |
| 217 | break; |
| 218 | case 1: |
| 219 | test.resize(std::max(0, std::min(30, (int)test.size() + prov.ConsumeIntegralInRange<int>(0, 4) - 2))); |
| 220 | break; |
| 221 | case 2: |
| 222 | test.insert(prov.ConsumeIntegralInRange<size_t>(0, test.size()), 1 + prov.ConsumeBool(), prov.ConsumeIntegral<int>()); |
| 223 | break; |
| 224 | case 3: { |
| 225 | int del = prov.ConsumeIntegralInRange<int>(0, test.size()); |
| 226 | int beg = prov.ConsumeIntegralInRange<int>(0, test.size() - del); |
| 227 | test.erase(beg, beg + del); |
| 228 | break; |
| 229 | } |
| 230 | case 4: |
| 231 | test.push_back(prov.ConsumeIntegral<int>()); |
| 232 | break; |
| 233 | case 5: { |
| 234 | int values[4]; |
| 235 | int num = 1 + prov.ConsumeIntegralInRange<int>(0, 3); |
| 236 | for (int k = 0; k < num; ++k) { |
| 237 | values[k] = prov.ConsumeIntegral<int>(); |
| 238 | } |
| 239 | test.insert_range(prov.ConsumeIntegralInRange<size_t>(0, test.size()), values, values + num); |
| 240 | break; |
| 241 | } |
| 242 | case 6: { |
| 243 | int num = 1 + prov.ConsumeIntegralInRange<int>(0, 15); |
| 244 | std::vector<int> values(num); |
| 245 | for (auto& v : values) { |
| 246 | v = prov.ConsumeIntegral<int>(); |
| 247 | } |
| 248 | test.resize_uninitialized(values); |
| 249 | break; |
| 250 | } |
| 251 | case 7: |
| 252 | test.reserve(prov.ConsumeIntegralInRange<size_t>(0, 32767)); |
| 253 | break; |
| 254 | case 8: |
| 255 | test.shrink_to_fit(); |
| 256 | break; |
| 257 | case 9: |
| 258 | test.clear(); |
| 259 | break; |
| 260 | case 10: |
| 261 | test.assign(prov.ConsumeIntegralInRange<size_t>(0, 32767), prov.ConsumeIntegral<int>()); |
| 262 | break; |
| 263 | case 11: |
| 264 | test.swap(); |
nothing calls this directly
no test coverage detected