From 0de2b056d12f0aaa74a7cca1a74e320a9de03815 Mon Sep 17 00:00:00 2001 From: Steven Roose Date: Tue, 23 Apr 2019 16:36:15 +0100 Subject: [PATCH] Add unit test for the PolyMod method in b(l)ech32 --- src/Makefile.test.include | 1 + src/test/bech32_tests.cpp | 20 +++++++++++++++++++- src/test/blech32_tests.cpp | 33 +++++++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 1 deletion(-) create mode 100644 src/test/blech32_tests.cpp diff --git a/src/Makefile.test.include b/src/Makefile.test.include index f7668d804b..2f9d9e9aaa 100644 --- a/src/Makefile.test.include +++ b/src/Makefile.test.include @@ -39,6 +39,7 @@ BITCOIN_TESTS =\ test/base58_tests.cpp \ test/base64_tests.cpp \ test/bech32_tests.cpp \ + test/blech32_tests.cpp \ test/bip32_tests.cpp \ test/blockchain_tests.cpp \ test/blockencodings_tests.cpp \ diff --git a/src/test/bech32_tests.cpp b/src/test/bech32_tests.cpp index 6ecc9ac705..283d3bd1a6 100644 --- a/src/test/bech32_tests.cpp +++ b/src/test/bech32_tests.cpp @@ -2,7 +2,7 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. -#include +#include #include #include @@ -66,4 +66,22 @@ BOOST_AUTO_TEST_CASE(bip173_testvectors_invalid) } } +BOOST_AUTO_TEST_CASE(bech32_polymod_sanity) +{ + std::vector data(40); + GetRandBytes(data.data(), data.size()); + + std::vector base32; + ConvertBits<8, 5, true>([&](unsigned char c) { base32.push_back(c); }, data.begin(), data.end()); + uint64_t plm1 = PolyMod(base32); + + // Now add 1023 zeros. + for (auto i = 0; i < 1023; i++) { + base32.push_back(0); + } + uint64_t plm2 = PolyMod(base32); + + BOOST_CHECK_EQUAL(plm1, plm2); +} + BOOST_AUTO_TEST_SUITE_END() diff --git a/src/test/blech32_tests.cpp b/src/test/blech32_tests.cpp new file mode 100644 index 0000000000..4c455a41a4 --- /dev/null +++ b/src/test/blech32_tests.cpp @@ -0,0 +1,33 @@ +// Copyright (c) 2017 Pieter Wuille +// Distributed under the MIT software license, see the accompanying +// file COPYING or http://www.opensource.org/licenses/mit-license.php. + +#include +#include +#include +#include + +#include + +BOOST_FIXTURE_TEST_SUITE(blech32_tests, BasicTestingSetup) + +BOOST_AUTO_TEST_CASE(blech32_polymod_sanity) +{ + std::vector data(40); + GetRandBytes(data.data(), data.size()); + + std::vector base32; + ConvertBits<8, 5, true>([&](unsigned char c) { base32.push_back(c); }, data.begin(), data.end()); + uint64_t plm1 = PolyMod(base32); + + // Now add 1023 zeros. + for (auto i = 0; i < 1023; i++) { + base32.push_back(0); + } + uint64_t plm2 = PolyMod(base32); + + BOOST_CHECK_EQUAL(plm1, plm2); +} + +BOOST_AUTO_TEST_SUITE_END() +