Tests: Test DisjointChunks with FixedArray

This commit is contained in:
kleines Filmröllchen 2022-02-23 11:30:20 +01:00 committed by Ali Mohammad Pur
parent 7e18e6e37b
commit 5ce7c67e44
Notes: sideshowbarker 2024-07-17 18:11:33 +09:00

View file

@ -7,6 +7,7 @@
#include <LibTest/TestCase.h>
#include <AK/DisjointChunks.h>
#include <AK/FixedArray.h>
#include <AK/String.h>
#include <AK/Vector.h>
@ -54,6 +55,48 @@ TEST_CASE(basic)
EXPECT_EQ(new_chunks[2], 5u);
}
TEST_CASE(fixed_array)
{
DisjointChunks<size_t, FixedArray<size_t>> chunks;
EXPECT(chunks.is_empty());
chunks.append({});
EXPECT(chunks.is_empty());
chunks.append(MUST(FixedArray<size_t>::try_create({ 0, 1 })));
EXPECT(!chunks.is_empty());
chunks.append({});
chunks.append(MUST(FixedArray<size_t>::try_create(3)));
chunks.last_chunk()[0] = 2;
chunks.last_chunk()[1] = 3;
chunks.last_chunk()[2] = 4;
chunks.append({});
chunks.append(MUST(FixedArray<size_t>::try_create(1)));
chunks.last_chunk()[0] = 5;
for (size_t i = 0; i < 6u; ++i)
EXPECT_EQ(chunks.at(i), i);
auto it = chunks.begin();
for (size_t i = 0; i < 6u; ++i, ++it)
EXPECT_EQ(*it, i);
EXPECT_EQ(it, chunks.end());
DisjointChunks<size_t, FixedArray<size_t>> new_chunks;
new_chunks.extend(move(chunks));
EXPECT_EQ(new_chunks.size(), 6u);
auto cut_off_slice = new_chunks.release_slice(2, 3);
EXPECT_EQ(new_chunks.size(), 3u);
EXPECT_EQ(cut_off_slice.size(), 3u);
EXPECT_EQ(cut_off_slice[0], 2u);
EXPECT_EQ(cut_off_slice[1], 3u);
EXPECT_EQ(cut_off_slice[2], 4u);
EXPECT_EQ(new_chunks[0], 0u);
EXPECT_EQ(new_chunks[1], 1u);
}
TEST_CASE(spans)
{
DisjointChunks<size_t> chunks;