MCPcopy Create free account
hub / github.com/ElementsProject/elements / FUZZ_TARGET

Function FUZZ_TARGET

src/test/fuzz/prevector.cpp:207–285  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

205} // namespace
206
207FUZZ_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();

Callers

nothing calls this directly

Calls 15

remaining_bytesMethod · 0.80
ConsumeBoolMethod · 0.80
dataMethod · 0.45
sizeMethod · 0.45
insertMethod · 0.45
resizeMethod · 0.45
eraseMethod · 0.45
push_backMethod · 0.45
insert_rangeMethod · 0.45
resize_uninitializedMethod · 0.45
reserveMethod · 0.45
shrink_to_fitMethod · 0.45

Tested by

no test coverage detected