code = (*(first_binding + 1))->getInteger<uint16_t>();
}
- // Option can be stored as a blob or formatted value in the configuration.
- std::vector<uint8_t> blob;
- if (!(*(first_binding + 2))->amNull()) {
- blob = (*(first_binding + 2))->getBlob();
- }
- OptionBuffer buf(blob.begin(), blob.end());
// Get formatted value if available.
std::string formatted_value = (*(first_binding + 3))->getStringOrDefault("");
- OptionPtr option(new Option(universe, code, buf.begin(), buf.end()));
+ OptionPtr option(new Option(universe, code));
+
+ // If we don't have a formatted value, check for a blob. Add it to the
+ // option if it exists.
+ if (formatted_value.empty()) {
+ std::vector<uint8_t> blob;
+ if (!(*(first_binding + 2))->amNull()) {
+ blob = (*(first_binding + 2))->getBlob();
+ }
+ option->setData(blob.begin(), blob.end());
+ }
// Check if the option is persistent.
bool persistent = static_cast<bool>((*(first_binding + 5))->getIntegerOrDefault<uint8_t>(0));
// Compare the on-wire data.
EXPECT_EQ(ref_option_buf_vec, tested_option_buf_vec);
+
+ } else {
+ // If the formatted value is non-empty the buffer should be empty.
+ EXPECT_TRUE(tested_option.option_->getData().empty());
}
// Compare other members of the @c OptionDescriptor, e.g. the