Lines Matching full:mutation
48 enum class Mutation : uint8_t { enum
59 using MutationBitset = std::bitset<static_cast<size_t>(Mutation::Last) + 1>;
179 // Selects random field and mutation from the given proto message.
192 // Returns selected mutation.
193 Mutation mutation() const { return sampler_.selected().mutation; } in mutation() function in protobuf_mutator::__anonab369fae0111::MutationSampler
197 assert(mutation() != Mutation::None || in Sample()
198 !allowed_mutations_[static_cast<size_t>(Mutation::Mutate)] || in Sample()
220 Try({message, add_field}, Mutation::Add); in SampleImpl()
221 Try({message, add_field}, Mutation::Clone); in SampleImpl()
228 Try({message, current_field}, Mutation::Mutate); in SampleImpl()
229 Try({message, current_field}, Mutation::Delete); in SampleImpl()
230 Try({message, current_field}, Mutation::Copy); in SampleImpl()
237 Try({message, field, random_index}, Mutation::Add); in SampleImpl()
238 Try({message, field, random_index}, Mutation::Clone); in SampleImpl()
243 Try({message, field, random_index}, Mutation::Mutate); in SampleImpl()
244 Try({message, field, random_index}, Mutation::Delete); in SampleImpl()
245 Try({message, field, random_index}, Mutation::Copy); in SampleImpl()
251 Try({message, field}, Mutation::Mutate); in SampleImpl()
254 Try({message, field}, Mutation::Delete); in SampleImpl()
256 Try({message, field}, Mutation::Copy); in SampleImpl()
258 Try({message, field}, Mutation::Add); in SampleImpl()
259 Try({message, field}, Mutation::Clone); in SampleImpl()
276 void Try(const FieldInstance& field, Mutation mutation) { in Try() argument
277 assert(mutation != Mutation::None); in Try()
278 if (!allowed_mutations_[static_cast<size_t>(mutation)]) return; in Try()
279 sampler_.Try(kDefaultMutateWeight, {field, mutation}); in Try()
289 Result(const FieldInstance& f, Mutation m) : field(f), mutation(m) {} in Result()
292 Mutation mutation = Mutation::None; member
692 mutations[static_cast<size_t>(Mutation::Copy)] = true; in MutateImpl()
693 mutations[static_cast<size_t>(Mutation::Clone)] = true; in MutateImpl()
695 mutations[static_cast<size_t>(Mutation::Delete)] = true; in MutateImpl()
698 mutations[static_cast<size_t>(Mutation::Copy)] = false; in MutateImpl()
699 mutations[static_cast<size_t>(Mutation::Clone)] = false; in MutateImpl()
702 MutationSampler mutation(keep_initialized_, mutations, &random_); in MutateImpl() local
703 for (Message* message : messages) mutation.Sample(message); in MutateImpl()
705 switch (mutation.mutation()) { in MutateImpl()
706 case Mutation::None: in MutateImpl()
708 case Mutation::Add: in MutateImpl()
709 CreateField()(mutation.field(), size_increase_hint, sources, this); in MutateImpl()
711 case Mutation::Mutate: in MutateImpl()
712 MutateField()(mutation.field(), size_increase_hint, sources, this); in MutateImpl()
714 case Mutation::Delete: in MutateImpl()
715 DeleteField()(mutation.field()); in MutateImpl()
717 case Mutation::Clone: { in MutateImpl()
718 CreateDefaultField()(mutation.field()); in MutateImpl()
719 DataSourceSampler source_sampler(mutation.field(), &random_, in MutateImpl()
723 if (!IsProto3SimpleField(*mutation.field().descriptor())) in MutateImpl()
727 CopyField()(source_sampler.field(), mutation.field()); in MutateImpl()
730 case Mutation::Copy: { in MutateImpl()
731 DataSourceSampler source_sampler(mutation.field(), &random_, in MutateImpl()
735 CopyField()(source_sampler.field(), mutation.field()); in MutateImpl()
739 assert(false && "unexpected mutation"); in MutateImpl()
743 // Don't try same mutation next time. in MutateImpl()
744 mutations[static_cast<size_t>(mutation.mutation())] = false; in MutateImpl()