diff options
author | Vitaly Buka <vitalybuka@google.com> | 2017-03-16 11:50:40 -0700 |
---|---|---|
committer | Vitaly Buka <vitalybuka@gmail.com> | 2017-03-16 15:38:33 -0700 |
commit | b2c4fb59135711122b800376d8dc46af2fc9d060 (patch) | |
tree | 987f0a5feda6bd714142c5f83a8ff73bd417326a /src/mutator.cc | |
parent | 242a20ff50b898a55697f43756711470696d9cef (diff) | |
download | libprotobuf-mutator-b2c4fb59135711122b800376d8dc46af2fc9d060.tar.gz |
Mutate message when we create new one.
Diffstat (limited to 'src/mutator.cc')
-rw-r--r-- | src/mutator.cc | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/src/mutator.cc b/src/mutator.cc index 55b3ea3..a400fc8 100644 --- a/src/mutator.cc +++ b/src/mutator.cc @@ -378,15 +378,21 @@ class FieldMutator { size_increase_hint_)); } - void Mutate(std::unique_ptr<Message>*) const {} + void Mutate(std::unique_ptr<Message>* message) const { + assert(!enforce_changes_); + assert(*message); + if (GetRandomBool(mutator_->random(), 100)) return; + mutator_->Mutate(message->get(), size_increase_hint_); + } private: template <class T, class F> void RepeatMutate(T* value, F mutate, size_t unchanged_one_out_of = 100) const { if (!enforce_changes_ && - GetRandomBool(mutator_->random(), unchanged_one_out_of)) + GetRandomBool(mutator_->random(), unchanged_one_out_of)) { return; + } T tmp = *value; for (int i = 0; i < 10; ++i) { *value = mutate(*value); |