diff --git a/include/nil/crypto3/marshalling/types/integral.hpp b/include/nil/crypto3/marshalling/types/integral.hpp index ed168d0..12e9531 100644 --- a/include/nil/crypto3/marshalling/types/integral.hpp +++ b/include/nil/crypto3/marshalling/types/integral.hpp @@ -101,7 +101,7 @@ namespace nil { multiprecision::expression_template_option ExpressionTemplates, typename... TOptions> class integral, TOptions...> - : private ::nil::marshalling::types::detail::adapt_basic_field_type< + : public ::nil::marshalling::types::detail::adapt_basic_field_type< crypto3::marshalling::types::detail::basic_integral, TOptions...> { @@ -153,11 +153,11 @@ namespace nil { return base_impl_type::value(); } - /// @brief Get length required to serialise the current field value. - /// @return Number of bytes it will take to serialise the field value. - std::size_t length() { - return base_impl_type::length(); - } + // /// @brief Get length required to serialise the current field value. + // /// @return Number of bytes it will take to serialise the field value. + // std::size_t length() { + // return base_impl_type::length(); + // } /// @brief Get length required to serialise the current field value. /// @return Number of bytes it will take to serialise the field value. diff --git a/test/integral.cpp b/test/integral.cpp index 9ff4271..b29494c 100644 --- a/test/integral.cpp +++ b/test/integral.cpp @@ -96,7 +96,6 @@ void test_round_trip_fixed_precision_big_endian(T val) { using integral_type = types::integral, T>; std::size_t unitblob_size = integral_type::bit_length() / units_bits + ((integral_type::bit_length() % units_bits) ? 1 : 0); - integral_type test_val; std::vector cv; cv.resize(unitblob_size, 0x00); @@ -106,9 +105,9 @@ void test_round_trip_fixed_precision_big_endian(T val) { export_bits(val, cv.begin() + begin_index, units_bits, true); nil::marshalling::status_type status; - T test_val1 = nil::marshalling::pack(cv, status); + T test_val = nil::marshalling::pack(cv, status); - BOOST_CHECK(val == test_val1); + BOOST_CHECK(val == test_val); BOOST_CHECK(status == nil::marshalling::status_type::success); std::vector test_cv = nil::marshalling::unpack(val, status); @@ -125,7 +124,6 @@ void test_round_trip_fixed_precision_little_endian(T val) { using integral_type = types::integral, T>; std::size_t unitblob_size = integral_type::bit_length() / units_bits + ((integral_type::bit_length() % units_bits) ? 1 : 0); - integral_type test_val; std::vector cv; @@ -133,9 +131,9 @@ void test_round_trip_fixed_precision_little_endian(T val) { cv.resize(unitblob_size, 0x00); nil::marshalling::status_type status; - T test_val1 = nil::marshalling::pack(cv, status); + T test_val = nil::marshalling::pack(cv, status); - BOOST_CHECK(val == test_val1); + BOOST_CHECK(val == test_val); BOOST_CHECK(status == nil::marshalling::status_type::success); std::vector test_cv = nil::marshalling::unpack(val, status); @@ -170,9 +168,9 @@ void test_round_trip_non_fixed_precision(T val) { std::is_same::value?true:false); nil::marshalling::status_type status; - T test_val1 = nil::marshalling::pack(cv, status); + T test_val = nil::marshalling::pack(cv, status); - BOOST_CHECK(val == test_val1); + BOOST_CHECK(val == test_val); BOOST_CHECK(status == nil::marshalling::status_type::success); std::vector test_cv = nil::marshalling::unpack(val, status); diff --git a/test/integral_fixed_size_container.cpp b/test/integral_fixed_size_container.cpp index 205916a..18bb084 100644 --- a/test/integral_fixed_size_container.cpp +++ b/test/integral_fixed_size_container.cpp @@ -41,6 +41,8 @@ #include #include +#include +#include #include template @@ -89,7 +91,7 @@ void print_byteblob(TIter iter_begin, TIter iter_end) { template void test_round_trip_fixed_size_container_fixed_precision_big_endian( - nil::marshalling::container::static_vector val_container) { + std::array val_container) { using namespace nil::crypto3::marshalling; std::size_t units_bits = 8; using unit_type = unsigned char; @@ -115,27 +117,24 @@ void test_round_trip_fixed_size_container_fixed_precision_big_endian( export_bits(val_container[i], cv.begin() + unitblob_size * i + begin_index, units_bits, true); } - auto read_iter = cv.begin(); - nil::marshalling::status_type status = test_val_container.read(read_iter, cv.size()); - BOOST_CHECK(status == nil::marshalling::status_type::success); + nil::marshalling::status_type status; + std::array test_val = + nil::marshalling::pack>(cv, status); - for (std::size_t i = 0; i < val_container.size(); i++) { - BOOST_CHECK(val_container[i] == test_val_container.value()[i].value()); - } + BOOST_CHECK(std::equal(val_container.begin(), val_container.end(), test_val.begin())); + BOOST_CHECK(status == nil::marshalling::status_type::success); - std::vector test_val_byteblob; - test_val_byteblob.resize(cv.size()); - auto write_iter = test_val_byteblob.begin(); + std::vector test_cv = + nil::marshalling::unpack(val_container, status); - status = test_val_container.write(write_iter, test_val_byteblob.size() * units_bits); + BOOST_CHECK(std::equal(test_cv.begin(), test_cv.end(), cv.begin())); BOOST_CHECK(status == nil::marshalling::status_type::success); - - BOOST_CHECK(cv == test_val_byteblob); } template void test_round_trip_fixed_size_container_fixed_precision_little_endian( - nil::marshalling::container::static_vector val_container) { + std::array val_container) { using namespace nil::crypto3::marshalling; std::size_t units_bits = 8; using unit_type = unsigned char; @@ -158,22 +157,19 @@ void test_round_trip_fixed_size_container_fixed_precision_little_endian( export_bits(val_container[i], cv.begin() + unitblob_size * i, units_bits, false); } - auto read_iter = cv.begin(); - nil::marshalling::status_type status = test_val_container.read(read_iter, cv.size()); - BOOST_CHECK(status == nil::marshalling::status_type::success); + nil::marshalling::status_type status; + std::array test_val = + nil::marshalling::pack>(cv, status); - for (std::size_t i = 0; i < val_container.size(); i++) { - BOOST_CHECK(val_container[i] == test_val_container.value()[i].value()); - } + BOOST_CHECK(std::equal(val_container.begin(), val_container.end(), test_val.begin())); + BOOST_CHECK(status == nil::marshalling::status_type::success); - std::vector test_val_byteblob; - test_val_byteblob.resize(cv.size()); - auto write_iter = test_val_byteblob.begin(); + std::vector test_cv = + nil::marshalling::unpack(val_container, status); - status = test_val_container.write(write_iter, test_val_byteblob.size() * units_bits); + BOOST_CHECK(std::equal(test_cv.begin(), test_cv.end(), cv.begin())); BOOST_CHECK(status == nil::marshalling::status_type::success); - - BOOST_CHECK(cv == test_val_byteblob); } template @@ -181,9 +177,9 @@ void test_round_trip_fixed_size_container_fixed_precision() { std::cout << std::hex; std::cerr << std::hex; for (unsigned i = 0; i < 1000; ++i) { - nil::marshalling::container::static_vector val_container; + std::array val_container; for (std::size_t i = 0; i < TSize; i++) { - val_container.push_back(generate_random()); + val_container[i] = generate_random(); } test_round_trip_fixed_size_container_fixed_precision_big_endian(val_container); test_round_trip_fixed_size_container_fixed_precision_little_endian(val_container); diff --git a/test/integral_non_fixed_size_container.cpp b/test/integral_non_fixed_size_container.cpp index d699327..f5e6927 100644 --- a/test/integral_non_fixed_size_container.cpp +++ b/test/integral_non_fixed_size_container.cpp @@ -42,6 +42,8 @@ #include #include +#include +#include #include template