Line | Branch | Exec | Source |
---|---|---|---|
1 | // Copyright Contributors to the OpenVDB Project | ||
2 | // SPDX-License-Identifier: MPL-2.0 | ||
3 | |||
4 | #include <openvdb/points/IndexIterator.h> | ||
5 | #include <openvdb/points/IndexFilter.h> | ||
6 | #include <openvdb/points/PointAttribute.h> | ||
7 | #include <openvdb/points/PointConversion.h> | ||
8 | #include <openvdb/points/PointGroup.h> | ||
9 | #include <openvdb/points/PointCount.h> | ||
10 | |||
11 | #include <gtest/gtest.h> | ||
12 | |||
13 | #include <sstream> | ||
14 | #include <iostream> | ||
15 | #include <utility> | ||
16 | |||
17 | using namespace openvdb; | ||
18 | using namespace openvdb::points; | ||
19 | |||
20 | 7 | class TestIndexFilter: public ::testing::Test | |
21 | { | ||
22 | public: | ||
23 | 7 | void SetUp() override { openvdb::initialize(); } | |
24 | 7 | void TearDown() override { openvdb::uninitialize(); } | |
25 | |||
26 | void testRandomLeafFilterImpl(); | ||
27 | }; // class TestIndexFilter | ||
28 | |||
29 | |||
30 | //////////////////////////////////////// | ||
31 | |||
32 | |||
33 | struct OriginLeaf | ||
34 | { | ||
35 | 3 | OriginLeaf(const openvdb::Coord& _leafOrigin, const size_t _size = size_t(0)): | |
36 | 3 | leafOrigin(_leafOrigin), size(_size) { } | |
37 |
0/2✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
3 | openvdb::Coord origin() const { return leafOrigin; } |
38 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 3 times.
|
3 | size_t pointCount() const { return size; } |
39 | const openvdb::Coord leafOrigin; | ||
40 | const size_t size; | ||
41 | }; | ||
42 | |||
43 | |||
44 | struct SimpleIter | ||
45 | { | ||
46 | 6 | SimpleIter() : i(0) { } | |
47 | 606 | int operator*() const { return i; } | |
48 | 600 | void operator++() { i++; } | |
49 | openvdb::Coord getCoord() const { return coord; } | ||
50 | int i; | ||
51 | openvdb::Coord coord; | ||
52 | }; | ||
53 | |||
54 | |||
55 | template <bool LessThan> | ||
56 | class ThresholdFilter | ||
57 | { | ||
58 | public: | ||
59 | 6 | ThresholdFilter(const int threshold) | |
60 |
5/10✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✓ Branch 9 taken 1 times.
|
6 | : mThreshold(threshold) { } |
61 | |||
62 | bool isPositiveInteger() const { return mThreshold > 0; } | ||
63 | 10 | bool isMax() const { return mThreshold == std::numeric_limits<int>::max(); } | |
64 | |||
65 | static bool initialized() { return true; } | ||
66 | inline index::State state() const | ||
67 | { | ||
68 | if (LessThan) { | ||
69 |
4/4✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 2 times.
✓ Branch 3 taken 1 times.
|
5 | if (isMax()) return index::ALL; |
70 |
3/4✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 1 times.
|
3 | else if (!isPositiveInteger()) return index::NONE; |
71 | } | ||
72 | else { | ||
73 |
2/4✓ Branch 0 taken 2 times.
✗ Branch 1 not taken.
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
|
5 | if (isMax()) return index::NONE; |
74 |
4/4✓ Branch 0 taken 1 times.
✓ Branch 1 taken 1 times.
✓ Branch 2 taken 1 times.
✓ Branch 3 taken 2 times.
|
5 | else if (!isPositiveInteger()) return index::ALL; |
75 | } | ||
76 | return index::PARTIAL; | ||
77 | } | ||
78 | |||
79 | template <typename LeafT> | ||
80 | static index::State state(const LeafT&) { return index::PARTIAL; } | ||
81 | |||
82 | template <typename LeafT> | ||
83 | void reset(const LeafT&) { } | ||
84 | |||
85 | template <typename IterT> | ||
86 | bool valid(const IterT& iter) const { | ||
87 |
8/8✓ Branch 0 taken 55 times.
✓ Branch 1 taken 45 times.
✓ Branch 2 taken 9 times.
✓ Branch 3 taken 46 times.
✓ Branch 4 taken 95 times.
✓ Branch 5 taken 5 times.
✓ Branch 6 taken 4 times.
✓ Branch 7 taken 91 times.
|
200 | return LessThan ? *iter < mThreshold : *iter > mThreshold; |
88 | } | ||
89 | |||
90 | private: | ||
91 | const int mThreshold; | ||
92 | }; // class ThresholdFilter | ||
93 | |||
94 | |||
95 | /// @brief Generates the signed distance to a sphere located at @a center | ||
96 | /// and with a specified @a radius (both in world coordinates). Only voxels | ||
97 | /// in the domain [0,0,0] -> @a dim are considered. Also note that the | ||
98 | /// level set is either dense, dense narrow-band or sparse narrow-band. | ||
99 | /// | ||
100 | /// @note This method is VERY SLOW and should only be used for debugging purposes! | ||
101 | /// However it works for any transform and even with open level sets. | ||
102 | /// A faster approch for closed narrow band generation is to only set voxels | ||
103 | /// sparsely and then use grid::signedFloodFill to define the sign | ||
104 | /// of the background values and tiles! This is implemented in openvdb/tools/LevelSetSphere.h | ||
105 | template<class GridType> | ||
106 | inline void | ||
107 | 2 | makeSphere(const openvdb::Coord& dim, const openvdb::Vec3f& center, float radius, GridType& grid) | |
108 | { | ||
109 | using ValueT = typename GridType::ValueType; | ||
110 | const ValueT zero = openvdb::zeroVal<ValueT>(); | ||
111 | |||
112 | typename GridType::Accessor acc = grid.getAccessor(); | ||
113 | openvdb::Coord xyz; | ||
114 |
2/2✓ Branch 0 taken 50 times.
✓ Branch 1 taken 2 times.
|
52 | for (xyz[0]=0; xyz[0]<dim[0]; ++xyz[0]) { |
115 |
2/2✓ Branch 0 taken 1700 times.
✓ Branch 1 taken 50 times.
|
1750 | for (xyz[1]=0; xyz[1]<dim[1]; ++xyz[1]) { |
116 |
2/2✓ Branch 0 taken 65000 times.
✓ Branch 1 taken 1700 times.
|
66700 | for (xyz[2]=0; xyz[2]<dim[2]; ++xyz[2]) { |
117 | const openvdb::Vec3R p = grid.transform().indexToWorld(xyz); | ||
118 | 65000 | const float dist = float((p-center).length() - radius); | |
119 | 65000 | ValueT val = ValueT(zero + dist); | |
120 |
1/2✓ Branch 1 taken 65000 times.
✗ Branch 2 not taken.
|
65000 | acc.setValue(xyz, val); |
121 | } | ||
122 | } | ||
123 | } | ||
124 | 2 | } | |
125 | |||
126 | |||
127 | template <typename LeafT> | ||
128 | bool | ||
129 | 11 | multiGroupMatches( const LeafT& leaf, const Index32 size, | |
130 | const std::vector<Name>& include, const std::vector<Name>& exclude, | ||
131 | const std::vector<int>& indices) | ||
132 | { | ||
133 | using IndexGroupIter = IndexIter<ValueVoxelCIter, MultiGroupFilter>; | ||
134 | ValueVoxelCIter indexIter(0, size); | ||
135 | 22 | MultiGroupFilter filter(include, exclude, leaf.attributeSet()); | |
136 |
1/2✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
|
11 | filter.reset(leaf); |
137 |
1/2✓ Branch 1 taken 11 times.
✗ Branch 2 not taken.
|
11 | IndexGroupIter iter(indexIter, filter); |
138 |
3/4✓ Branch 0 taken 24 times.
✓ Branch 1 taken 11 times.
✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
|
35 | for (unsigned i = 0; i < indices.size(); ++i, ++iter) { |
139 |
1/2✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
|
24 | if (!iter) return false; |
140 |
1/2✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
|
24 | if (*iter != Index32(indices[i])) return false; |
141 | } | ||
142 | 11 | return !iter; | |
143 | } | ||
144 | |||
145 | |||
146 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestIndexFilter, testActiveFilter) |
147 | { | ||
148 | // create a point grid, three points are stored in two leafs | ||
149 | |||
150 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | PointDataGrid::Ptr points; |
151 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | std::vector<Vec3s> positions{{1, 1, 1}, {1, 2, 1}, {10.1f, 10, 1}}; |
152 | |||
153 | const double voxelSize(1.0); | ||
154 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr transform(math::Transform::createLinearTransform(voxelSize)); |
155 | |||
156 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | points = createPointDataGrid<NullCodec, PointDataGrid>(positions, *transform); |
157 | |||
158 | // check there are two leafs | ||
159 | |||
160 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(Index32(2), points->tree().leafCount()); |
161 | |||
162 | ActiveFilter activeFilter; | ||
163 | InactiveFilter inActiveFilter; | ||
164 | |||
165 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::PARTIAL, activeFilter.state()); |
166 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::PARTIAL, inActiveFilter.state()); |
167 | |||
168 | { // test default active / inactive values | ||
169 | auto leafIter = points->tree().cbeginLeaf(); | ||
170 | |||
171 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::PARTIAL, activeFilter.state(*leafIter)); |
172 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::PARTIAL, inActiveFilter.state(*leafIter)); |
173 | |||
174 | auto indexIter = leafIter->beginIndexAll(); | ||
175 | activeFilter.reset(*leafIter); | ||
176 | inActiveFilter.reset(*leafIter); | ||
177 | |||
178 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
179 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
180 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
181 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
182 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
183 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
184 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
185 | ++leafIter; | ||
186 | |||
187 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
188 | activeFilter.reset(*leafIter); | ||
189 | inActiveFilter.reset(*leafIter); | ||
190 | |||
191 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
192 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
193 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
194 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
195 | } | ||
196 | |||
197 | auto firstLeaf = points->tree().beginLeaf(); | ||
198 | |||
199 | { // set all voxels to be inactive in the first leaf | ||
200 | firstLeaf->getValueMask().set(false); | ||
201 | |||
202 | auto leafIter = points->tree().cbeginLeaf(); | ||
203 | |||
204 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::NONE, activeFilter.state(*leafIter)); |
205 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::ALL, inActiveFilter.state(*leafIter)); |
206 | |||
207 | auto indexIter = leafIter->beginIndexAll(); | ||
208 | activeFilter.reset(*leafIter); | ||
209 | inActiveFilter.reset(*leafIter); | ||
210 | |||
211 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!activeFilter.valid(indexIter)); |
212 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(inActiveFilter.valid(indexIter)); |
213 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
214 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!activeFilter.valid(indexIter)); |
215 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(inActiveFilter.valid(indexIter)); |
216 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
217 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
218 | ++leafIter; | ||
219 | |||
220 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
221 | activeFilter.reset(*leafIter); | ||
222 | inActiveFilter.reset(*leafIter); | ||
223 | |||
224 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
225 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
226 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
227 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
228 | } | ||
229 | |||
230 | { // set all voxels to be active in the first leaf | ||
231 | firstLeaf->getValueMask().set(true); | ||
232 | |||
233 | auto leafIter = points->tree().cbeginLeaf(); | ||
234 | |||
235 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(index::ALL, activeFilter.state(*leafIter)); |
236 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(index::NONE, inActiveFilter.state(*leafIter)); |
237 | |||
238 | auto indexIter = leafIter->beginIndexAll(); | ||
239 | activeFilter.reset(*leafIter); | ||
240 | inActiveFilter.reset(*leafIter); | ||
241 | |||
242 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
243 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
244 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
245 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
246 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
247 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
248 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
249 | ++leafIter; | ||
250 | |||
251 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
252 | activeFilter.reset(*leafIter); | ||
253 | inActiveFilter.reset(*leafIter); | ||
254 | |||
255 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(activeFilter.valid(indexIter)); |
256 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!inActiveFilter.valid(indexIter)); |
257 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
258 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
259 | } | ||
260 | 1 | } | |
261 | |||
262 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestIndexFilter, testMultiGroupFilter) |
263 | { | ||
264 | using LeafNode = PointDataTree::LeafNodeType; | ||
265 | using AttributeVec3f = TypedAttributeArray<Vec3f>; | ||
266 | |||
267 | 2 | PointDataTree tree; | |
268 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | LeafNode* leaf = tree.touchLeaf(openvdb::Coord(0, 0, 0)); |
269 | |||
270 | using Descriptor = AttributeSet::Descriptor; | ||
271 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | Descriptor::Ptr descriptor = Descriptor::create(AttributeVec3f::attributeType()); |
272 | |||
273 | const Index size = 5; | ||
274 | |||
275 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | leaf->initializeAttributes(descriptor, size); |
276 | |||
277 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | appendGroup(tree, "even"); |
278 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | appendGroup(tree, "odd"); |
279 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | appendGroup(tree, "all"); |
280 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | appendGroup(tree, "first"); |
281 | |||
282 | { // construction, copy construction | ||
283 | 1 | std::vector<Name> includeGroups; | |
284 | 1 | std::vector<Name> excludeGroups; | |
285 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MultiGroupFilter filter(includeGroups, excludeGroups, leaf->attributeSet()); |
286 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter.initialized()); |
287 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MultiGroupFilter filter2 = filter; |
288 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter2.initialized()); |
289 | |||
290 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leaf); |
291 |
1/22✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
|
1 | EXPECT_TRUE(filter.initialized()); |
292 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MultiGroupFilter filter3 = filter; |
293 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter3.initialized()); |
294 | } | ||
295 | |||
296 | // group population | ||
297 | |||
298 | { // even | ||
299 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | GroupWriteHandle groupHandle = leaf->groupWriteHandle("even"); |
300 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(0, true); |
301 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(2, true); |
302 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(4, true); |
303 | } | ||
304 | |||
305 | { // odd | ||
306 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | GroupWriteHandle groupHandle = leaf->groupWriteHandle("odd"); |
307 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(1, true); |
308 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(3, true); |
309 | } | ||
310 | |||
311 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | setGroup(tree, "all", true); |
312 | |||
313 | { // first | ||
314 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | GroupWriteHandle groupHandle = leaf->groupWriteHandle("first"); |
315 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | groupHandle.set(0, true); |
316 | } | ||
317 | |||
318 | { // test state() | ||
319 | 1 | std::vector<Name> include; | |
320 | 1 | std::vector<Name> exclude; | |
321 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MultiGroupFilter filter(include, exclude, leaf->attributeSet()); |
322 |
3/18✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
2 | EXPECT_EQ(filter.state(), index::ALL); |
323 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | include.push_back("all"); |
324 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | MultiGroupFilter filter2(include, exclude, leaf->attributeSet()); |
325 |
3/18✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 14 not taken.
✗ Branch 15 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(filter2.state(), index::PARTIAL); |
326 | } | ||
327 | |||
328 | // test multi group iteration | ||
329 | |||
330 | { // all (implicit, no include or exclude) | ||
331 | 1 | std::vector<Name> include; | |
332 | 1 | std::vector<Name> exclude; | |
333 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{0, 1, 2, 3, 4}; |
334 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
335 | } | ||
336 | |||
337 | { // all include | ||
338 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> include{"all"}; |
339 | 1 | std::vector<Name> exclude; | |
340 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{0, 1, 2, 3, 4}; |
341 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
342 | } | ||
343 | |||
344 | { // all exclude | ||
345 | 1 | std::vector<Name> include; | |
346 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> exclude{"all"}; |
347 | std::vector<int> indices; | ||
348 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
349 | } | ||
350 | |||
351 | { // all include and exclude | ||
352 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> include{"all"}; |
353 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> exclude{"all"}; |
354 | std::vector<int> indices; | ||
355 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
356 | } | ||
357 | |||
358 | { // even include | ||
359 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> include{"even"}; |
360 | 1 | std::vector<Name> exclude; | |
361 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{0, 2, 4}; |
362 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
363 | } | ||
364 | |||
365 | { // odd include | ||
366 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> include{"odd"}; |
367 | 1 | std::vector<Name> exclude; | |
368 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{1, 3}; |
369 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
370 | } | ||
371 | |||
372 | { // odd include and exclude | ||
373 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> include{"odd"}; |
374 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
3 | std::vector<Name> exclude{"odd"}; |
375 | std::vector<int> indices; | ||
376 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
377 | } | ||
378 | |||
379 | { // odd and first include | ||
380 |
4/10✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✓ Branch 10 taken 1 times.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
|
3 | std::vector<Name> include{"odd", "first"}; |
381 | 1 | std::vector<Name> exclude; | |
382 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{0, 1, 3}; |
383 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
384 | } | ||
385 | |||
386 | { // even include, first exclude | ||
387 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> include{"even"}; |
388 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> exclude{"first"}; |
389 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{2, 4}; |
390 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
391 | } | ||
392 | |||
393 | { // all include, first and odd exclude | ||
394 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> include{"all"}; |
395 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
2 | std::vector<Name> exclude{"first", "odd"}; |
396 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{2, 4}; |
397 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
398 | } | ||
399 | |||
400 | { // odd and first include, even exclude | ||
401 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
|
2 | std::vector<Name> include{"odd", "first"}; |
402 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 4 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | std::vector<Name> exclude{"even"}; |
403 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<int> indices{1, 3}; |
404 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(multiGroupMatches(*leaf, size, include, exclude, indices)); |
405 | } | ||
406 | 1 | } | |
407 | |||
408 | |||
409 | void | ||
410 | 1 | TestIndexFilter::testRandomLeafFilterImpl() | |
411 | { | ||
412 | { // generateRandomSubset | ||
413 | std::vector<int> values = index_filter_internal::generateRandomSubset<std::mt19937, int>( | ||
414 | 1 | /*seed*/unsigned(0), 1, 20); | |
415 | |||
416 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(1)); |
417 | |||
418 | // different seed | ||
419 | |||
420 | std::vector<int> values2 = index_filter_internal::generateRandomSubset<std::mt19937, int>( | ||
421 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | /*seed*/unsigned(1), 1, 20); |
422 | |||
423 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values2.size(), size_t(1)); |
424 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(values[0] != values2[0]); |
425 | |||
426 | // different integer type | ||
427 | |||
428 | std::vector<long> values3 = index_filter_internal::generateRandomSubset<std::mt19937, long>( | ||
429 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | /*seed*/unsigned(0), 1, 20); |
430 | |||
431 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(values3.size(), size_t(1)); |
432 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(values[0] == values3[0]); |
433 | |||
434 | // different random number generator | ||
435 | |||
436 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | values = index_filter_internal::generateRandomSubset<std::mt19937_64, int>( |
437 | /*seed*/unsigned(1), 1, 20); | ||
438 | |||
439 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(1)); |
440 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(values[0] != values2[0]); |
441 | |||
442 | // no values | ||
443 | |||
444 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | values = index_filter_internal::generateRandomSubset<std::mt19937, int>( |
445 | /*seed*/unsigned(0), 0, 20); | ||
446 | |||
447 |
2/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(0)); |
448 | |||
449 | // all values | ||
450 | |||
451 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | values = index_filter_internal::generateRandomSubset<std::mt19937, int>( |
452 | /*seed*/unsigned(0), 1000, 1000); | ||
453 | |||
454 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(1000)); |
455 | |||
456 | // ensure all numbers are represented | ||
457 | |||
458 | 1 | std::sort(values.begin(), values.end()); | |
459 | |||
460 |
2/2✓ Branch 0 taken 1000 times.
✓ Branch 1 taken 1 times.
|
1001 | for (int i = 0; i < 1000; i++) { |
461 |
2/16✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1000 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
1000 | EXPECT_EQ(values[i], i); |
462 | } | ||
463 | } | ||
464 | |||
465 | { // RandomLeafFilter | ||
466 | using RandFilter = RandomLeafFilter<PointDataTree, std::mt19937>; | ||
467 | |||
468 | 2 | PointDataTree tree; | |
469 | |||
470 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | RandFilter filter(tree, 0); |
471 | |||
472 | EXPECT_TRUE(filter.state() == index::PARTIAL); | ||
473 | |||
474 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.mLeafMap[Coord(0, 0, 0)] = std::make_pair(0, 10); |
475 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.mLeafMap[Coord(0, 0, 8)] = std::make_pair(1, 1); |
476 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | filter.mLeafMap[Coord(0, 8, 0)] = std::make_pair(2, 50); |
477 | |||
478 | { // construction, copy construction | ||
479 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter.initialized()); |
480 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | RandFilter filter2 = filter; |
481 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter2.initialized()); |
482 | |||
483 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | filter.reset(OriginLeaf(Coord(0, 0, 0), 10)); |
484 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter.initialized()); |
485 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | RandFilter filter3 = filter; |
486 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter3.initialized()); |
487 | } | ||
488 | |||
489 | { // all 10 values | ||
490 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(OriginLeaf(Coord(0, 0, 0), 10)); |
491 | std::vector<int> values; | ||
492 | |||
493 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
494 |
3/4✓ Branch 0 taken 10 times.
✓ Branch 1 taken 90 times.
✓ Branch 3 taken 10 times.
✗ Branch 4 not taken.
|
100 | if (filter.valid(iter)) values.push_back(*iter); |
495 | } | ||
496 | |||
497 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(10)); |
498 | |||
499 |
2/2✓ Branch 0 taken 10 times.
✓ Branch 1 taken 1 times.
|
11 | for (int i = 0; i < 10; i++) { |
500 |
2/16✓ Branch 1 taken 10 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 10 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
10 | EXPECT_EQ(values[i], i); |
501 | } | ||
502 | } | ||
503 | |||
504 | { // 50 of 100 | ||
505 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(OriginLeaf(Coord(0, 8, 0), 100)); |
506 | std::vector<int> values; | ||
507 | |||
508 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
509 |
3/4✓ Branch 0 taken 50 times.
✓ Branch 1 taken 50 times.
✓ Branch 3 taken 50 times.
✗ Branch 4 not taken.
|
100 | if (filter.valid(iter)) values.push_back(*iter); |
510 | } | ||
511 | |||
512 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(50)); |
513 | |||
514 | // ensure no duplicates | ||
515 | |||
516 | 1 | std::sort(values.begin(), values.end()); | |
517 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | auto it = std::adjacent_find(values.begin(), values.end()); |
518 | |||
519 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(it == values.end()); |
520 | } | ||
521 | } | ||
522 | 1 | } | |
523 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestIndexFilter, testRandomLeafFilter) { testRandomLeafFilterImpl(); } |
524 | |||
525 | |||
526 | inline void | ||
527 | 1 | setId(PointDataTree& tree, const size_t index, const std::vector<int>& ids) | |
528 | { | ||
529 | int offset = 0; | ||
530 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (auto leafIter = tree.beginLeaf(); leafIter; ++leafIter) { |
531 | 2 | auto id = AttributeWriteHandle<int>::create(leafIter->attributeArray(index)); | |
532 | |||
533 |
3/4✓ Branch 0 taken 4 times.
✓ Branch 1 taken 2 times.
✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
|
10 | for (auto iter = leafIter->beginIndexAll(); iter; ++iter) { |
534 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 4 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
4 | if (offset >= int(ids.size())) throw std::runtime_error("Out of range"); |
535 | |||
536 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
4 | id->set(*iter, ids[offset++]); |
537 | } | ||
538 | } | ||
539 | 1 | } | |
540 | |||
541 | |||
542 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestIndexFilter, testAttributeHashFilter) |
543 | { | ||
544 | 1 | std::vector<Vec3s> positions{{1, 1, 1}, {2, 2, 2}, {11, 11, 11}, {12, 12, 12}}; | |
545 | |||
546 | const float voxelSize(1.0); | ||
547 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr transform(math::Transform::createLinearTransform(voxelSize)); |
548 | |||
549 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | PointDataGrid::Ptr grid = createPointDataGrid<NullCodec, PointDataGrid>(positions, *transform); |
550 | PointDataTree& tree = grid->tree(); | ||
551 | |||
552 | // four points, two leafs | ||
553 | |||
554 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(tree.leafCount(), Index32(2)); |
555 | |||
556 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | appendAttribute<int>(tree, "id"); |
557 | |||
558 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | const size_t index = tree.cbeginLeaf()->attributeSet().descriptor().find("id"); |
559 | |||
560 | // ascending integers, block one | ||
561 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | std::vector<int> ids{1, 2, 3, 4}; |
562 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | setId(tree, index, ids); |
563 | |||
564 | using HashFilter = AttributeHashFilter<std::mt19937, int>; | ||
565 | |||
566 | { // construction, copy construction | ||
567 | HashFilter filter(index, 0.0f); | ||
568 | EXPECT_TRUE(filter.state() == index::PARTIAL); | ||
569 | EXPECT_TRUE(!filter.initialized()); | ||
570 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | HashFilter filter2 = filter; |
571 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter2.initialized()); |
572 | |||
573 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
|
1 | filter.reset(*tree.cbeginLeaf()); |
574 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter.initialized()); |
575 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | HashFilter filter3 = filter; |
576 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter3.initialized()); |
577 | } | ||
578 | |||
579 | { // zero percent | ||
580 | HashFilter filter(index, 0.0f); | ||
581 | |||
582 | auto leafIter = tree.cbeginLeaf(); | ||
583 | |||
584 | auto indexIter = leafIter->beginIndexAll(); | ||
585 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
586 | |||
587 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
588 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
589 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
590 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
591 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
592 | ++leafIter; | ||
593 | |||
594 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
595 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
596 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
597 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
598 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
599 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
600 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
601 | } | ||
602 | |||
603 | { // one hundred percent | ||
604 | HashFilter filter(index, 100.0f); | ||
605 | |||
606 | auto leafIter = tree.cbeginLeaf(); | ||
607 | |||
608 | auto indexIter = leafIter->beginIndexAll(); | ||
609 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
610 | |||
611 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
612 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
613 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
614 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
615 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
616 | ++leafIter; | ||
617 | |||
618 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
619 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
620 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
621 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
622 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
623 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
624 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
625 | } | ||
626 | |||
627 | { // fifty percent | ||
628 | HashFilter filter(index, 50.0f); | ||
629 | |||
630 | auto leafIter = tree.cbeginLeaf(); | ||
631 | |||
632 | auto indexIter = leafIter->beginIndexAll(); | ||
633 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
634 | |||
635 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
636 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
637 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
638 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
639 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
640 | ++leafIter; | ||
641 | |||
642 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
643 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
644 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
645 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
646 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
647 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
648 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
649 | } | ||
650 | |||
651 | { // fifty percent, new seed | ||
652 | HashFilter filter(index, 50.0f, /*seed=*/100); | ||
653 | |||
654 | auto leafIter = tree.cbeginLeaf(); | ||
655 | |||
656 | auto indexIter = leafIter->beginIndexAll(); | ||
657 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
658 | |||
659 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(indexIter)); |
660 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
661 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
662 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
663 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
664 | ++leafIter; | ||
665 | |||
666 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | indexIter = leafIter->beginIndexAll(); |
667 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
668 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
669 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
670 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(indexIter)); |
671 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++indexIter; |
672 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!indexIter); |
673 | } | ||
674 | 1 | } | |
675 | |||
676 | |||
677 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestIndexFilter, testLevelSetFilter) |
678 | { | ||
679 | // create a point grid | ||
680 | |||
681 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | PointDataGrid::Ptr points; |
682 | |||
683 | { | ||
684 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | std::vector<Vec3s> positions{{1, 1, 1}, {1, 2, 1}, {10.1f, 10, 1}}; |
685 | |||
686 | const double voxelSize(1.0); | ||
687 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr transform(math::Transform::createLinearTransform(voxelSize)); |
688 | |||
689 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
1 | points = createPointDataGrid<NullCodec, PointDataGrid>(positions, *transform); |
690 | } | ||
691 | |||
692 | // create a sphere levelset | ||
693 | |||
694 | 1 | FloatGrid::Ptr sphere; | |
695 | |||
696 | { | ||
697 | double voxelSize = 0.5; | ||
698 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | sphere = FloatGrid::create(/*backgroundValue=*/5.0); |
699 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
|
2 | sphere->setTransform(math::Transform::createLinearTransform(voxelSize)); |
700 | |||
701 | const openvdb::Coord dim(10, 10, 10); | ||
702 | const openvdb::Vec3f center(0.0f, 0.0f, 0.0f); | ||
703 | const float radius = 2; | ||
704 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | makeSphere<FloatGrid>(dim, center, radius, *sphere); |
705 | } | ||
706 | |||
707 | using LSFilter = LevelSetFilter<FloatGrid>; | ||
708 | |||
709 | { // construction, copy construction | ||
710 | 1 | LSFilter filter(*sphere, points->transform(), -4.0f, 4.0f); | |
711 | EXPECT_TRUE(filter.state() == index::PARTIAL); | ||
712 | EXPECT_TRUE(!filter.initialized()); | ||
713 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | LSFilter filter2 = filter; |
714 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter2.initialized()); |
715 | |||
716 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
|
1 | filter.reset(* points->tree().cbeginLeaf()); |
717 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter.initialized()); |
718 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | LSFilter filter3 = filter; |
719 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter3.initialized()); |
720 | } | ||
721 | |||
722 | { // capture both points near origin | ||
723 | 1 | LSFilter filter(*sphere, points->transform(), -4.0f, 4.0f); | |
724 | auto leafIter = points->tree().cbeginLeaf(); | ||
725 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter = leafIter->beginIndexOn(); |
726 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
727 | |||
728 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
729 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
730 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
731 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
732 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
733 | |||
734 | ++leafIter; | ||
735 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | iter = leafIter->beginIndexOn(); |
736 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
737 | |||
738 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(iter); |
739 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
740 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
741 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
742 | } | ||
743 | |||
744 | { // capture just the inner-most point | ||
745 | 1 | LSFilter filter(*sphere, points->transform(), -0.3f, -0.25f); | |
746 | auto leafIter = points->tree().cbeginLeaf(); | ||
747 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter = leafIter->beginIndexOn(); |
748 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
749 | |||
750 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
751 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
752 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
753 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
754 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
755 | |||
756 | ++leafIter; | ||
757 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | iter = leafIter->beginIndexOn(); |
758 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
759 | |||
760 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(iter); |
761 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
762 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
763 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
764 | } | ||
765 | |||
766 | { // capture everything but the second point (min > max) | ||
767 | 1 | LSFilter filter(*sphere, points->transform(), -0.25f, -0.3f); | |
768 | auto leafIter = points->tree().cbeginLeaf(); | ||
769 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter = leafIter->beginIndexOn(); |
770 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
771 | |||
772 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
773 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
774 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
775 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
776 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
777 | |||
778 | ++leafIter; | ||
779 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | iter = leafIter->beginIndexOn(); |
780 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
781 | |||
782 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(iter); |
783 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
784 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
785 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
786 | } | ||
787 | |||
788 | { | ||
789 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | std::vector<Vec3s> positions{{1, 1, 1}, {1, 2, 1}, {10.1f, 10, 1}}; |
790 | |||
791 | const double voxelSize(0.25); | ||
792 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr transform(math::Transform::createLinearTransform(voxelSize)); |
793 | |||
794 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | points = createPointDataGrid<NullCodec, PointDataGrid>(positions, *transform); |
795 | } | ||
796 | |||
797 | { | ||
798 | double voxelSize = 1.0; | ||
799 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | sphere = FloatGrid::create(/*backgroundValue=*/5.0); |
800 |
3/8✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
|
2 | sphere->setTransform(math::Transform::createLinearTransform(voxelSize)); |
801 | |||
802 | const openvdb::Coord dim(40, 40, 40); | ||
803 | const openvdb::Vec3f center(10.0f, 10.0f, 0.1f); | ||
804 | const float radius = 0.2f; | ||
805 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | makeSphere<FloatGrid>(dim, center, radius, *sphere); |
806 | } | ||
807 | |||
808 | { // capture only the last point using a different transform and a new sphere | ||
809 | 1 | LSFilter filter(*sphere, points->transform(), 0.5f, 1.0f); | |
810 | auto leafIter = points->tree().cbeginLeaf(); | ||
811 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter = leafIter->beginIndexOn(); |
812 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
813 | |||
814 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
815 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
816 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
817 | |||
818 | ++leafIter; | ||
819 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | iter = leafIter->beginIndexOn(); |
820 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
821 | |||
822 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter.valid(iter)); |
823 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
824 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
825 | |||
826 | ++leafIter; | ||
827 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | iter = leafIter->beginIndexOn(); |
828 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter.reset(*leafIter); |
829 | |||
830 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(iter); |
831 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter.valid(iter)); |
832 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
833 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
834 | } | ||
835 | 1 | } | |
836 | |||
837 | |||
838 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestIndexFilter, testBBoxFilter) |
839 | { | ||
840 | 1 | std::vector<Vec3s> positions{{1, 1, 1}, {1, 2, 1}, {10.1f, 10, 1}}; | |
841 | |||
842 | const float voxelSize(0.5); | ||
843 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr transform(math::Transform::createLinearTransform(voxelSize)); |
844 | |||
845 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | PointDataGrid::Ptr grid = createPointDataGrid<NullCodec, PointDataGrid>(positions, *transform); |
846 | PointDataTree& tree = grid->tree(); | ||
847 | |||
848 | // check one leaf per point | ||
849 |
3/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_EQ(tree.leafCount(), Index32(2)); |
850 | |||
851 | // build some bounding box filters to test | ||
852 | |||
853 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | BBoxFilter filter1(*transform, BBoxd({0.5, 0.5, 0.5}, {1.5, 1.5, 1.5})); |
854 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | BBoxFilter filter2(*transform, BBoxd({0.5, 0.5, 0.5}, {1.5, 2.01, 1.5})); |
855 |
1/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
|
1 | BBoxFilter filter3(*transform, BBoxd({0.5, 0.5, 0.5}, {11, 11, 1.5})); |
856 |
1/4✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
|
1 | BBoxFilter filter4(*transform, BBoxd({-10, 0, 0}, {11, 1.2, 1.2})); |
857 | |||
858 | { // construction, copy construction | ||
859 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter1.initialized()); |
860 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | BBoxFilter filter5 = filter1; |
861 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter5.initialized()); |
862 | |||
863 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
|
1 | filter1.reset(*tree.cbeginLeaf()); |
864 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter1.initialized()); |
865 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | BBoxFilter filter6 = filter1; |
866 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter6.initialized()); |
867 | } | ||
868 | |||
869 | // leaf 1 | ||
870 | |||
871 | auto leafIter = tree.cbeginLeaf(); | ||
872 | |||
873 | { | ||
874 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter(leafIter->beginIndexOn()); |
875 | |||
876 | // point 1 | ||
877 | |||
878 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter1.reset(*leafIter); |
879 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter1.valid(iter)); |
880 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter2.reset(*leafIter); |
881 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter2.valid(iter)); |
882 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter3.reset(*leafIter); |
883 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter3.valid(iter)); |
884 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter4.reset(*leafIter); |
885 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter4.valid(iter)); |
886 | |||
887 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
888 | |||
889 | // point 2 | ||
890 | |||
891 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter1.reset(*leafIter); |
892 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter1.valid(iter)); |
893 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter2.reset(*leafIter); |
894 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter2.valid(iter)); |
895 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter3.reset(*leafIter); |
896 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter3.valid(iter)); |
897 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter4.reset(*leafIter); |
898 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter4.valid(iter)); |
899 | |||
900 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
901 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
902 | } | ||
903 | |||
904 | ++leafIter; | ||
905 | |||
906 | // leaf 2 | ||
907 | |||
908 | { | ||
909 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | auto iter(leafIter->beginIndexOn()); |
910 | |||
911 | // point 3 | ||
912 | |||
913 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter1.reset(*leafIter); |
914 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter1.valid(iter)); |
915 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter2.reset(*leafIter); |
916 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter2.valid(iter)); |
917 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter3.reset(*leafIter); |
918 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(filter3.valid(iter)); |
919 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | filter4.reset(*leafIter); |
920 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_TRUE(!filter4.valid(iter)); |
921 | |||
922 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ++iter; |
923 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!iter); |
924 | } | ||
925 | 1 | } | |
926 | |||
927 | |||
928 | struct NeedsInitializeFilter | ||
929 | { | ||
930 |
1/6✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
|
1 | inline bool initialized() const { return mInitialized; } |
931 | static index::State state() { return index::PARTIAL; } | ||
932 | template <typename LeafT> | ||
933 | inline index::State state(const LeafT&) { return index::PARTIAL; } | ||
934 | template <typename LeafT> | ||
935 | void reset(const LeafT&) { mInitialized = true; } | ||
936 | private: | ||
937 | bool mInitialized = false; | ||
938 | }; | ||
939 | |||
940 | |||
941 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestIndexFilter, testBinaryFilter) |
942 | { | ||
943 | const int intMax = std::numeric_limits<int>::max(); | ||
944 | |||
945 | { // construction, copy construction | ||
946 | using InitializeBinaryFilter = BinaryFilter<NeedsInitializeFilter, NeedsInitializeFilter, /*And=*/true>; | ||
947 | |||
948 | 1 | NeedsInitializeFilter needs1; | |
949 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | NeedsInitializeFilter needs2; |
950 | InitializeBinaryFilter filter(needs1, needs2); | ||
951 | EXPECT_TRUE(filter.state() == index::PARTIAL); | ||
952 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter.initialized()); |
953 |
1/2✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
|
1 | InitializeBinaryFilter filter2 = filter; |
954 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(!filter2.initialized()); |
955 | |||
956 | filter.reset(OriginLeaf(Coord(0, 0, 0))); | ||
957 | EXPECT_TRUE(filter.initialized()); | ||
958 | InitializeBinaryFilter filter3 = filter; | ||
959 | EXPECT_TRUE(filter3.initialized()); | ||
960 | } | ||
961 | |||
962 | using LessThanFilter = ThresholdFilter<true>; | ||
963 | using GreaterThanFilter = ThresholdFilter<false>; | ||
964 | |||
965 | { // less than | ||
966 | LessThanFilter zeroFilter(0); // all invalid | ||
967 | EXPECT_TRUE(zeroFilter.state() == index::NONE); | ||
968 | LessThanFilter maxFilter(intMax); // all valid | ||
969 | EXPECT_TRUE(maxFilter.state() == index::ALL); | ||
970 | |||
971 | LessThanFilter filter(5); | ||
972 | filter.reset(OriginLeaf(Coord(0, 0, 0))); | ||
973 | std::vector<int> values; | ||
974 | |||
975 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
976 |
3/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
|
100 | if (filter.valid(iter)) values.push_back(*iter); |
977 | } | ||
978 | |||
979 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(5)); |
980 | |||
981 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
|
6 | for (int i = 0; i < 5; i++) { |
982 |
2/16✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
5 | EXPECT_EQ(values[i], i); |
983 | } | ||
984 | } | ||
985 | |||
986 | { // greater than | ||
987 | GreaterThanFilter zeroFilter(0); // all valid | ||
988 | EXPECT_TRUE(zeroFilter.state() == index::ALL); | ||
989 | GreaterThanFilter maxFilter(intMax); // all invalid | ||
990 | EXPECT_TRUE(maxFilter.state() == index::NONE); | ||
991 | |||
992 | GreaterThanFilter filter(94); | ||
993 | filter.reset(OriginLeaf(Coord(0, 0, 0))); | ||
994 | std::vector<int> values; | ||
995 | |||
996 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
997 |
3/4✓ Branch 0 taken 5 times.
✓ Branch 1 taken 95 times.
✓ Branch 3 taken 5 times.
✗ Branch 4 not taken.
|
100 | if (filter.valid(iter)) values.push_back(*iter); |
998 | } | ||
999 | |||
1000 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(5)); |
1001 | |||
1002 | int offset = 0; | ||
1003 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
|
6 | for (int i = 95; i < 100; i++) { |
1004 |
2/16✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
5 | EXPECT_EQ(values[offset++], i); |
1005 | } | ||
1006 | } | ||
1007 | |||
1008 | { // binary and | ||
1009 | using RangeFilter = BinaryFilter<LessThanFilter, GreaterThanFilter, /*And=*/true>; | ||
1010 | |||
1011 | 1 | RangeFilter zeroFilter(LessThanFilter(0), GreaterThanFilter(10)); // all invalid | |
1012 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(zeroFilter.state() == index::NONE); |
1013 | 1 | RangeFilter maxFilter(LessThanFilter(intMax), GreaterThanFilter(0)); // all valid | |
1014 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(maxFilter.state() == index::ALL); |
1015 | |||
1016 | 1 | RangeFilter filter(LessThanFilter(55), GreaterThanFilter(45)); | |
1017 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(filter.state() == index::PARTIAL); |
1018 | |||
1019 | filter.reset(OriginLeaf(Coord(0, 0, 0))); | ||
1020 | |||
1021 | std::vector<int> values; | ||
1022 | |||
1023 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
1024 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
9 | if (filter.valid(iter)) values.push_back(*iter); |
1025 | } | ||
1026 | |||
1027 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(9)); |
1028 | |||
1029 | int offset = 0; | ||
1030 |
2/2✓ Branch 0 taken 9 times.
✓ Branch 1 taken 1 times.
|
10 | for (int i = 46; i < 55; i++) { |
1031 |
2/16✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
9 | EXPECT_EQ(values[offset++], i); |
1032 | } | ||
1033 | } | ||
1034 | |||
1035 | { // binary or | ||
1036 | using HeadTailFilter = BinaryFilter<LessThanFilter, GreaterThanFilter, /*And=*/false>; | ||
1037 | |||
1038 | 1 | HeadTailFilter zeroFilter(LessThanFilter(0), GreaterThanFilter(10)); // some valid | |
1039 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(zeroFilter.state() == index::PARTIAL); |
1040 | 1 | HeadTailFilter maxFilter(LessThanFilter(intMax), GreaterThanFilter(0)); // all valid | |
1041 |
1/16✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_TRUE(maxFilter.state() == index::ALL); |
1042 | |||
1043 | 1 | HeadTailFilter filter(LessThanFilter(5), GreaterThanFilter(95)); | |
1044 | filter.reset(OriginLeaf(Coord(0, 0, 0))); | ||
1045 | |||
1046 | std::vector<int> values; | ||
1047 | |||
1048 |
2/2✓ Branch 0 taken 100 times.
✓ Branch 1 taken 1 times.
|
101 | for (SimpleIter iter; *iter < 100; ++iter) { |
1049 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
9 | if (filter.valid(iter)) values.push_back(*iter); |
1050 | } | ||
1051 | |||
1052 |
2/18✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
1 | EXPECT_EQ(values.size(), size_t(9)); |
1053 | |||
1054 | int offset = 0; | ||
1055 |
2/2✓ Branch 0 taken 5 times.
✓ Branch 1 taken 1 times.
|
6 | for (int i = 0; i < 5; i++) { |
1056 |
2/16✓ Branch 1 taken 5 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
5 | EXPECT_EQ(values[offset++], i); |
1057 | } | ||
1058 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (int i = 96; i < 100; i++) { |
1059 |
2/16✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✗ Branch 3 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 18 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
|
4 | EXPECT_EQ(values[offset++], i); |
1060 | } | ||
1061 | } | ||
1062 | 1 | } | |
1063 |