Directory: | ./ |
---|---|
File: | test/serialization.cpp |
Date: | 2025-04-01 09:23:31 |
Exec | Total | Coverage | |
---|---|---|---|
Lines: | 270 | 270 | 100.0% |
Branches: | 772 | 1505 | 51.3% |
Line | Branch | Exec | Source |
---|---|---|---|
1 | /* | ||
2 | * Software License Agreement (BSD License) | ||
3 | * | ||
4 | * Copyright (c) 2021-2023 INRIA. | ||
5 | * All rights reserved. | ||
6 | * | ||
7 | * Redistribution and use in source and binary forms, with or without | ||
8 | * modification, are permitted provided that the following conditions | ||
9 | * are met: | ||
10 | * | ||
11 | * * Redistributions of source code must retain the above copyright | ||
12 | * notice, this list of conditions and the following disclaimer. | ||
13 | * * Redistributions in binary form must reproduce the above | ||
14 | * copyright notice, this list of conditions and the following | ||
15 | * disclaimer in the documentation and/or other materials provided | ||
16 | * with the distribution. | ||
17 | * * Neither the name of Willow Garage, Inc. nor the names of its | ||
18 | * contributors may be used to endorse or promote products derived | ||
19 | * from this software without specific prior written permission. | ||
20 | * | ||
21 | * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS | ||
22 | * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT | ||
23 | * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS | ||
24 | * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | ||
25 | * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, | ||
26 | * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, | ||
27 | * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; | ||
28 | * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER | ||
29 | * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT | ||
30 | * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN | ||
31 | * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE | ||
32 | * POSSIBILITY OF SUCH DAMAGE. | ||
33 | */ | ||
34 | |||
35 | #define BOOST_TEST_MODULE COAL_SERIALIZATION | ||
36 | #include <fstream> | ||
37 | #include <boost/test/included/unit_test.hpp> | ||
38 | |||
39 | #include "coal/fwd.hh" | ||
40 | |||
41 | COAL_COMPILER_DIAGNOSTIC_PUSH | ||
42 | COAL_COMPILER_DIAGNOSTIC_IGNORED_DEPRECECATED_DECLARATIONS | ||
43 | |||
44 | #include "coal/collision.h" | ||
45 | |||
46 | #include "coal/contact_patch.h" | ||
47 | #include "coal/distance.h" | ||
48 | #include "coal/BV/OBBRSS.h" | ||
49 | #include "coal/BVH/BVH_model.h" | ||
50 | |||
51 | #include "coal/serialization/collision_data.h" | ||
52 | #include "coal/serialization/contact_patch.h" | ||
53 | #include "coal/serialization/AABB.h" | ||
54 | #include "coal/serialization/BVH_model.h" | ||
55 | #include "coal/serialization/hfield.h" | ||
56 | #include "coal/serialization/transform.h" | ||
57 | #include "coal/serialization/geometric_shapes.h" | ||
58 | #include "coal/serialization/convex.h" | ||
59 | #include "coal/serialization/archive.h" | ||
60 | #include "coal/serialization/memory.h" | ||
61 | |||
62 | #ifdef COAL_HAS_OCTOMAP | ||
63 | #include "coal/serialization/octree.h" | ||
64 | #endif | ||
65 | |||
66 | #include "utility.h" | ||
67 | #include "fcl_resources/config.h" | ||
68 | |||
69 | #include <boost/archive/tmpdir.hpp> | ||
70 | #include <boost/filesystem.hpp> | ||
71 | |||
72 | namespace utf = boost::unit_test::framework; | ||
73 | |||
74 | using namespace coal; | ||
75 | |||
76 | template <typename T> | ||
77 | 536 | bool check(const T& value, const T& other) { | |
78 | 536 | return value == other; | |
79 | } | ||
80 | |||
81 | template <typename T> | ||
82 | 96 | bool check_ptr(const T* value, const T* other) { | |
83 | 96 | return *value == *other; | |
84 | } | ||
85 | |||
86 | enum SerializationMode { TXT = 1, XML = 2, BIN = 4, STREAM = 8 }; | ||
87 | |||
88 | template <typename T> | ||
89 | void test_serialization(const T* value, T& other_value, | ||
90 | const int mode = TXT | XML | BIN | STREAM) { | ||
91 | test_serialization(*value, other_value, mode); | ||
92 | } | ||
93 | |||
94 | template <typename T, | ||
95 | bool is_base = std::is_base_of<T, CollisionGeometry>::value> | ||
96 | struct test_pointer_serialization_impl { | ||
97 | 48 | static void run(const T&, T&, const int) {} | |
98 | }; | ||
99 | |||
100 | template <typename T> | ||
101 | struct test_pointer_serialization_impl<T, true> { | ||
102 | static void run(const T& value, T& other_value, const int mode) { | ||
103 | const CollisionGeometry* ptr = &value; | ||
104 | CollisionGeometry* other_ptr = &other_value; | ||
105 | |||
106 | const boost::filesystem::path tmp_path(boost::archive::tmpdir()); | ||
107 | const boost::filesystem::path txt_path("file.txt"); | ||
108 | const boost::filesystem::path txt_ptr_path("ptr_file.txt"); | ||
109 | const boost::filesystem::path xml_path("file.xml"); | ||
110 | const boost::filesystem::path bin_path("file.bin"); | ||
111 | const boost::filesystem::path txt_filename(tmp_path / txt_path); | ||
112 | const boost::filesystem::path xml_filename(tmp_path / xml_path); | ||
113 | const boost::filesystem::path bin_filename(tmp_path / bin_path); | ||
114 | |||
115 | // TXT | ||
116 | if (mode & 0x1) { | ||
117 | { | ||
118 | std::ofstream ofs(txt_filename.c_str()); | ||
119 | |||
120 | boost::archive::text_oarchive oa(ofs); | ||
121 | oa << ptr; | ||
122 | } | ||
123 | BOOST_CHECK(check(*reinterpret_cast<const CollisionGeometry*>(ptr), | ||
124 | *reinterpret_cast<const CollisionGeometry*>(ptr))); | ||
125 | |||
126 | { | ||
127 | std::ifstream ifs(txt_filename.c_str()); | ||
128 | boost::archive::text_iarchive ia(ifs); | ||
129 | |||
130 | ia >> other_ptr; | ||
131 | } | ||
132 | BOOST_CHECK( | ||
133 | check(*reinterpret_cast<const CollisionGeometry*>(ptr), | ||
134 | *reinterpret_cast<const CollisionGeometry*>(other_ptr))); | ||
135 | } | ||
136 | } | ||
137 | }; | ||
138 | |||
139 | template <typename T> | ||
140 | 48 | void test_pointer_serialization(const T& value, T& other_value, | |
141 | const int mode = TXT | XML | BIN | STREAM) { | ||
142 | 48 | test_pointer_serialization_impl<T>::run(value, other_value, mode); | |
143 | 48 | } | |
144 | |||
145 | template <typename T> | ||
146 | 48 | void test_serialization(const T& value, T& other_value, | |
147 | const int mode = TXT | XML | BIN | STREAM) { | ||
148 |
1/2✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
|
48 | const boost::filesystem::path tmp_path(boost::archive::tmpdir()); |
149 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path txt_path("file.txt"); |
150 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path txt_ptr_path("ptr_file.txt"); |
151 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path xml_path("file.xml"); |
152 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path bin_path("file.bin"); |
153 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path txt_filename(tmp_path / txt_path); |
154 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path xml_filename(tmp_path / xml_path); |
155 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path bin_filename(tmp_path / bin_path); |
156 | |||
157 | // TXT | ||
158 |
2/2✓ Branch 0 taken 22 times.
✓ Branch 1 taken 2 times.
|
48 | if (mode & 0x1) { |
159 | // -- TXT | ||
160 | { | ||
161 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
44 | const std::string filename = txt_filename.string(); |
162 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::saveToText(value, filename); |
163 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, value)); |
164 | |||
165 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::loadFromText(other_value, filename); |
166 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, other_value)); |
167 | 44 | } | |
168 | |||
169 | // -- String stream (TXT format) | ||
170 | { | ||
171 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | std::stringstream ss_out; |
172 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::saveToStringStream(value, ss_out); |
173 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, value)); |
174 | |||
175 |
2/4✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 22 times.
✗ Branch 5 not taken.
|
44 | std::istringstream ss_in(ss_out.str()); |
176 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::loadFromStringStream(other_value, ss_in); |
177 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, other_value)); |
178 | 44 | } | |
179 | |||
180 | // -- String | ||
181 | { | ||
182 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | const std::string str_out = coal::serialization::saveToString(value); |
183 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, value)); |
184 | |||
185 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | const std::string str_in(str_out); |
186 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::loadFromString(other_value, str_in); |
187 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, other_value)); |
188 | 44 | } | |
189 | } | ||
190 | |||
191 | // XML | ||
192 |
2/2✓ Branch 0 taken 22 times.
✓ Branch 1 taken 2 times.
|
48 | if (mode & 0x2) { |
193 | { | ||
194 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
44 | const std::string filename = xml_filename.string(); |
195 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
44 | const std::string xml_tag = "value"; |
196 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::saveToXML(value, filename, xml_tag); |
197 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, value)); |
198 | |||
199 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::loadFromXML(other_value, filename, xml_tag); |
200 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, other_value)); |
201 | 44 | } | |
202 | } | ||
203 | |||
204 | // BIN | ||
205 |
2/2✓ Branch 0 taken 22 times.
✓ Branch 1 taken 2 times.
|
48 | if (mode & 0x4) { |
206 | { | ||
207 |
1/2✓ Branch 2 taken 22 times.
✗ Branch 3 not taken.
|
44 | const std::string filename = bin_filename.string(); |
208 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::saveToBinary(value, filename); |
209 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, value)); |
210 | |||
211 |
1/2✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
|
44 | coal::serialization::loadFromBinary(other_value, filename); |
212 |
10/18✓ Branch 1 taken 22 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 22 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 22 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 21 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 21 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 21 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 21 times.
|
44 | BOOST_CHECK(check(value, other_value)); |
213 | 44 | } | |
214 | } | ||
215 | |||
216 | // Stream Buffer | ||
217 |
1/2✓ Branch 0 taken 24 times.
✗ Branch 1 not taken.
|
48 | if (mode & 0x8) { |
218 | { | ||
219 |
1/2✓ Branch 3 taken 24 times.
✗ Branch 4 not taken.
|
48 | boost::asio::streambuf buffer; |
220 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | coal::serialization::saveToBuffer(value, buffer); |
221 |
10/18✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 24 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 24 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 23 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 23 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 23 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 23 times.
|
48 | BOOST_CHECK(check(value, value)); |
222 | |||
223 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | coal::serialization::loadFromBuffer(other_value, buffer); |
224 |
10/18✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 24 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 24 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 23 times.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 23 times.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 23 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 23 times.
|
48 | BOOST_CHECK(check(value, other_value)); |
225 | 48 | } | |
226 | } | ||
227 | |||
228 | // Test std::shared_ptr<T> | ||
229 | { | ||
230 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | const boost::filesystem::path txt_ptr_filename(tmp_path / txt_ptr_path); |
231 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | std::shared_ptr<T> ptr = std::make_shared<T>(value); |
232 | |||
233 |
1/2✓ Branch 2 taken 24 times.
✗ Branch 3 not taken.
|
48 | const std::string filename = txt_ptr_filename.string(); |
234 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | coal::serialization::saveToText(ptr, filename); |
235 |
10/18✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 24 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 24 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 23 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 23 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 23 times.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 23 times.
|
48 | BOOST_CHECK(check_ptr(ptr.get(), ptr.get())); |
236 | |||
237 | 48 | std::shared_ptr<T> other_ptr = nullptr; | |
238 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | coal::serialization::loadFromText(other_ptr, filename); |
239 |
10/18✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 24 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 24 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 23 times.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 19 taken 23 times.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 22 taken 23 times.
✗ Branch 23 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
✗ Branch 27 not taken.
✓ Branch 28 taken 23 times.
|
48 | BOOST_CHECK(check_ptr(ptr.get(), other_ptr.get())); |
240 | 48 | } | |
241 | |||
242 |
1/2✓ Branch 1 taken 24 times.
✗ Branch 2 not taken.
|
48 | test_pointer_serialization(value, other_value); |
243 | 48 | } | |
244 | |||
245 | template <typename T> | ||
246 | 18 | void test_serialization(const T& value, | |
247 | const int mode = TXT | XML | BIN | STREAM) { | ||
248 |
2/3✓ Branch 1 taken 8 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
18 | T other_value; |
249 |
1/2✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
|
18 | test_serialization(value, other_value, mode); |
250 | 18 | } | |
251 | |||
252 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_aabb) { |
253 |
6/12✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
2 | AABB aabb(-Vec3s::Ones(), Vec3s::Ones()); |
254 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(aabb); |
255 | 2 | } | |
256 | |||
257 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_collision_data) { |
258 |
5/10✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
|
2 | Contact contact(NULL, NULL, 1, 2, Vec3s::Ones(), Vec3s::Zero(), -10.); |
259 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(contact); |
260 | |||
261 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | CollisionRequest collision_request(CONTACT, 10); |
262 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(collision_request); |
263 | |||
264 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | CollisionResult collision_result; |
265 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | collision_result.addContact(contact); |
266 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | collision_result.addContact(contact); |
267 | 2 | collision_result.distance_lower_bound = Scalar(0.1); | |
268 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | collision_result.normal.setOnes(); |
269 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | collision_result.nearest_points[0].setRandom(); |
270 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | collision_result.nearest_points[1].setRandom(); |
271 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(collision_result); |
272 | |||
273 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | DistanceRequest distance_request(true, 1., 2.); |
274 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(distance_request); |
275 | |||
276 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | DistanceResult distance_result; |
277 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | distance_result.normal.setOnes(); |
278 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | distance_result.nearest_points[0].setRandom(); |
279 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | distance_result.nearest_points[1].setRandom(); |
280 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(distance_result); |
281 | |||
282 | { | ||
283 | // Serializing contact patches. | ||
284 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | const Halfspace hspace(0, 0, 1, 0); |
285 | 2 | const Scalar radius = 0.25; | |
286 | 2 | const Scalar height = 1.; | |
287 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | const Cylinder cylinder(radius, height); |
288 | |||
289 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | const Transform3s tf1; |
290 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Transform3s tf2; |
291 | // set translation to have a collision | ||
292 | 2 | const Scalar offset = Scalar(0.001); | |
293 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tf2.setTranslation(Vec3s(0, 0, height / 2 - offset)); |
294 | |||
295 | 2 | const size_t num_max_contact = 1; | |
296 | const CollisionRequest col_req(CollisionRequestFlag::CONTACT, | ||
297 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | num_max_contact); |
298 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | CollisionResult col_res; |
299 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | coal::collide(&hspace, tf1, &cylinder, tf2, col_req, col_res); |
300 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(col_res.isCollision()); |
301 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | if (col_res.isCollision()) { |
302 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ContactPatchRequest patch_req; |
303 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ContactPatchResult patch_res(patch_req); |
304 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | coal::computeContactPatch(&hspace, tf1, &cylinder, tf2, col_res, |
305 | patch_req, patch_res); | ||
306 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(patch_res.numContactPatches() == 1); |
307 | |||
308 | // Serialize patch request, result and the patch itself | ||
309 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(patch_req); |
310 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(patch_res); |
311 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | if (patch_res.numContactPatches() > 0) { |
312 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | test_serialization(patch_res.getContactPatch(0)); |
313 | } | ||
314 | 2 | } | |
315 | 2 | } | |
316 | 2 | } | |
317 | |||
318 | template <typename T> | ||
319 | 8 | void checkEqualStdVector(const std::vector<T>& v1, const std::vector<T>& v2) { | |
320 |
5/10✓ Branch 3 taken 4 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 4 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 4 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 4 times.
✗ Branch 18 not taken.
✗ Branch 22 not taken.
✓ Branch 23 taken 4 times.
|
8 | BOOST_CHECK(v1.size() == v2.size()); |
321 |
1/2✓ Branch 2 taken 4 times.
✗ Branch 3 not taken.
|
8 | if (v1.size() == v2.size()) { |
322 |
2/2✓ Branch 1 taken 9584 times.
✓ Branch 2 taken 4 times.
|
19176 | for (size_t i = 0; i < v1.size(); i++) { |
323 |
9/16✓ Branch 3 taken 9584 times.
✗ Branch 4 not taken.
✓ Branch 9 taken 9584 times.
✗ Branch 10 not taken.
✓ Branch 14 taken 7188 times.
✓ Branch 15 taken 2396 times.
✗ Branch 16 not taken.
✓ Branch 17 taken 7188 times.
✓ Branch 18 taken 2396 times.
✗ Branch 19 not taken.
✓ Branch 20 taken 7188 times.
✗ Branch 21 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 2396 times.
✗ Branch 25 not taken.
✓ Branch 26 taken 7188 times.
|
19168 | BOOST_CHECK(v1[i] == v2[i]); |
324 | } | ||
325 | } | ||
326 | 8 | } | |
327 | |||
328 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_BVHModel) { |
329 | 2 | std::vector<Vec3s> p1, p2; | |
330 | 2 | std::vector<Triangle> t1, t2; | |
331 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | boost::filesystem::path path(TEST_RESOURCES_DIR); |
332 | |||
333 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
|
2 | loadOBJFile((path / "env.obj").string().c_str(), p1, t1); |
334 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
|
2 | loadOBJFile((path / "rob.obj").string().c_str(), p2, t2); |
335 | |||
336 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | BVHModel<OBBRSS> m1, m2; |
337 | |||
338 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.beginModel(); |
339 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.addSubModel(p1, t1); |
340 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.endModel(); |
341 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(m1.num_vertices == p1.size()); |
342 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(m1.num_tris == t1.size()); |
343 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | checkEqualStdVector(*m1.vertices, p1); |
344 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | checkEqualStdVector(*m1.tri_indices, t1); |
345 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(m1 == m1); |
346 | |||
347 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m2.beginModel(); |
348 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m2.addSubModel(p2, t2); |
349 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m2.endModel(); |
350 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(m2.num_vertices == p2.size()); |
351 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 15 taken 1 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1 times.
|
2 | BOOST_CHECK(m2.num_tris == t2.size()); |
352 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | checkEqualStdVector(*m2.vertices, p2); |
353 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | checkEqualStdVector(*m2.tri_indices, t2); |
354 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(m2 == m2); |
355 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(m1 != m2); |
356 | |||
357 | // Test BVHModel | ||
358 | { | ||
359 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | BVHModel<OBBRSS> m1_copy; |
360 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(m1, m1_copy); |
361 | 2 | } | |
362 | { | ||
363 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | BVHModel<OBBRSS> m1_copy; |
364 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(m1, m1_copy, STREAM); |
365 | 2 | } | |
366 | 2 | } | |
367 | |||
368 | #ifdef COAL_HAS_QHULL | ||
369 | BOOST_AUTO_TEST_CASE(test_Convex) { | ||
370 | std::vector<Vec3s> p1; | ||
371 | std::vector<Triangle> t1; | ||
372 | boost::filesystem::path path(TEST_RESOURCES_DIR); | ||
373 | |||
374 | loadOBJFile((path / "env.obj").string().c_str(), p1, t1); | ||
375 | |||
376 | BVHModel<OBBRSS> m1; | ||
377 | |||
378 | m1.beginModel(); | ||
379 | m1.addSubModel(p1, t1); | ||
380 | m1.endModel(); | ||
381 | |||
382 | m1.buildConvexHull(true); | ||
383 | |||
384 | Convex<Triangle>& convex = static_cast<Convex<Triangle>&>(*m1.convex.get()); | ||
385 | |||
386 | // Test Convex | ||
387 | { | ||
388 | Convex<Triangle> convex_copy; | ||
389 | test_serialization(convex, convex_copy); | ||
390 | } | ||
391 | |||
392 | // Test std::shared_ptr<CollisionGeometry> | ||
393 | { | ||
394 | const boost::filesystem::path tmp_dir(boost::archive::tmpdir()); | ||
395 | // TODO(louis): understand why serializing a shared_ptr<CollisionGeometry> | ||
396 | // in TXT format fails only on MacOS + -O0. | ||
397 | // const boost::filesystem::path txt_filename = tmp_dir / "file.txt"; | ||
398 | // const boost::filesystem::path bin_filename = tmp_dir / "file.bin"; | ||
399 | const boost::filesystem::path xml_filename = tmp_dir / "file.xml"; | ||
400 | Convex<Triangle> convex_copy; | ||
401 | |||
402 | std::shared_ptr<CollisionGeometry> ptr = | ||
403 | std::make_shared<Convex<Triangle>>(convex); | ||
404 | BOOST_CHECK(ptr.get()); | ||
405 | const std::string filename = xml_filename.string(); | ||
406 | const std::string tag_name = "CollisionGeometry"; | ||
407 | coal::serialization::saveToXML(ptr, filename, tag_name); | ||
408 | BOOST_CHECK(check(*reinterpret_cast<Convex<Triangle>*>(ptr.get()), convex)); | ||
409 | |||
410 | std::shared_ptr<CollisionGeometry> other_ptr = nullptr; | ||
411 | BOOST_CHECK(!other_ptr.get()); | ||
412 | coal::serialization::loadFromXML(other_ptr, filename, tag_name); | ||
413 | BOOST_CHECK( | ||
414 | check(convex, *reinterpret_cast<Convex<Triangle>*>(other_ptr.get()))); | ||
415 | } | ||
416 | } | ||
417 | #endif | ||
418 | |||
419 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_HeightField) { |
420 | 2 | const Scalar min_altitude = -1.; | |
421 | 2 | const Scalar x_dim = 1., y_dim = 2.; | |
422 | 2 | const Eigen::DenseIndex nx = 100, ny = 200; | |
423 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | const MatrixXs heights = MatrixXs::Random(ny, nx); |
424 | |||
425 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | HeightField<OBBRSS> hfield(x_dim, y_dim, heights, min_altitude); |
426 | |||
427 | // Test HeightField | ||
428 | { | ||
429 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | HeightField<OBBRSS> hfield_copy; |
430 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(hfield, hfield_copy); |
431 | 2 | } | |
432 | { | ||
433 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | HeightField<OBBRSS> hfield_copy; |
434 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(hfield, hfield_copy, STREAM); |
435 | 2 | } | |
436 | 2 | } | |
437 | |||
438 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_transform) { |
439 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Transform3s T; |
440 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | T.setQuatRotation(Quaternion3f::UnitRandom()); |
441 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | T.setTranslation(Vec3s::Random()); |
442 | |||
443 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Transform3s T_copy; |
444 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(T, T_copy); |
445 | 2 | } | |
446 | |||
447 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_shapes) { |
448 | { | ||
449 |
7/14✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
|
2 | TriangleP triangle(Vec3s::UnitX(), Vec3s::UnitY(), Vec3s::UnitZ()); |
450 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | triangle.setSweptSphereRadius(1.); |
451 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | triangle.computeLocalAABB(); |
452 |
7/14✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
|
2 | TriangleP triangle_copy(Vec3s::Random(), Vec3s::Random(), Vec3s::Random()); |
453 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(triangle, triangle_copy); |
454 | 2 | } | |
455 | |||
456 | { | ||
457 |
6/12✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
2 | Box box(Vec3s::UnitX()), box_copy(Vec3s::Random()); |
458 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | box.setSweptSphereRadius(1.); |
459 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | box.computeLocalAABB(); |
460 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(box, box_copy); |
461 | 2 | } | |
462 | |||
463 | { | ||
464 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Sphere sphere(1.), sphere_copy(2.); |
465 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | sphere.setSweptSphereRadius(1.); |
466 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | sphere.computeLocalAABB(); |
467 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(sphere, sphere_copy); |
468 | 2 | } | |
469 | |||
470 | { | ||
471 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Ellipsoid ellipsoid(1., 2., 3.), ellipsoid_copy(0., 0., 0.); |
472 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ellipsoid.setSweptSphereRadius(1.); |
473 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ellipsoid.computeLocalAABB(); |
474 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(ellipsoid, ellipsoid_copy); |
475 | 2 | } | |
476 | |||
477 | { | ||
478 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Capsule capsule(1., 2.), capsule_copy(10., 10.); |
479 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | capsule.setSweptSphereRadius(1.); |
480 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | capsule.computeLocalAABB(); |
481 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(capsule, capsule_copy); |
482 | 2 | } | |
483 | |||
484 | { | ||
485 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Cone cone(1., 2.), cone_copy(10., 10.); |
486 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | cone.setSweptSphereRadius(1.); |
487 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | cone.computeLocalAABB(); |
488 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(cone, cone_copy); |
489 | 2 | } | |
490 | |||
491 | { | ||
492 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | Cylinder cylinder(1., 2.), cylinder_copy(10., 10.); |
493 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | cylinder.setSweptSphereRadius(1.); |
494 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | cylinder.computeLocalAABB(); |
495 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(cylinder, cylinder_copy); |
496 | 2 | } | |
497 | |||
498 | { | ||
499 |
6/12✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
2 | Halfspace hs(Vec3s::Random(), 1.), hs_copy(Vec3s::Zero(), 0.); |
500 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | hs.setSweptSphereRadius(1.); |
501 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | hs.computeLocalAABB(); |
502 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(hs, hs_copy); |
503 | 2 | } | |
504 | |||
505 | { | ||
506 |
6/12✓ 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 10 taken 1 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
|
2 | Plane plane(Vec3s::Random(), 1.), plane_copy(Vec3s::Zero(), 0.); |
507 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | plane.setSweptSphereRadius(1.); |
508 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | plane.computeLocalAABB(); |
509 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(plane, plane_copy); |
510 | 2 | } | |
511 | |||
512 | #ifdef HPP_FCL_HAS_QHULL | ||
513 | { | ||
514 | const size_t num_points = 500; | ||
515 | std::shared_ptr<std::vector<Vec3s>> points = | ||
516 | std::make_shared<std::vector<Vec3s>>(); | ||
517 | points->reserve(num_points); | ||
518 | for (size_t i = 0; i < num_points; i++) { | ||
519 | points->emplace_back(Vec3s::Random()); | ||
520 | } | ||
521 | using Convex = Convex<Triangle>; | ||
522 | std::unique_ptr<Convex> convex = | ||
523 | std::unique_ptr<Convex>(static_cast<Convex*>(ConvexBase::convexHull( | ||
524 | points, static_cast<unsigned int>(points->size()), true))); | ||
525 | convex->setSweptSphereRadius(1.); | ||
526 | convex->computeLocalAABB(); | ||
527 | |||
528 | Convex convex_copy; | ||
529 | test_serialization(*convex, convex_copy); | ||
530 | } | ||
531 | #endif | ||
532 | 2 | } | |
533 | |||
534 | #ifdef COAL_HAS_OCTOMAP | ||
535 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_octree) { |
536 | 2 | const Scalar resolution = Scalar(1e-2); | |
537 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | const MatrixX3s points = MatrixX3s::Random(1000, 3); |
538 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | OcTreePtr_t octree_ptr = makeOctree(points, resolution); |
539 | 2 | const OcTree& octree = *octree_ptr.get(); | |
540 | |||
541 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | const boost::filesystem::path tmp_dir(boost::archive::tmpdir()); |
542 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | const boost::filesystem::path txt_filename = tmp_dir / "file.txt"; |
543 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | const boost::filesystem::path bin_filename = tmp_dir / "file.bin"; |
544 | |||
545 | { | ||
546 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
2 | std::ofstream ofs(bin_filename.c_str(), std::ios::binary); |
547 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | boost::archive::binary_oarchive oa(ofs); |
548 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | oa << octree; |
549 | 2 | } | |
550 | |||
551 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | OcTree octree_value(1.); |
552 | { | ||
553 | std::ifstream ifs(bin_filename.c_str(), | ||
554 |
1/2✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
|
2 | std::fstream::binary | std::fstream::in); |
555 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | boost::archive::binary_iarchive ia(ifs); |
556 | |||
557 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ia >> octree_value; |
558 | 2 | } | |
559 | |||
560 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(octree.getTree() == octree.getTree()); |
561 |
6/12✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 27 not taken.
✓ Branch 28 taken 1 times.
|
2 | BOOST_CHECK(octree_value.getTree() == octree_value.getTree()); |
562 | // BOOST_CHECK(octree.getTree() == octree_value.getTree()); | ||
563 |
8/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(octree.getResolution() == octree_value.getResolution()); |
564 |
8/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1 times.
✗ Branch 17 not taken.
✓ Branch 21 taken 1 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✗ Branch 34 not taken.
✓ Branch 35 taken 1 times.
|
2 | BOOST_CHECK(octree.getTree()->size() == octree_value.getTree()->size()); |
565 |
8/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 18 taken 1 times.
✗ Branch 19 not taken.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✗ Branch 32 not taken.
✓ Branch 33 taken 1 times.
|
2 | BOOST_CHECK(octree.toBoxes().size() == octree_value.toBoxes().size()); |
566 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(octree == octree_value); |
567 | |||
568 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | OcTree octree_copy(1.); |
569 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | test_serialization(octree, octree_copy); |
570 | 2 | } | |
571 | #endif | ||
572 | |||
573 |
33/66✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 19 taken 1 times.
✗ Branch 20 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✓ Branch 27 taken 1 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 1 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 1 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 1 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 1 times.
✗ Branch 42 not taken.
✓ Branch 45 taken 1 times.
✗ Branch 46 not taken.
✓ Branch 48 taken 1 times.
✗ Branch 49 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✓ Branch 58 taken 1 times.
✗ Branch 59 not taken.
✓ Branch 61 taken 1 times.
✗ Branch 62 not taken.
✓ Branch 66 taken 1 times.
✗ Branch 67 not taken.
✓ Branch 70 taken 1 times.
✗ Branch 71 not taken.
✓ Branch 73 taken 1 times.
✗ Branch 74 not taken.
✓ Branch 77 taken 1 times.
✗ Branch 78 not taken.
✓ Branch 80 taken 1 times.
✗ Branch 81 not taken.
✓ Branch 83 taken 1 times.
✗ Branch 84 not taken.
✓ Branch 86 taken 1 times.
✗ Branch 87 not taken.
✓ Branch 91 taken 1 times.
✗ Branch 92 not taken.
✓ Branch 95 taken 1 times.
✗ Branch 96 not taken.
✓ Branch 98 taken 1 times.
✗ Branch 99 not taken.
✓ Branch 102 taken 1 times.
✗ Branch 103 not taken.
✓ Branch 105 taken 1 times.
✗ Branch 106 not taken.
✓ Branch 108 taken 1 times.
✗ Branch 109 not taken.
✓ Branch 111 taken 1 times.
✗ Branch 112 not taken.
✓ Branch 116 taken 1 times.
✗ Branch 117 not taken.
|
4 | BOOST_AUTO_TEST_CASE(test_memory_footprint) { |
574 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Sphere sphere(1.); |
575 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(sizeof(Sphere) == computeMemoryFootprint(sphere)); |
576 | |||
577 | 2 | std::vector<Vec3s> p1; | |
578 | 2 | std::vector<Triangle> t1; | |
579 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | boost::filesystem::path path(TEST_RESOURCES_DIR); |
580 | |||
581 |
3/6✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
|
2 | loadOBJFile((path / "env.obj").string().c_str(), p1, t1); |
582 | |||
583 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | BVHModel<OBBRSS> m1; |
584 | |||
585 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.beginModel(); |
586 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.addSubModel(p1, t1); |
587 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | m1.endModel(); |
588 | |||
589 |
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 | std::cout << "computeMemoryFootprint(m1): " << computeMemoryFootprint(m1) |
590 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | << std::endl; |
591 |
7/14✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1 times.
|
2 | BOOST_CHECK(sizeof(BVHModel<OBBRSS>) < computeMemoryFootprint(m1)); |
592 |
8/16✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
✓ Branch 11 taken 1 times.
✗ Branch 12 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 15 not taken.
✓ Branch 17 taken 1 times.
✗ Branch 18 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 1 times.
✗ Branch 24 not taken.
✗ Branch 28 not taken.
✓ Branch 29 taken 1 times.
|
2 | BOOST_CHECK(static_cast<size_t>(m1.memUsage(false)) == |
593 | computeMemoryFootprint(m1)); | ||
594 | 2 | } | |
595 | |||
596 | COAL_COMPILER_DIAGNOSTIC_POP | ||
597 |