| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | #include <openvdb/Exceptions.h> | ||
| 5 | #include <openvdb/openvdb.h> | ||
| 6 | #include <openvdb/Types.h> | ||
| 7 | #include <openvdb/util/Name.h> | ||
| 8 | #include <openvdb/math/Transform.h> | ||
| 9 | #include <openvdb/Grid.h> | ||
| 10 | #include <openvdb/tree/Tree.h> | ||
| 11 | #include <openvdb/util/CpuTimer.h> | ||
| 12 | #include "gtest/gtest.h" | ||
| 13 | #include <iostream> | ||
| 14 | #include <memory> // for std::make_unique | ||
| 15 | |||
| 16 | #define ASSERT_DOUBLES_EXACTLY_EQUAL(expected, actual) \ | ||
| 17 | EXPECT_NEAR((expected), (actual), /*tolerance=*/0.0); | ||
| 18 | |||
| 19 | 10 | class TestGrid: public ::testing::Test | |
| 20 | { | ||
| 21 | }; | ||
| 22 | |||
| 23 | |||
| 24 | //////////////////////////////////////// | ||
| 25 | |||
| 26 | |||
| 27 | class ProxyTree: public openvdb::TreeBase | ||
| 28 | { | ||
| 29 | public: | ||
| 30 | using ValueType = int; | ||
| 31 | using BuildType = int; | ||
| 32 | using LeafNodeType = void; | ||
| 33 | using ValueAllCIter = void; | ||
| 34 | using ValueAllIter = void; | ||
| 35 | using ValueOffCIter = void; | ||
| 36 | using ValueOffIter = void; | ||
| 37 | using ValueOnCIter = void; | ||
| 38 | using ValueOnIter = void; | ||
| 39 | using TreeBasePtr = openvdb::TreeBase::Ptr; | ||
| 40 | using Ptr = openvdb::SharedPtr<ProxyTree>; | ||
| 41 | using ConstPtr = openvdb::SharedPtr<const ProxyTree>; | ||
| 42 | |||
| 43 | static const openvdb::Index DEPTH; | ||
| 44 | static const ValueType backg; | ||
| 45 | |||
| 46 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | ProxyTree() {} |
| 47 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | ProxyTree(const ValueType&) {} |
| 48 | ✗ | ProxyTree(const ProxyTree&) = default; | |
| 49 | 4 | ~ProxyTree() override = default; | |
| 50 | |||
| 51 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
1 | static const openvdb::Name& treeType() { static const openvdb::Name s("proxy"); return s; } |
| 52 | ✗ | const openvdb::Name& type() const override { return treeType(); } | |
| 53 | ✗ | openvdb::Name valueType() const override { return "proxy"; } | |
| 54 | const ValueType& background() const { return backg; } | ||
| 55 | |||
| 56 | ✗ | TreeBasePtr copy() const override { return TreeBasePtr(new ProxyTree(*this)); } | |
| 57 | |||
| 58 | ✗ | void readTopology(std::istream& is, bool = false) override { is.seekg(0, std::ios::beg); } | |
| 59 | ✗ | void writeTopology(std::ostream& os, bool = false) const override { os.seekp(0); } | |
| 60 | |||
| 61 | ✗ | void readBuffers(std::istream& is, | |
| 62 | ✗ | const openvdb::CoordBBox&, bool /*saveFloatAsHalf*/=false) override { is.seekg(0); } | |
| 63 | ✗ | void readNonresidentBuffers() const override {} | |
| 64 | ✗ | void readBuffers(std::istream& is, bool /*saveFloatAsHalf*/=false) override { is.seekg(0); } | |
| 65 | ✗ | void writeBuffers(std::ostream& os, bool /*saveFloatAsHalf*/=false) const override | |
| 66 | ✗ | { os.seekp(0, std::ios::beg); } | |
| 67 | |||
| 68 | bool empty() const { return true; } | ||
| 69 | void clear() {} | ||
| 70 | void prune(const ValueType& = 0) {} | ||
| 71 | void clip(const openvdb::CoordBBox&) {} | ||
| 72 | ✗ | void clipUnallocatedNodes() override {} | |
| 73 | ✗ | openvdb::Index32 unallocatedLeafCount() const override { return 0; } | |
| 74 | |||
| 75 | ✗ | void getIndexRange(openvdb::CoordBBox&) const override {} | |
| 76 | ✗ | bool evalLeafBoundingBox(openvdb::CoordBBox& bbox) const override | |
| 77 | ✗ | { bbox.min() = bbox.max() = openvdb::Coord(0, 0, 0); return false; } | |
| 78 | ✗ | bool evalActiveVoxelBoundingBox(openvdb::CoordBBox& bbox) const override | |
| 79 | ✗ | { bbox.min() = bbox.max() = openvdb::Coord(0, 0, 0); return false; } | |
| 80 | ✗ | bool evalActiveVoxelDim(openvdb::Coord& dim) const override | |
| 81 | ✗ | { dim = openvdb::Coord(0, 0, 0); return false; } | |
| 82 | ✗ | bool evalLeafDim(openvdb::Coord& dim) const override | |
| 83 | ✗ | { dim = openvdb::Coord(0, 0, 0); return false; } | |
| 84 | |||
| 85 | ✗ | openvdb::Index treeDepth() const override { return 0; } | |
| 86 | ✗ | openvdb::Index leafCount() const override { return 0; } | |
| 87 | ✗ | std::vector<openvdb::Index32> nodeCount() const override | |
| 88 | ✗ | { return std::vector<openvdb::Index32>(DEPTH, 0); } | |
| 89 | ✗ | openvdb::Index nonLeafCount() const override { return 0; } | |
| 90 | ✗ | openvdb::Index64 activeVoxelCount() const override { return 0UL; } | |
| 91 | ✗ | openvdb::Index64 inactiveVoxelCount() const override { return 0UL; } | |
| 92 | ✗ | openvdb::Index64 activeLeafVoxelCount() const override { return 0UL; } | |
| 93 | ✗ | openvdb::Index64 inactiveLeafVoxelCount() const override { return 0UL; } | |
| 94 | ✗ | openvdb::Index64 activeTileCount() const override { return 0UL; } | |
| 95 | }; | ||
| 96 | |||
| 97 | const openvdb::Index ProxyTree::DEPTH = 0; | ||
| 98 | const ProxyTree::ValueType ProxyTree::backg = 0; | ||
| 99 | |||
| 100 | using ProxyGrid = openvdb::Grid<ProxyTree>; | ||
| 101 | |||
| 102 | |||
| 103 | //////////////////////////////////////// | ||
| 104 | |||
| 105 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGrid, testGridRegistry) |
| 106 | { | ||
| 107 | using namespace openvdb::tree; | ||
| 108 | |||
| 109 | using TreeType = Tree<RootNode<InternalNode<LeafNode<float, 3>, 2> > >; | ||
| 110 | using GridType = openvdb::Grid<TreeType>; | ||
| 111 | |||
| 112 | 1 | openvdb::GridBase::clearRegistry(); | |
| 113 | |||
| 114 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(!GridType::isRegistered()); |
| 115 | 1 | GridType::registerGrid(); | |
| 116 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(GridType::isRegistered()); |
| 117 |
3/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
2 | EXPECT_THROW(GridType::registerGrid(), openvdb::KeyError); |
| 118 | 1 | GridType::unregisterGrid(); | |
| 119 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(!GridType::isRegistered()); |
| 120 |
4/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
1 | EXPECT_NO_THROW(GridType::unregisterGrid()); |
| 121 |
1/16✗ Branch 1 not taken.
✓ Branch 2 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 5 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
|
1 | EXPECT_TRUE(!GridType::isRegistered()); |
| 122 |
4/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
1 | EXPECT_NO_THROW(GridType::registerGrid()); |
| 123 |
0/14✗ Branch 2 not taken.
✗ Branch 3 not taken.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 8 not taken.
✗ Branch 9 not taken.
✗ Branch 11 not taken.
✗ Branch 12 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
|
1 | EXPECT_TRUE(GridType::isRegistered()); |
| 124 | |||
| 125 | 1 | openvdb::GridBase::clearRegistry(); | |
| 126 | 1 | } | |
| 127 | |||
| 128 | |||
| 129 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testConstPtr) |
| 130 | { | ||
| 131 | using namespace openvdb; | ||
| 132 | |||
| 133 | 1 | GridBase::ConstPtr constgrid = ProxyGrid::create(); | |
| 134 | |||
| 135 |
3/20✓ 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.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 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.
|
2 | EXPECT_EQ(Name("proxy"), constgrid->type()); |
| 136 | 1 | } | |
| 137 | |||
| 138 | |||
| 139 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGrid, testGetGrid) |
| 140 | { | ||
| 141 | using namespace openvdb; | ||
| 142 | |||
| 143 | 1 | GridBase::Ptr grid = FloatGrid::create(/*bg=*/0.0); | |
| 144 | GridBase::ConstPtr constGrid = grid; | ||
| 145 | |||
| 146 |
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.
|
2 | EXPECT_TRUE(grid->baseTreePtr()); |
| 147 | |||
| 148 |
2/18✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ 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 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
1 | EXPECT_TRUE(!gridPtrCast<DoubleGrid>(grid)); |
| 149 |
2/18✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ 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 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
1 | EXPECT_TRUE(!gridPtrCast<DoubleGrid>(grid)); |
| 150 | |||
| 151 |
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(gridConstPtrCast<FloatGrid>(constGrid)); |
| 152 |
2/18✗ Branch 0 not taken.
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ 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 18 not taken.
✗ Branch 19 not taken.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
|
1 | EXPECT_TRUE(!gridConstPtrCast<DoubleGrid>(constGrid)); |
| 153 | 1 | } | |
| 154 | |||
| 155 | |||
| 156 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testIsType) |
| 157 | { | ||
| 158 | using namespace openvdb; | ||
| 159 | |||
| 160 | 1 | GridBase::Ptr grid = FloatGrid::create(); | |
| 161 |
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(grid->isType<FloatGrid>()); |
| 162 |
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(!grid->isType<DoubleGrid>()); |
| 163 | 1 | } | |
| 164 | |||
| 165 | |||
| 166 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testIsTreeUnique) |
| 167 | { | ||
| 168 | using namespace openvdb; | ||
| 169 | |||
| 170 | FloatGrid::Ptr grid = FloatGrid::create(); | ||
| 171 |
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(grid->isTreeUnique()); |
| 172 | |||
| 173 | // a shallow copy shares the same tree | ||
| 174 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | FloatGrid::Ptr grid2 = grid->copy(); |
| 175 |
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(!grid->isTreeUnique()); |
| 176 |
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(!grid2->isTreeUnique()); |
| 177 | |||
| 178 | // cleanup the shallow copy | ||
| 179 | grid2.reset(); | ||
| 180 |
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(grid->isTreeUnique()); |
| 181 | |||
| 182 | // copy with new tree | ||
| 183 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | GridBase::Ptr grid3 = grid->copyGridWithNewTree(); |
| 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(grid->isTreeUnique()); |
| 185 | |||
| 186 | #if OPENVDB_ABI_VERSION_NUMBER >= 8 | ||
| 187 | // shallow copy using GridBase | ||
| 188 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | GridBase::Ptr grid4 = grid->copyGrid(); |
| 189 |
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(!grid4->isTreeUnique()); |
| 190 | |||
| 191 | // copy with new tree using GridBase | ||
| 192 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | GridBase::Ptr grid5 = grid->copyGridWithNewTree(); |
| 193 |
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(grid5->isTreeUnique()); |
| 194 | #endif | ||
| 195 | 1 | } | |
| 196 | |||
| 197 | |||
| 198 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGrid, testTransform) |
| 199 | { | ||
| 200 | 2 | ProxyGrid grid; | |
| 201 | |||
| 202 | // Verify that the grid has a valid default transform. | ||
| 203 |
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(grid.transformPtr()); |
| 204 | |||
| 205 | // Verify that a null transform pointer is not allowed. | ||
| 206 |
5/22✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 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 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✗ Branch 28 not taken.
✗ Branch 29 not taken.
✗ Branch 31 not taken.
✗ Branch 32 not taken.
|
2 | EXPECT_THROW(grid.setTransform(openvdb::math::Transform::Ptr()), |
| 207 | openvdb::ValueError); | ||
| 208 | |||
| 209 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | grid.setTransform(openvdb::math::Transform::createLinearTransform()); |
| 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(grid.transformPtr()); |
| 212 | |||
| 213 | // Verify that calling Transform-related Grid methods (Grid::voxelSize(), etc.) | ||
| 214 | // is the same as calling those methods on the Transform. | ||
| 215 | |||
| 216 |
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(grid.transform().voxelSize().eq(grid.voxelSize())); |
| 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(grid.transform().voxelSize(openvdb::Vec3d(0.1, 0.2, 0.3)).eq( |
| 218 | grid.voxelSize(openvdb::Vec3d(0.1, 0.2, 0.3)))); | ||
| 219 | |||
| 220 |
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(grid.transform().indexToWorld(openvdb::Vec3d(0.1, 0.2, 0.3)).eq( |
| 221 | grid.indexToWorld(openvdb::Vec3d(0.1, 0.2, 0.3)))); | ||
| 222 |
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(grid.transform().indexToWorld(openvdb::Coord(1, 2, 3)).eq( |
| 223 | grid.indexToWorld(openvdb::Coord(1, 2, 3)))); | ||
| 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(grid.transform().worldToIndex(openvdb::Vec3d(0.1, 0.2, 0.3)).eq( |
| 225 | grid.worldToIndex(openvdb::Vec3d(0.1, 0.2, 0.3)))); | ||
| 226 | 1 | } | |
| 227 | |||
| 228 | |||
| 229 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | TEST_F(TestGrid, testCopyGrid) |
| 230 | { | ||
| 231 | using namespace openvdb; | ||
| 232 | |||
| 233 | // set up a grid | ||
| 234 | 1 | const float fillValue1=5.0f; | |
| 235 | FloatGrid::Ptr grid1 = createGrid<FloatGrid>(/*bg=*/fillValue1); | ||
| 236 | FloatTree& tree1 = grid1->tree(); | ||
| 237 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | tree1.setValue(Coord(-10,40,845), 3.456f); |
| 238 |
2/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
|
2 | tree1.setValue(Coord(1,-50,-8), 1.0f); |
| 239 | |||
| 240 | // create a new grid, copying the first grid | ||
| 241 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | GridBase::Ptr grid2 = grid1->deepCopy(); |
| 242 | |||
| 243 | // cast down to the concrete type to query values | ||
| 244 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | FloatTree& tree2 = gridPtrCast<FloatGrid>(grid2)->tree(); |
| 245 | |||
| 246 | // compare topology | ||
| 247 |
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(tree1.hasSameTopology(tree2)); |
| 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(tree2.hasSameTopology(tree1)); |
| 249 | |||
| 250 | // trees should be equal | ||
| 251 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(fillValue1, tree2.getValue(Coord(1,2,3))); |
| 252 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(3.456f, tree2.getValue(Coord(-10,40,845))); |
| 253 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(1.0f, tree2.getValue(Coord(1,-50,-8))); |
| 254 | |||
| 255 | // change 1 value in tree2 | ||
| 256 | Coord changeCoord(1, -500, -8); | ||
| 257 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tree2.setValue(changeCoord, 1.0f); |
| 258 | |||
| 259 | // topology should no longer match | ||
| 260 |
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(!tree1.hasSameTopology(tree2)); |
| 261 |
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(!tree2.hasSameTopology(tree1)); |
| 262 | |||
| 263 | // query changed value and make sure it's different between trees | ||
| 264 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(fillValue1, tree1.getValue(changeCoord)); |
| 265 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(1.0f, tree2.getValue(changeCoord)); |
| 266 | |||
| 267 | // shallow-copy a const grid but supply a new transform and meta map | ||
| 268 |
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(1.0, grid1->transform().voxelSize().x()); |
| 269 |
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(size_t(0), grid1->metaCount()); |
| 270 |
3/20✓ 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.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
1 | EXPECT_EQ(Index(2), grid1->tree().leafCount()); |
| 271 | |||
| 272 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | math::Transform::Ptr xform(math::Transform::createLinearTransform(/*voxelSize=*/0.25)); |
| 273 | MetaMap meta; | ||
| 274 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | meta.insertMeta("test", Int32Metadata(4)); |
| 275 | |||
| 276 | FloatGrid::ConstPtr constGrid1 = ConstPtrCast<const FloatGrid>(grid1); | ||
| 277 | |||
| 278 |
2/6✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 8 not taken.
|
2 | GridBase::ConstPtr grid3 = constGrid1->copyGridReplacingMetadataAndTransform(meta, xform); |
| 279 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | const FloatTree& tree3 = gridConstPtrCast<FloatGrid>(grid3)->tree(); |
| 280 | |||
| 281 |
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(0.25, grid3->transform().voxelSize().x()); |
| 282 |
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(size_t(1), grid3->metaCount()); |
| 283 |
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(Index(2), tree3.leafCount()); |
| 284 |
3/22✓ Branch 1 taken 1 times.
✗ Branch 2 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 19 not taken.
✗ Branch 20 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.
|
2 | EXPECT_EQ(long(3), constGrid1->constTreePtr().use_count()); |
| 285 | 1 | } | |
| 286 | |||
| 287 | |||
| 288 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testValueConversion) |
| 289 | { | ||
| 290 | using namespace openvdb; | ||
| 291 | |||
| 292 | const Coord c0(-10, 40, 845), c1(1, -50, -8), c2(1, 2, 3); | ||
| 293 | 1 | const float fval0 = 3.25f, fval1 = 1.0f, fbkgd = 5.0f; | |
| 294 | |||
| 295 | // Create a FloatGrid. | ||
| 296 | 2 | FloatGrid fgrid(fbkgd); | |
| 297 | FloatTree& ftree = fgrid.tree(); | ||
| 298 | ftree.setValue(c0, fval0); | ||
| 299 | ftree.setValue(c1, fval1); | ||
| 300 | |||
| 301 | // Copy the FloatGrid to a DoubleGrid. | ||
| 302 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | DoubleGrid dgrid(fgrid); |
| 303 | DoubleTree& dtree = dgrid.tree(); | ||
| 304 | // Compare topology. | ||
| 305 |
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(dtree.hasSameTopology(ftree)); |
| 306 |
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(ftree.hasSameTopology(dtree)); |
| 307 | // Compare values. | ||
| 308 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(double(fbkgd), dtree.getValue(c2)); |
| 309 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(double(fval0), dtree.getValue(c0)); |
| 310 |
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 | ASSERT_DOUBLES_EXACTLY_EQUAL(double(fval1), dtree.getValue(c1)); |
| 311 | |||
| 312 | // Copy the FloatGrid to a BoolGrid. | ||
| 313 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | BoolGrid bgrid(fgrid); |
| 314 | BoolTree& btree = bgrid.tree(); | ||
| 315 | // Compare topology. | ||
| 316 |
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(btree.hasSameTopology(ftree)); |
| 317 |
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(ftree.hasSameTopology(btree)); |
| 318 | // Compare values. | ||
| 319 |
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(bool(fbkgd), btree.getValue(c2)); |
| 320 |
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(bool(fval0), btree.getValue(c0)); |
| 321 |
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(bool(fval1), btree.getValue(c1)); |
| 322 | |||
| 323 | // Copy the FloatGrid to a Vec3SGrid. | ||
| 324 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Vec3SGrid vgrid(fgrid); |
| 325 | Vec3STree& vtree = vgrid.tree(); | ||
| 326 | // Compare topology. | ||
| 327 |
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(vtree.hasSameTopology(ftree)); |
| 328 |
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(ftree.hasSameTopology(vtree)); |
| 329 | // Compare values. | ||
| 330 |
1/14✗ 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 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(Vec3s(fbkgd), vtree.getValue(c2)); |
| 331 |
1/14✗ 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 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(Vec3s(fval0), vtree.getValue(c0)); |
| 332 |
1/14✗ 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 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
|
1 | EXPECT_EQ(Vec3s(fval1), vtree.getValue(c1)); |
| 333 | |||
| 334 | // Verify that a Vec3SGrid can't be copied to an Int32Grid | ||
| 335 | // (because an Int32 can't be constructed from a Vec3S). | ||
| 336 |
4/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
2 | EXPECT_THROW(Int32Grid igrid2(vgrid), openvdb::TypeError); |
| 337 | |||
| 338 | // Verify that a grid can't be converted to another type with a different | ||
| 339 | // tree configuration. | ||
| 340 | using DTree23 = tree::Tree3<double, 2, 3>::Type; | ||
| 341 | using DGrid23 = Grid<DTree23>; | ||
| 342 |
4/20✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✓ Branch 7 taken 1 times.
✗ Branch 10 not taken.
✗ Branch 11 not taken.
✗ Branch 13 not taken.
✗ Branch 14 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 19 not taken.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
|
2 | EXPECT_THROW(DGrid23 d23grid(fgrid), openvdb::TypeError); |
| 343 | 1 | } | |
| 344 | |||
| 345 | |||
| 346 | //////////////////////////////////////// | ||
| 347 | |||
| 348 | |||
| 349 | template<typename GridT> | ||
| 350 | void | ||
| 351 | ✗ | validateClippedGrid(const GridT& clipped, const typename GridT::ValueType& fg) | |
| 352 | { | ||
| 353 | using namespace openvdb; | ||
| 354 | |||
| 355 | using ValueT = typename GridT::ValueType; | ||
| 356 | |||
| 357 | ✗ | const CoordBBox bbox = clipped.evalActiveVoxelBoundingBox(); | |
| 358 | ✗ | EXPECT_EQ(4, bbox.min().x()); | |
| 359 | ✗ | EXPECT_EQ(4, bbox.min().y()); | |
| 360 | ✗ | EXPECT_EQ(-6, bbox.min().z()); | |
| 361 | ✗ | EXPECT_EQ(4, bbox.max().x()); | |
| 362 | ✗ | EXPECT_EQ(4, bbox.max().y()); | |
| 363 | ✗ | EXPECT_EQ(6, bbox.max().z()); | |
| 364 | ✗ | EXPECT_EQ(6 + 6 + 1, int(clipped.activeVoxelCount())); | |
| 365 | ✗ | EXPECT_EQ(2, int(clipped.constTree().leafCount())); | |
| 366 | |||
| 367 | typename GridT::ConstAccessor acc = clipped.getConstAccessor(); | ||
| 368 | ✗ | const ValueT bg = clipped.background(); | |
| 369 | Coord xyz; | ||
| 370 | int &x = xyz[0], &y = xyz[1], &z = xyz[2]; | ||
| 371 | ✗ | for (x = -10; x <= 10; ++x) { | |
| 372 | ✗ | for (y = -10; y <= 10; ++y) { | |
| 373 | ✗ | for (z = -10; z <= 10; ++z) { | |
| 374 | ✗ | if (x == 4 && y == 4 && z >= -6 && z <= 6) { | |
| 375 | ✗ | EXPECT_EQ(fg, acc.getValue(Coord(4, 4, z))); | |
| 376 | } else { | ||
| 377 | ✗ | EXPECT_EQ(bg, acc.getValue(Coord(x, y, z))); | |
| 378 | } | ||
| 379 | } | ||
| 380 | } | ||
| 381 | } | ||
| 382 | } | ||
| 383 | |||
| 384 | |||
| 385 | // See also TestTools::testClipping() | ||
| 386 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testClipping) |
| 387 | { | ||
| 388 | using namespace openvdb; | ||
| 389 | |||
| 390 | 1 | const BBoxd clipBox(Vec3d(4.0, 4.0, -6.0), Vec3d(4.9, 4.9, 6.0)); | |
| 391 | |||
| 392 | { | ||
| 393 | 1 | const float fg = 5.f; | |
| 394 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | FloatGrid cube(0.f); |
| 395 | ✗ | cube.fill(CoordBBox(Coord(-10), Coord(10)), /*value=*/fg, /*active=*/true); | |
| 396 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | cube.clipGrid(clipBox); |
| 397 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | validateClippedGrid(cube, fg); |
| 398 | } | ||
| 399 | { | ||
| 400 | 1 | const bool fg = true; | |
| 401 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | BoolGrid cube(false); |
| 402 | ✗ | cube.fill(CoordBBox(Coord(-10), Coord(10)), /*value=*/fg, /*active=*/true); | |
| 403 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | cube.clipGrid(clipBox); |
| 404 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | validateClippedGrid(cube, fg); |
| 405 | } | ||
| 406 | { | ||
| 407 | const Vec3s fg(1.f, -2.f, 3.f); | ||
| 408 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | Vec3SGrid cube(Vec3s(0.f)); |
| 409 | ✗ | cube.fill(CoordBBox(Coord(-10), Coord(10)), /*value=*/fg, /*active=*/true); | |
| 410 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | cube.clipGrid(clipBox); |
| 411 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | validateClippedGrid(cube, fg); |
| 412 | } | ||
| 413 | /* | ||
| 414 | {// Benchmark multi-threaded copy construction | ||
| 415 | openvdb::util::CpuTimer timer; | ||
| 416 | openvdb::initialize(); | ||
| 417 | openvdb::io::File file("/usr/pic1/Data/OpenVDB/LevelSetModels/crawler.vdb"); | ||
| 418 | file.open(); | ||
| 419 | openvdb::GridBase::Ptr baseGrid = file.readGrid("ls_crawler"); | ||
| 420 | file.close(); | ||
| 421 | openvdb::FloatGrid::Ptr grid = openvdb::gridPtrCast<openvdb::FloatGrid>(baseGrid); | ||
| 422 | //grid->tree().print(); | ||
| 423 | timer.start("\nCopy construction"); | ||
| 424 | openvdb::FloatTree fTree(grid->tree()); | ||
| 425 | timer.stop(); | ||
| 426 | |||
| 427 | timer.start("\nBoolean topology copy construction"); | ||
| 428 | openvdb::BoolTree bTree(grid->tree(), false, openvdb::TopologyCopy()); | ||
| 429 | timer.stop(); | ||
| 430 | |||
| 431 | timer.start("\nBoolean topology union"); | ||
| 432 | bTree.topologyUnion(fTree); | ||
| 433 | timer.stop(); | ||
| 434 | //bTree.print(); | ||
| 435 | } | ||
| 436 | */ | ||
| 437 | 1 | } | |
| 438 | |||
| 439 | |||
| 440 | //////////////////////////////////////// | ||
| 441 | |||
| 442 | |||
| 443 | namespace { | ||
| 444 | |||
| 445 | struct GridOp | ||
| 446 | { | ||
| 447 | bool isConst = false; | ||
| 448 | 2 | template<typename GridT> void operator()(const GridT&) { isConst = true; } | |
| 449 | 2 | template<typename GridT> void operator()(GridT&) { isConst = false; } | |
| 450 | }; | ||
| 451 | |||
| 452 | } // anonymous namespace | ||
| 453 | |||
| 454 | |||
| 455 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | TEST_F(TestGrid, testApply) |
| 456 | { | ||
| 457 | using namespace openvdb; | ||
| 458 | |||
| 459 | const GridBase::Ptr | ||
| 460 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | boolGrid = BoolGrid::create(), |
| 461 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | floatGrid = FloatGrid::create(), |
| 462 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | doubleGrid = DoubleGrid::create(), |
| 463 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | intGrid = Int32Grid::create(); |
| 464 | |||
| 465 | const GridBase::ConstPtr | ||
| 466 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | boolCGrid = BoolGrid::create(), |
| 467 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | floatCGrid = FloatGrid::create(), |
| 468 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | doubleCGrid = DoubleGrid::create(), |
| 469 | 1 | intCGrid = Int32Grid::create(); | |
| 470 | |||
| 471 | { | ||
| 472 | using AllowedGridTypes = TypeList<>; | ||
| 473 | |||
| 474 | // Verify that the functor is not applied to any of the grids. | ||
| 475 | GridOp op; | ||
| 476 | EXPECT_TRUE(!boolGrid->apply<AllowedGridTypes>(op)); | ||
| 477 | EXPECT_TRUE(!boolCGrid->apply<AllowedGridTypes>(op)); | ||
| 478 | EXPECT_TRUE(!floatGrid->apply<AllowedGridTypes>(op)); | ||
| 479 | EXPECT_TRUE(!floatCGrid->apply<AllowedGridTypes>(op)); | ||
| 480 | EXPECT_TRUE(!doubleGrid->apply<AllowedGridTypes>(op)); | ||
| 481 | EXPECT_TRUE(!doubleCGrid->apply<AllowedGridTypes>(op)); | ||
| 482 | EXPECT_TRUE(!intGrid->apply<AllowedGridTypes>(op)); | ||
| 483 | EXPECT_TRUE(!intCGrid->apply<AllowedGridTypes>(op)); | ||
| 484 | } | ||
| 485 | { | ||
| 486 | using AllowedGridTypes = TypeList<FloatGrid, FloatGrid, DoubleGrid>; | ||
| 487 | |||
| 488 | // Verify that the functor is applied only to grids of the allowed types | ||
| 489 | // and that their constness is respected. | ||
| 490 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | GridOp op; |
| 491 |
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(!boolGrid->apply<AllowedGridTypes>(op)); |
| 492 |
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(!intGrid->apply<AllowedGridTypes>(op)); |
| 493 |
2/32✗ 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 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
|
2 | EXPECT_TRUE(floatGrid->apply<AllowedGridTypes>(op)); EXPECT_TRUE(!op.isConst); |
| 494 |
2/32✗ 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 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
|
2 | EXPECT_TRUE(doubleGrid->apply<AllowedGridTypes>(op)); EXPECT_TRUE(!op.isConst); |
| 495 | |||
| 496 |
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(!boolCGrid->apply<AllowedGridTypes>(op)); |
| 497 |
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(!intCGrid->apply<AllowedGridTypes>(op)); |
| 498 |
2/32✗ 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 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
|
2 | EXPECT_TRUE(floatCGrid->apply<AllowedGridTypes>(op)); EXPECT_TRUE(op.isConst); |
| 499 |
2/32✗ 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 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 22 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 27 not taken.
✗ Branch 28 not taken.
✗ Branch 30 not taken.
✗ Branch 31 not taken.
✗ Branch 34 not taken.
✗ Branch 35 not taken.
✗ Branch 38 not taken.
✗ Branch 39 not taken.
✗ Branch 40 not taken.
✗ Branch 41 not taken.
✗ Branch 44 not taken.
✗ Branch 45 not taken.
✗ Branch 46 not taken.
✗ Branch 47 not taken.
|
2 | EXPECT_TRUE(doubleCGrid->apply<AllowedGridTypes>(op)); EXPECT_TRUE(op.isConst); |
| 500 | } | ||
| 501 | { | ||
| 502 | using AllowedGridTypes = TypeList<FloatGrid, DoubleGrid>; | ||
| 503 | |||
| 504 | // Verify that rvalue functors are supported. | ||
| 505 | 1 | int n = 0; | |
| 506 |
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( !boolGrid->apply<AllowedGridTypes>([&n](GridBase&) { ++n; })); |
| 507 |
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( !intGrid->apply<AllowedGridTypes>([&n](GridBase&) { ++n; })); |
| 508 |
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.
|
2 | EXPECT_TRUE( floatGrid->apply<AllowedGridTypes>([&n](GridBase&) { ++n; })); |
| 509 |
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.
|
2 | EXPECT_TRUE( doubleGrid->apply<AllowedGridTypes>([&n](GridBase&) { ++n; })); |
| 510 |
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( !boolCGrid->apply<AllowedGridTypes>([&n](const GridBase&) { ++n; })); |
| 511 |
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( !intCGrid->apply<AllowedGridTypes>([&n](const GridBase&) { ++n; })); |
| 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 19 not taken.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✗ Branch 24 not taken.
✗ Branch 25 not taken.
✗ Branch 26 not taken.
|
2 | EXPECT_TRUE( floatCGrid->apply<AllowedGridTypes>([&n](const GridBase&) { ++n; })); |
| 513 |
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.
|
2 | EXPECT_TRUE(doubleCGrid->apply<AllowedGridTypes>([&n](const GridBase&) { ++n; })); |
| 514 |
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(4, n); |
| 515 | } | ||
| 516 | 1 | } | |
| 517 |