1 /* Apache License, Version 2.0 */
2 
3 #include "BLI_index_mask.hh"
4 #include "testing/testing.h"
5 
6 namespace blender::tests {
7 
TEST(index_mask,DefaultConstructor)8 TEST(index_mask, DefaultConstructor)
9 {
10   IndexMask mask;
11   EXPECT_EQ(mask.min_array_size(), 0);
12   EXPECT_EQ(mask.size(), 0);
13 }
14 
TEST(index_mask,ArrayConstructor)15 TEST(index_mask, ArrayConstructor)
16 {
17   [](IndexMask mask) {
18     EXPECT_EQ(mask.size(), 4);
19     EXPECT_EQ(mask.min_array_size(), 8);
20     EXPECT_FALSE(mask.is_range());
21     EXPECT_EQ(mask[0], 3);
22     EXPECT_EQ(mask[1], 5);
23     EXPECT_EQ(mask[2], 6);
24     EXPECT_EQ(mask[3], 7);
25   }({3, 5, 6, 7});
26 }
27 
TEST(index_mask,RangeConstructor)28 TEST(index_mask, RangeConstructor)
29 {
30   IndexMask mask = IndexRange(3, 5);
31   EXPECT_EQ(mask.size(), 5);
32   EXPECT_EQ(mask.min_array_size(), 8);
33   EXPECT_EQ(mask.last(), 7);
34   EXPECT_TRUE(mask.is_range());
35   EXPECT_EQ(mask.as_range().first(), 3);
36   EXPECT_EQ(mask.as_range().last(), 7);
37   Span<int64_t> indices = mask.indices();
38   EXPECT_EQ(indices[0], 3);
39   EXPECT_EQ(indices[1], 4);
40   EXPECT_EQ(indices[2], 5);
41 }
42 
43 }  // namespace blender::tests
44