Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHans Goudey <h.goudey@me.com>2022-03-03 19:14:44 +0300
committerHans Goudey <h.goudey@me.com>2022-03-03 19:14:44 +0300
commitd793d184137afb786a4777ce9e995b569e82f5a8 (patch)
tree57b6fd23127d0154ae20c812d365ef5e83bd48f6 /source/blender/blenlib/tests
parente8dc82311d1a7012adaacc93bcc5e92c0fd7adbf (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.cc73
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);