blob: c6354b1e8ca91ecfdab311d9d654301328a01476 [file] [log] [blame]
// WARNING: This file is machine generated by fidlgen.
// fidl_experiment = output_index_json
#pragma once
#include <test/enum/cpp/fidl.h>
#include "lib/fidl/cpp/fuzzing/traits.h"
#include "lib/fidl/cpp/internal/header.h"
// For ::std::max_element().
#include <algorithm>
// For uint64_t.
#include <stdint.h>
namespace fuzzing {
using MyStrictEnum = ::test::enum_::MyStrictEnum;
using MyFlexibleEnum = ::test::enum_::MyFlexibleEnum;
using MyFlexibleEnumWithCustomUnknown = ::test::enum_::MyFlexibleEnumWithCustomUnknown;
using MyEmptyFlexibleEnum = ::test::enum_::MyEmptyFlexibleEnum;
template <>
struct MinSize<MyStrictEnum> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<MyStrictEnum> {
MyStrictEnum operator()(FuzzInput* src, size_t* size) {
MyStrictEnum out;
uint64_t selector;
ZX_ASSERT(*size >= sizeof(uint64_t));
ZX_ASSERT(src->CopyObject(&selector));
*size = sizeof(uint64_t);
switch (selector % 2) {
case 0:
out = MyStrictEnum::FOO;
break;
case 1:
out = MyStrictEnum::BAR;
break;
}
return out;
}
};
template <>
struct MinSize<MyFlexibleEnum> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<MyFlexibleEnum> {
MyFlexibleEnum operator()(FuzzInput* src, size_t* size) {
MyFlexibleEnum out;
uint64_t selector;
ZX_ASSERT(*size >= sizeof(uint64_t));
ZX_ASSERT(src->CopyObject(&selector));
*size = sizeof(uint64_t);
switch (selector % 2) {
case 0:
out = MyFlexibleEnum::FOO;
break;
case 1:
out = MyFlexibleEnum::BAR;
break;
}
return out;
}
};
template <>
struct MinSize<MyFlexibleEnumWithCustomUnknown> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<MyFlexibleEnumWithCustomUnknown> {
MyFlexibleEnumWithCustomUnknown operator()(FuzzInput* src, size_t* size) {
MyFlexibleEnumWithCustomUnknown out;
uint64_t selector;
ZX_ASSERT(*size >= sizeof(uint64_t));
ZX_ASSERT(src->CopyObject(&selector));
*size = sizeof(uint64_t);
switch (selector % 3) {
case 0:
out = MyFlexibleEnumWithCustomUnknown::FOO;
break;
case 1:
out = MyFlexibleEnumWithCustomUnknown::BAR;
break;
case 2:
out = MyFlexibleEnumWithCustomUnknown::CUSTOM_UNKNOWN;
break;
}
return out;
}
};
template <>
struct MinSize<MyEmptyFlexibleEnum> {
operator size_t() { return sizeof(uint64_t); }
};
template <>
struct Allocate<MyEmptyFlexibleEnum> {
MyEmptyFlexibleEnum operator()(FuzzInput* src, size_t* size) {
MyEmptyFlexibleEnum out;
uint64_t selector;
ZX_ASSERT(*size >= sizeof(uint64_t));
ZX_ASSERT(src->CopyObject(&selector));
*size = sizeof(uint64_t);
switch (selector % 0) {
}
return out;
}
};
} // namespace fuzzing