MCPcopy Create free account
hub / github.com/BehaviorTree/BehaviorTree.CPP / fuzzSingleBB

Method fuzzSingleBB

fuzzing/bb_fuzzer.cpp:66–146  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

64 }
65
66 void fuzzSingleBB(BT::Blackboard::Ptr bb)
67 {
68 if(!bb)
69 return;
70
71 try
72 {
73 // Create random entry
74 std::string key = generateKey();
75 switch(fuzz_data_.ConsumeIntegralInRange<size_t>(0, 6))
76 {
77 case 0:
78 bb->set(key, fuzz_data_.ConsumeIntegral<int>());
79 break;
80 case 1:
81 bb->set(key, fuzz_data_.ConsumeFloatingPoint<double>());
82 break;
83 case 2:
84 bb->set(key, fuzz_data_.ConsumeRandomLengthString());
85 break;
86 case 3:
87 bb->set(key, fuzz_data_.ConsumeBool());
88 break;
89 case 4:
90 bb->set(key, fuzz_data_.ConsumeIntegral<uint64_t>());
91 break;
92 case 5:
93 bb->set(key, fuzz_data_.ConsumeFloatingPoint<float>());
94 break;
95 case 6: {
96 // Try to get non-existent key
97 bb->get<int>(generateKey());
98 break;
99 }
100 }
101
102 // Random operations on existing keys
103 if(!generated_keys_.empty())
104 {
105 const auto& existing_key =
106 generated_keys_[fuzz_data_.ConsumeIntegralInRange<size_t>(
107 0, generated_keys_.size() - 1)];
108
109 switch(fuzz_data_.ConsumeIntegralInRange<size_t>(0, 4))
110 {
111 case 0:
112 bb->unset(existing_key);
113 break;
114 case 1:
115 bb->getEntry(existing_key);
116 break;
117 case 2:
118 bb->get<int>(existing_key);
119 break;
120 case 3:
121 bb->get<double>(existing_key);
122 break;
123 case 4:

Callers

nothing calls this directly

Calls 6

setMethod · 0.80
unsetMethod · 0.80
getEntryMethod · 0.80
addSubtreeRemappingMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected