7#include "gtest/gtest.h"
24 EXPECT_EQ(a.size(), b.size());
25 for (
size_t i = 0; i < a.size(); ++i) {
26 EXPECT_EQ(a[i], b[i]);
40 fData = {1, 2, 3, 4, 5, 6, 7, 8, 9};
52 EXPECT_EQ(vec.
Size(0), 2);
53 EXPECT_EQ(vec[0].
size(), 2);
58 EXPECT_EQ(part.first.size(), vec.
Size(0));
59 EXPECT_EQ(part.second, vec.
Address(0));
61 EXPECT_EQ(vec.
Size(1), 4);
62 EXPECT_EQ(vec[1].
size(), 4);
63 EXPECT_EQ(vec.
Address(1), 0x100);
67 EXPECT_EQ(part.first.size(), vec.
Size(1));
68 EXPECT_EQ(part.second, vec.
Address(1));
70 EXPECT_EQ(vec.
Size(2), 3);
71 EXPECT_EQ(vec[2].
size(), 3);
72 EXPECT_EQ(vec.
Address(2), 0x200);
76 EXPECT_EQ(part.first.size(), vec.
Size(2));
77 EXPECT_EQ(part.second, vec.
Address(2));
96 EXPECT_THROW(
PartitionedVector vec(std::move(fData), fSizes, fAddressesInvalid), std::runtime_error);
101 EXPECT_THROW(
PartitionedVector vec(std::move(fData), fSizesInvalid, fAddresses), std::runtime_error);
108 EXPECT_THROW(vec[3], std::out_of_range);
109 EXPECT_THROW(vec.
Partition(3), std::out_of_range);
110 EXPECT_THROW(vec.
Address(3), std::out_of_range);
111 EXPECT_THROW(vec.
Size(3), std::out_of_range);
static constexpr size_t size()
TEST_F(PartitionedVectorTest, IsDefaultConstructable)
void EXPECT_CONTAINER_EQ(gsl::span< const T > a, std::vector< T > b)
std::vector< size_t > fSizes
std::vector< int32_t > fData
std::vector< uint32_t > fAddresses
std::vector< size_t > fSizesInvalid
std::vector< uint32_t > fAddressesInvalid
void Ensure(const PartitionedVector< int32_t > &vec)
Allocator for plain old data types.
A vector that is partitioned into multiple subvectors.
uint32_t Address(size_t i) const
Get the hardware address of partition i.
size_t Size(size_t i) const
Get the size of partition i.
size_t NPartitions() const
Get the number of partitions.
size_t NElements() const
Get the total number of elements in the container across all partitions.
std::pair< gsl::span< T >, uint32_t > Partition(size_t i)
Get a pair of the data and the hardware address of partition i.
PartitionedVector< T, PODAllocator< T > > PartitionedPODVector