diff options
author | Hans Goudey <h.goudey@me.com> | 2022-03-03 19:14:44 +0300 |
---|---|---|
committer | Hans Goudey <h.goudey@me.com> | 2022-03-03 19:14:44 +0300 |
commit | d793d184137afb786a4777ce9e995b569e82f5a8 (patch) | |
tree | 57b6fd23127d0154ae20c812d365ef5e83bd48f6 /source/blender/blenlib/tests | |
parent | e8dc82311d1a7012adaacc93bcc5e92c0fd7adbf (diff) |
BLI: Add functions to IndexRange to mirror Span
Adds functions for special cases of slicing and an `is_empty` method.
Diffstat (limited to 'source/blender/blenlib/tests')
-rw-r--r-- | source/blender/blenlib/tests/BLI_index_range_test.cc | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/source/blender/blenlib/tests/BLI_index_range_test.cc b/source/blender/blenlib/tests/BLI_index_range_test.cc index 7f0d2e6c22a..10f6784cd44 100644 --- a/source/blender/blenlib/tests/BLI_index_range_test.cc +++ b/source/blender/blenlib/tests/BLI_index_range_test.cc @@ -129,6 +129,79 @@ TEST(index_range, SliceRange) EXPECT_EQ(slice.last(), 12); } +TEST(index_range, DropBack) +{ + IndexRange a(4, 4); + auto slice = a.drop_back(2); + EXPECT_EQ(slice.size(), 2); + EXPECT_EQ(slice.start(), 4); + EXPECT_EQ(slice[1], 5); +} + +TEST(index_range, DropBackAll) +{ + IndexRange a(4, 4); + auto slice = a.drop_back(a.size()); + EXPECT_TRUE(slice.is_empty()); +} + +TEST(index_range, DropFront) +{ + IndexRange a(4, 4); + auto slice = a.drop_front(1); + EXPECT_EQ(slice.size(), 3); + EXPECT_EQ(slice[0], 5); + EXPECT_EQ(slice[1], 6); + EXPECT_EQ(slice.last(), 7); +} + +TEST(index_range, DropFrontLargeN) +{ + IndexRange a(1, 5); + IndexRange slice = a.drop_front(100); + EXPECT_TRUE(slice.is_empty()); +} + +TEST(index_range, DropFrontAll) +{ + IndexRange a(50); + IndexRange slice = a.drop_front(a.size()); + EXPECT_TRUE(slice.is_empty()); +} + +TEST(index_range, TakeFront) +{ + IndexRange a(4, 4); + IndexRange slice = a.take_front(2); + EXPECT_EQ(slice.size(), 2); + EXPECT_EQ(slice[0], 4); + EXPECT_EQ(slice[1], 5); +} + +TEST(index_range, TakeFrontLargeN) +{ + IndexRange a(4, 4); + IndexRange slice = a.take_front(100); + EXPECT_EQ(slice.size(), 4); +} + +TEST(index_range, TakeBack) +{ + IndexRange a(4, 4); + auto slice = a.take_back(2); + EXPECT_EQ(slice.size(), 2); + EXPECT_EQ(slice[0], 6); + EXPECT_EQ(slice[1], 7); +} + +TEST(index_range, TakeBackLargeN) +{ + IndexRange a(3, 4); + IndexRange slice = a.take_back(100); + EXPECT_EQ(slice.size(), 4); + EXPECT_EQ(slice.size(), 4); +} + TEST(index_range, AsSpan) { IndexRange range = IndexRange(4, 6); |