1 // Copyright (c) 2020 The Bitcoin Core developers 2 // Distributed under the MIT software license, see the accompanying 3 // file COPYING or http://www.opensource.org/licenses/mit-license.php. 4 5 #include <memusage.h> 6 #include <serialize.h> 7 #include <streams.h> 8 #include <test/fuzz/FuzzedDataProvider.h> 9 #include <test/fuzz/fuzz.h> 10 #include <version.h> 11 12 #include <cassert> 13 #include <cstdint> 14 test_one_input(const std::vector<uint8_t> & buffer)15void test_one_input(const std::vector<uint8_t>& buffer) 16 { 17 FuzzedDataProvider fuzzed_data_provider(buffer.data(), buffer.size()); 18 19 { 20 const double d = fuzzed_data_provider.ConsumeFloatingPoint<double>(); 21 (void)memusage::DynamicUsage(d); 22 assert(ser_uint64_to_double(ser_double_to_uint64(d)) == d); 23 24 CDataStream stream(SER_NETWORK, INIT_PROTO_VERSION); 25 stream << d; 26 double d_deserialized; 27 stream >> d_deserialized; 28 assert(d == d_deserialized); 29 } 30 31 { 32 const float f = fuzzed_data_provider.ConsumeFloatingPoint<float>(); 33 (void)memusage::DynamicUsage(f); 34 assert(ser_uint32_to_float(ser_float_to_uint32(f)) == f); 35 36 CDataStream stream(SER_NETWORK, INIT_PROTO_VERSION); 37 stream << f; 38 float f_deserialized; 39 stream >> f_deserialized; 40 assert(f == f_deserialized); 41 } 42 } 43