skia2/fuzz/Fuzz.h
mtklein 65e5824d3a Add new fuzz binary.
This is designed to have short startup time, for maximum fuzzing throughput.

BUG=skia:
GOLD_TRYBOT_URL= https://gold.skia.org/search2?unt=true&query=source_type%3Dgm&master=false&issue=1589563002

Review URL: https://codereview.chromium.org/1589563002
2016-01-13 12:57:58 -08:00

44 lines
973 B
C++

/*
* Copyright 2016 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#ifndef Fuzz_DEFINED
#define Fuzz_DEFINED
#include "SkData.h"
#include "SkTRegistry.h"
#include "SkTypes.h"
#include <stdlib.h>
class Fuzz : SkNoncopyable {
public:
explicit Fuzz(SkData*);
uint32_t nextU();
float nextF();
// These return a value in [min, max).
uint32_t nextURange(uint32_t min, uint32_t max);
float nextFRange(float min, float max);
private:
SkAutoTUnref<SkData> fBytes;
};
struct Fuzzable {
const char* name;
void (*fn)(Fuzz*);
};
#define DEF_FUZZ(name, f) \
static void fuzz_##name(Fuzz*); \
SkTRegistry<Fuzzable> register_##name({#name, fuzz_##name}); \
static void fuzz_##name(Fuzz* f)
#define ASSERT(cond) do { if (!(cond)) abort(); } while(false)
#endif//Fuzz_DEFINED