mirror of
https://github.com/ETLCPP/etl.git
synced 2026-11-09 14:49:53 +08:00
fix bug in find_next of (new) bitset class (#618)
This commit is contained in:
parent
ed91987454
commit
29792fb1f3
@ -507,7 +507,7 @@ namespace etl
|
||||
{
|
||||
// Where to start.
|
||||
size_t index = position >> log2<Bits_Per_Element>::value;
|
||||
size_t bit = position;
|
||||
size_t bit = position & (Bits_Per_Element - 1);
|
||||
|
||||
element_type mask = 1 << bit;
|
||||
|
||||
|
||||
@ -1246,6 +1246,22 @@ namespace
|
||||
CHECK_EQUAL(etl::ibitset::npos, bits24.find_next(true, 13));
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_find_next_github_issue_617)
|
||||
{
|
||||
etl::bitset<64> bs1(0xC000'0000'0000'0031ULL);
|
||||
size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
etl::bitset<64> bs2(0x3FFF'FFFF'FFFF'FFCEULL);
|
||||
size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
CHECK_EQUAL(62U, bs2fnf2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_swap)
|
||||
{
|
||||
|
||||
@ -1952,6 +1952,28 @@ namespace
|
||||
CHECK_EQUAL(4U, bs4fnt1);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_find_next_github_issue_617)
|
||||
{
|
||||
constexpr etl::bitset<64> bs1(ull(0xC000'0000'0000'0031));
|
||||
constexpr size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
constexpr size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
constexpr etl::bitset<64> bs2(ull(0x3FFF'FFFF'FFFF'FFCE));
|
||||
constexpr size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
constexpr size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
CHECK_EQUAL(62U, bs2fnf2);
|
||||
|
||||
constexpr etl::bitset<64, uint32_t> bs32(ull(0xC000'0000'0000'0031));
|
||||
constexpr size_t bs32fnt1 = bs32.find_next(true, 10);
|
||||
constexpr size_t bs32fnt2 = bs32.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs32fnt1);
|
||||
CHECK_EQUAL(62U, bs32fnt2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
//*************************************************************************
|
||||
TEST(test_swap)
|
||||
|
||||
@ -1796,6 +1796,25 @@ namespace
|
||||
CHECK_EQUAL(4U, bs4fnt1);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_find_next_github_issue_617)
|
||||
{
|
||||
etl::bitset_ext<64>::element_type buffer1[etl::bitset_ext<64>::Number_Of_Elements];
|
||||
etl::bitset_ext<64>::element_type buffer2[etl::bitset_ext<64>::Number_Of_Elements];
|
||||
|
||||
etl::bitset_ext<64> bs1(ull(0xC000'0000'0000'0031), buffer1);
|
||||
size_t bs1fnt1 = bs1.find_next(true, 10);
|
||||
size_t bs1fnt2 = bs1.find_next(true, 59);
|
||||
CHECK_EQUAL(62U, bs1fnt1);
|
||||
CHECK_EQUAL(62U, bs1fnt2);
|
||||
|
||||
etl::bitset_ext<64> bs2(ull(0x3FFF'FFFF'FFFF'FFCE), buffer2);
|
||||
size_t bs2fnf1 = bs2.find_next(false, 10);
|
||||
size_t bs2fnf2 = bs2.find_next(false, 59);
|
||||
CHECK_EQUAL(62U, bs2fnf1);
|
||||
CHECK_EQUAL(62U, bs2fnf2);
|
||||
}
|
||||
|
||||
//*************************************************************************
|
||||
TEST(test_swap)
|
||||
{
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user