| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | /* | ||
| 2 | * Software License Agreement (BSD License) | ||
| 3 | * | ||
| 4 | * Copyright (c) 2019, LAAS-CNRS | ||
| 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 Open Source Robotics Foundation 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 | /** \author Joseph Mirabel */ | ||
| 36 | |||
| 37 | #define BOOST_TEST_MODULE COAL_GEOMETRIC_SHAPES | ||
| 38 | #include <boost/test/included/unit_test.hpp> | ||
| 39 | |||
| 40 | #include "coal/shape/convex.h" | ||
| 41 | #include "coal/collision.h" | ||
| 42 | #include "coal/distance.h" | ||
| 43 | |||
| 44 | #include "utility.h" | ||
| 45 | |||
| 46 | using namespace coal; | ||
| 47 | |||
| 48 |
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(convex) { |
| 49 | 2 | Scalar l = 1, w = 1, d = 1; | |
| 50 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Quadrilateral32> box(buildBox(l, w, d)); |
| 51 | |||
| 52 | // Check neighbors | ||
| 53 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 1 times.
|
18 | for (size_t i = 0; i < 8; ++i) { |
| 54 |
5/10✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 8 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 8 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 8 times.
|
16 | BOOST_CHECK_EQUAL((*box.neighbors)[i].count, 3); |
| 55 | } | ||
| 56 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(0, 0), 1); |
| 57 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(0, 1), 2); |
| 58 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(0, 2), 4); |
| 59 | |||
| 60 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(1, 0), 0); |
| 61 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(1, 1), 3); |
| 62 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(1, 2), 5); |
| 63 | |||
| 64 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(2, 0), 0); |
| 65 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(2, 1), 3); |
| 66 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(2, 2), 6); |
| 67 | |||
| 68 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(3, 0), 1); |
| 69 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(3, 1), 2); |
| 70 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(3, 2), 7); |
| 71 | |||
| 72 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(4, 0), 0); |
| 73 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(4, 1), 5); |
| 74 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(4, 2), 6); |
| 75 | |||
| 76 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(5, 0), 1); |
| 77 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(5, 1), 4); |
| 78 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(5, 2), 7); |
| 79 | |||
| 80 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(6, 0), 2); |
| 81 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(6, 1), 4); |
| 82 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(6, 2), 7); |
| 83 | |||
| 84 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(7, 0), 3); |
| 85 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(7, 1), 5); |
| 86 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box.neighbor(7, 2), 6); |
| 87 | |||
| 88 | // Cast to int16 and check that the box is the same | ||
| 89 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Quadrilateral16> box16 = box.cast<Quadrilateral16>(); |
| 90 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(0, 0), 1); |
| 91 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(0, 1), 2); |
| 92 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(0, 2), 4); |
| 93 | |||
| 94 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(1, 0), 0); |
| 95 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(1, 1), 3); |
| 96 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(1, 2), 5); |
| 97 | |||
| 98 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(2, 0), 0); |
| 99 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(2, 1), 3); |
| 100 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(2, 2), 6); |
| 101 | |||
| 102 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(3, 0), 1); |
| 103 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(3, 1), 2); |
| 104 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(3, 2), 7); |
| 105 | |||
| 106 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(4, 0), 0); |
| 107 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(4, 1), 5); |
| 108 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(4, 2), 6); |
| 109 | |||
| 110 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(5, 0), 1); |
| 111 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(5, 1), 4); |
| 112 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(5, 2), 7); |
| 113 | |||
| 114 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(6, 0), 2); |
| 115 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(6, 1), 4); |
| 116 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(6, 2), 7); |
| 117 | |||
| 118 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(7, 0), 3); |
| 119 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(7, 1), 5); |
| 120 |
5/10✓ 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 not taken.
✓ Branch 19 taken 1 times.
|
2 | BOOST_CHECK_EQUAL(box16.neighbor(7, 2), 6); |
| 121 | |||
| 122 | 2 | const std::vector<Vec3s>& box_points = *(box.points); | |
| 123 | 2 | const std::vector<Vec3s>& box16_points = *(box16.points); | |
| 124 |
2/2✓ Branch 2 taken 8 times.
✓ Branch 3 taken 1 times.
|
18 | for (size_t i = 0; i < box.points->size(); ++i) { |
| 125 |
16/32✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 8 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 8 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 8 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 8 times.
✗ Branch 17 not taken.
✓ Branch 20 taken 8 times.
✗ Branch 21 not taken.
✓ Branch 23 taken 8 times.
✗ Branch 24 not taken.
✓ Branch 26 taken 8 times.
✗ Branch 27 not taken.
✓ Branch 30 taken 8 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 8 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 8 times.
✗ Branch 37 not taken.
✓ Branch 41 taken 8 times.
✗ Branch 42 not taken.
✓ Branch 44 taken 8 times.
✗ Branch 45 not taken.
✓ Branch 47 taken 8 times.
✗ Branch 48 not taken.
✓ Branch 50 taken 8 times.
✗ Branch 51 not taken.
✗ Branch 61 not taken.
✓ Branch 62 taken 8 times.
|
16 | EIGEN_VECTOR_IS_APPROX(box_points[i], box16_points[i], 1e-12); |
| 126 | } | ||
| 127 | 2 | } | |
| 128 | |||
| 129 | template <typename Sa, typename Sb> | ||
| 130 | 1002 | void compareShapeIntersection(const Sa& sa, const Sb& sb, | |
| 131 | const Transform3s& tf1, const Transform3s& tf2, | ||
| 132 | Scalar tol = Scalar(1e-9)) { | ||
| 133 |
1/2✓ Branch 2 taken 1002 times.
✗ Branch 3 not taken.
|
1002 | CollisionRequest request(CONTACT | DISTANCE_LOWER_BOUND, 1); |
| 134 |
2/4✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1002 times.
✗ Branch 5 not taken.
|
1002 | CollisionResult resA, resB; |
| 135 | |||
| 136 |
1/2✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
|
1002 | collide(&sa, tf1, &sa, tf2, request, resA); |
| 137 |
1/2✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
|
1002 | collide(&sb, tf1, &sb, tf2, request, resB); |
| 138 | |||
| 139 |
5/10✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 1002 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1002 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1002 times.
|
1002 | BOOST_CHECK_EQUAL(resA.isCollision(), resB.isCollision()); |
| 140 |
5/10✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 12 taken 1002 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1002 times.
✗ Branch 16 not taken.
✗ Branch 19 not taken.
✓ Branch 20 taken 1002 times.
|
1002 | BOOST_CHECK_EQUAL(resA.numContacts(), resB.numContacts()); |
| 141 | |||
| 142 |
5/6✓ Branch 1 taken 9 times.
✓ Branch 2 taken 993 times.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 6 taken 9 times.
✓ Branch 7 taken 993 times.
|
1002 | if (resA.isCollision() && resB.isCollision()) { |
| 143 |
4/8✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 9 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 9 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 9 times.
✗ Branch 11 not taken.
|
9 | Contact cA = resA.getContact(0), cB = resB.getContact(0); |
| 144 | |||
| 145 |
15/30✓ Branch 2 taken 9 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 9 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 9 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 9 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 9 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 9 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 9 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 9 times.
✗ Branch 25 not taken.
✓ Branch 27 taken 9 times.
✗ Branch 28 not taken.
✓ Branch 30 taken 9 times.
✗ Branch 31 not taken.
✓ Branch 33 taken 9 times.
✗ Branch 34 not taken.
✓ Branch 36 taken 9 times.
✗ Branch 37 not taken.
✓ Branch 39 taken 9 times.
✗ Branch 40 not taken.
✓ Branch 42 taken 9 times.
✗ Branch 43 not taken.
✓ Branch 45 taken 9 times.
✗ Branch 46 not taken.
|
9 | BOOST_TEST_MESSAGE(tf1 << '\n' |
| 146 | << cA.pos.format(pyfmt) << '\n' | ||
| 147 | << '\n' | ||
| 148 | << tf2 << '\n' | ||
| 149 | << cB.pos.format(pyfmt) << '\n'); | ||
| 150 | // Only warnings because there are still some bugs. | ||
| 151 |
7/14✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 9 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 9 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 9 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 9 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 9 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 9 times.
|
9 | BOOST_WARN_SMALL((cA.pos - cB.pos).squaredNorm(), tol); |
| 152 |
7/14✓ Branch 1 taken 9 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 9 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 9 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 9 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 9 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 9 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 9 times.
|
9 | BOOST_WARN_SMALL((cA.normal - cB.normal).squaredNorm(), tol); |
| 153 | } else { | ||
| 154 |
6/12✓ Branch 1 taken 993 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 993 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 993 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 993 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 993 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 993 times.
|
993 | BOOST_CHECK_CLOSE(resA.distance_lower_bound, resB.distance_lower_bound, |
| 155 | tol); // distances should be same | ||
| 156 | } | ||
| 157 | 1002 | } | |
| 158 | |||
| 159 | template <typename Sa, typename Sb> | ||
| 160 | 1002 | void compareShapeDistance(const Sa& sa, const Sb& sb, const Transform3s& tf1, | |
| 161 | const Transform3s& tf2, Scalar tol = Scalar(1e-9)) { | ||
| 162 |
1/2✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
|
1002 | DistanceRequest request(true); |
| 163 |
2/4✓ Branch 2 taken 1002 times.
✗ Branch 3 not taken.
✓ Branch 6 taken 1002 times.
✗ Branch 7 not taken.
|
1002 | DistanceResult resA, resB; |
| 164 | |||
| 165 |
1/2✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
|
1002 | distance(&sa, tf1, &sa, tf2, request, resA); |
| 166 |
1/2✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
|
1002 | distance(&sb, tf1, &sb, tf2, request, resB); |
| 167 | |||
| 168 |
27/54✓ Branch 2 taken 1002 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1002 times.
✗ Branch 9 not taken.
✓ Branch 12 taken 1002 times.
✗ Branch 13 not taken.
✓ Branch 15 taken 1002 times.
✗ Branch 16 not taken.
✓ Branch 18 taken 1002 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1002 times.
✗ Branch 22 not taken.
✓ Branch 24 taken 1002 times.
✗ Branch 25 not taken.
✓ Branch 28 taken 1002 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1002 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1002 times.
✗ Branch 35 not taken.
✓ Branch 38 taken 1002 times.
✗ Branch 39 not taken.
✓ Branch 41 taken 1002 times.
✗ Branch 42 not taken.
✓ Branch 44 taken 1002 times.
✗ Branch 45 not taken.
✓ Branch 47 taken 1002 times.
✗ Branch 48 not taken.
✓ Branch 50 taken 1002 times.
✗ Branch 51 not taken.
✓ Branch 53 taken 1002 times.
✗ Branch 54 not taken.
✓ Branch 56 taken 1002 times.
✗ Branch 57 not taken.
✓ Branch 59 taken 1002 times.
✗ Branch 60 not taken.
✓ Branch 62 taken 1002 times.
✗ Branch 63 not taken.
✓ Branch 66 taken 1002 times.
✗ Branch 67 not taken.
✓ Branch 69 taken 1002 times.
✗ Branch 70 not taken.
✓ Branch 72 taken 1002 times.
✗ Branch 73 not taken.
✓ Branch 76 taken 1002 times.
✗ Branch 77 not taken.
✓ Branch 79 taken 1002 times.
✗ Branch 80 not taken.
✓ Branch 82 taken 1002 times.
✗ Branch 83 not taken.
✓ Branch 85 taken 1002 times.
✗ Branch 86 not taken.
|
1002 | BOOST_TEST_MESSAGE(tf1 << '\n' |
| 169 | << resA.normal.format(pyfmt) << '\n' | ||
| 170 | << resA.nearest_points[0].format(pyfmt) << '\n' | ||
| 171 | << resA.nearest_points[1].format(pyfmt) << '\n' | ||
| 172 | << '\n' | ||
| 173 | << tf2 << '\n' | ||
| 174 | << resB.normal.format(pyfmt) << '\n' | ||
| 175 | << resB.nearest_points[0].format(pyfmt) << '\n' | ||
| 176 | << resB.nearest_points[1].format(pyfmt) << '\n'); | ||
| 177 | // TODO in one case, there is a mismatch between the distances and I cannot | ||
| 178 | // say which one is correct. To visualize the case, use script | ||
| 179 | // test/geometric_shapes.py | ||
| 180 |
6/12✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1002 times.
✗ Branch 9 not taken.
✓ Branch 13 taken 1002 times.
✗ Branch 14 not taken.
✓ Branch 16 taken 1002 times.
✗ Branch 17 not taken.
✗ Branch 20 not taken.
✓ Branch 21 taken 1002 times.
|
1002 | BOOST_WARN_CLOSE(resA.min_distance, resB.min_distance, tol); |
| 181 | // BOOST_CHECK_CLOSE(resA.min_distance, resB.min_distance, tol); | ||
| 182 | |||
| 183 | // Only warnings because there are still some bugs. | ||
| 184 |
7/14✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 8 taken 1002 times.
✗ Branch 9 not taken.
✓ Branch 11 taken 1002 times.
✗ Branch 12 not taken.
✓ Branch 16 taken 1002 times.
✗ Branch 17 not taken.
✓ Branch 19 taken 1002 times.
✗ Branch 20 not taken.
✗ Branch 23 not taken.
✓ Branch 24 taken 1002 times.
|
1002 | BOOST_WARN_SMALL((resA.normal - resA.normal).squaredNorm(), tol); |
| 185 |
7/14✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1002 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1002 times.
✗ Branch 14 not taken.
✓ Branch 18 taken 1002 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1002 times.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1002 times.
|
1002 | BOOST_WARN_SMALL( |
| 186 | (resA.nearest_points[0] - resB.nearest_points[0]).squaredNorm(), tol); | ||
| 187 |
7/14✓ Branch 1 taken 1002 times.
✗ Branch 2 not taken.
✓ Branch 5 taken 1002 times.
✗ Branch 6 not taken.
✓ Branch 10 taken 1002 times.
✗ Branch 11 not taken.
✓ Branch 13 taken 1002 times.
✗ Branch 14 not taken.
✓ Branch 18 taken 1002 times.
✗ Branch 19 not taken.
✓ Branch 21 taken 1002 times.
✗ Branch 22 not taken.
✗ Branch 25 not taken.
✓ Branch 26 taken 1002 times.
|
1002 | BOOST_WARN_SMALL( |
| 188 | (resA.nearest_points[1] - resB.nearest_points[1]).squaredNorm(), tol); | ||
| 189 | 1002 | } | |
| 190 | |||
| 191 |
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(compare_convex_box) { |
| 192 | 2 | Scalar extents[6] = {0, 0, 0, 10, 10, 10}; | |
| 193 | 2 | Scalar l = 1, w = 1, d = 1, eps = Scalar(1e-4); | |
| 194 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Box box(l * 2, w * 2, d * 2); |
| 195 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | ConvexTpl<Quadrilateral32> convex_box(buildBox(l, w, d)); |
| 196 | |||
| 197 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Transform3s tf1; |
| 198 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | Transform3s tf2; |
| 199 | |||
| 200 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | tf2.setTranslation(Vec3s(3, 0, 0)); |
| 201 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | compareShapeIntersection(box, convex_box, tf1, tf2, eps); |
| 202 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | compareShapeDistance(box, convex_box, tf1, tf2, eps); |
| 203 | |||
| 204 |
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, 0)); |
| 205 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | compareShapeIntersection(box, convex_box, tf1, tf2, eps); |
| 206 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | compareShapeDistance(box, convex_box, tf1, tf2, eps); |
| 207 | |||
| 208 |
2/2✓ Branch 0 taken 1000 times.
✓ Branch 1 taken 1 times.
|
2002 | for (int i = 0; i < 1000; ++i) { |
| 209 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | generateRandomTransform(extents, tf2); |
| 210 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | compareShapeIntersection(box, convex_box, tf1, tf2, eps); |
| 211 |
1/2✓ Branch 1 taken 1000 times.
✗ Branch 2 not taken.
|
2000 | compareShapeDistance(box, convex_box, tf1, tf2, eps); |
| 212 | } | ||
| 213 | 2 | } | |
| 214 | |||
| 215 | #ifdef COAL_HAS_QHULL | ||
| 216 | BOOST_AUTO_TEST_CASE(convex_hull_throw) { | ||
| 217 | std::shared_ptr<std::vector<Vec3s>> points( | ||
| 218 | new std::vector<Vec3s>({Vec3s(1, 1, 1), Vec3s(0, 0, 0), Vec3s(1, 0, 0)})); | ||
| 219 | |||
| 220 | BOOST_CHECK_THROW(ConvexBase32::convexHull(points, 0, false, NULL), | ||
| 221 | std::invalid_argument); | ||
| 222 | BOOST_CHECK_THROW(ConvexBase32::convexHull(points, 1, false, NULL), | ||
| 223 | std::invalid_argument); | ||
| 224 | BOOST_CHECK_THROW(ConvexBase32::convexHull(points, 2, false, NULL), | ||
| 225 | std::invalid_argument); | ||
| 226 | BOOST_CHECK_THROW(ConvexBase32::convexHull(points, 3, false, NULL), | ||
| 227 | std::invalid_argument); | ||
| 228 | } | ||
| 229 | |||
| 230 | BOOST_AUTO_TEST_CASE(convex_hull_quad) { | ||
| 231 | std::shared_ptr<std::vector<Vec3s>> points(new std::vector<Vec3s>({ | ||
| 232 | Vec3s(1, 1, 1), | ||
| 233 | Vec3s(0, 0, 0), | ||
| 234 | Vec3s(1, 0, 0), | ||
| 235 | Vec3s(0, 0, 1), | ||
| 236 | })); | ||
| 237 | |||
| 238 | ConvexBase32* convexHull = ConvexBase32::convexHull(points, 4, false, NULL); | ||
| 239 | |||
| 240 | BOOST_REQUIRE_EQUAL(convexHull->num_points, 4); | ||
| 241 | BOOST_CHECK_EQUAL((*(convexHull->neighbors))[0].count, 3); | ||
| 242 | BOOST_CHECK_EQUAL((*(convexHull->neighbors))[1].count, 3); | ||
| 243 | BOOST_CHECK_EQUAL((*(convexHull->neighbors))[2].count, 3); | ||
| 244 | delete convexHull; | ||
| 245 | } | ||
| 246 | |||
| 247 | BOOST_AUTO_TEST_CASE(convex_hull_box_like) { | ||
| 248 | std::shared_ptr<std::vector<Vec3s>> points(new std::vector<Vec3s>({ | ||
| 249 | Vec3s(1, 1, 1), | ||
| 250 | Vec3s(1, 1, -1), | ||
| 251 | Vec3s(1, -1, 1), | ||
| 252 | Vec3s(1, -1, -1), | ||
| 253 | Vec3s(-1, 1, 1), | ||
| 254 | Vec3s(-1, 1, -1), | ||
| 255 | Vec3s(-1, -1, 1), | ||
| 256 | Vec3s(-1, -1, -1), | ||
| 257 | Vec3s(0, 0, 0), | ||
| 258 | Vec3s(0, 0, Scalar(0.99)), | ||
| 259 | })); | ||
| 260 | |||
| 261 | ConvexBase32* convexHull = ConvexBase32::convexHull(points, 9, false, NULL); | ||
| 262 | |||
| 263 | BOOST_REQUIRE_EQUAL(8, convexHull->num_points); | ||
| 264 | { | ||
| 265 | const std::vector<Vec3s>& cvxhull_points = *(convexHull->points); | ||
| 266 | for (size_t i = 0; i < 8; ++i) { | ||
| 267 | BOOST_CHECK(cvxhull_points[i].cwiseAbs() == Vec3s(1, 1, 1)); | ||
| 268 | BOOST_CHECK_EQUAL((*(convexHull->neighbors))[i].count, 3); | ||
| 269 | } | ||
| 270 | } | ||
| 271 | delete convexHull; | ||
| 272 | |||
| 273 | convexHull = ConvexBase32::convexHull(points, 9, true, NULL); | ||
| 274 | ConvexTpl<Triangle32>* convex_tri = | ||
| 275 | dynamic_cast<ConvexTpl<Triangle32>*>(convexHull); | ||
| 276 | BOOST_CHECK(convex_tri != NULL); | ||
| 277 | |||
| 278 | BOOST_REQUIRE_EQUAL(8, convexHull->num_points); | ||
| 279 | { | ||
| 280 | const std::vector<Vec3s>& cvxhull_points = *(convexHull->points); | ||
| 281 | for (size_t i = 0; i < 8; ++i) { | ||
| 282 | BOOST_CHECK(cvxhull_points[i].cwiseAbs() == Vec3s(1, 1, 1)); | ||
| 283 | BOOST_CHECK((*(convexHull->neighbors))[i].count >= 3); | ||
| 284 | BOOST_CHECK((*(convexHull->neighbors))[i].count <= 6); | ||
| 285 | } | ||
| 286 | } | ||
| 287 | delete convexHull; | ||
| 288 | } | ||
| 289 | |||
| 290 | BOOST_AUTO_TEST_CASE(convex_copy_constructor) { | ||
| 291 | ConvexTpl<Triangle32>* convexHullTriCopy; | ||
| 292 | { | ||
| 293 | std::shared_ptr<std::vector<Vec3s>> points(new std::vector<Vec3s>({ | ||
| 294 | Vec3s(1, 1, 1), | ||
| 295 | Vec3s(1, 1, -1), | ||
| 296 | Vec3s(1, -1, 1), | ||
| 297 | Vec3s(1, -1, -1), | ||
| 298 | Vec3s(-1, 1, 1), | ||
| 299 | Vec3s(-1, 1, -1), | ||
| 300 | Vec3s(-1, -1, 1), | ||
| 301 | Vec3s(-1, -1, -1), | ||
| 302 | Vec3s(0, 0, 0), | ||
| 303 | })); | ||
| 304 | |||
| 305 | ConvexTpl<Triangle32>* convexHullTri = dynamic_cast<ConvexTpl<Triangle32>*>( | ||
| 306 | ConvexBase32::convexHull(points, 9, true, NULL)); | ||
| 307 | convexHullTriCopy = new ConvexTpl<Triangle32>(*convexHullTri); | ||
| 308 | BOOST_CHECK(*convexHullTri == *convexHullTriCopy); | ||
| 309 | } | ||
| 310 | ConvexTpl<Triangle32>* convexHullTriCopyOfCopy = | ||
| 311 | new ConvexTpl<Triangle32>(*convexHullTriCopy); | ||
| 312 | BOOST_CHECK(*convexHullTriCopyOfCopy == *convexHullTriCopy); | ||
| 313 | } | ||
| 314 | |||
| 315 | BOOST_AUTO_TEST_CASE(convex_clone) { | ||
| 316 | std::shared_ptr<std::vector<Vec3s>> points(new std::vector<Vec3s>({ | ||
| 317 | Vec3s(1, 1, 1), | ||
| 318 | Vec3s(1, 1, -1), | ||
| 319 | Vec3s(1, -1, 1), | ||
| 320 | Vec3s(1, -1, -1), | ||
| 321 | Vec3s(-1, 1, 1), | ||
| 322 | Vec3s(-1, 1, -1), | ||
| 323 | Vec3s(-1, -1, 1), | ||
| 324 | Vec3s(-1, -1, -1), | ||
| 325 | Vec3s(0, 0, 0), | ||
| 326 | })); | ||
| 327 | |||
| 328 | ConvexTpl<Triangle32>* convexHullTri = dynamic_cast<ConvexTpl<Triangle32>*>( | ||
| 329 | ConvexBase32::convexHull(points, 9, true, NULL)); | ||
| 330 | ConvexTpl<Triangle32>* convexHullTriCopy; | ||
| 331 | convexHullTriCopy = convexHullTri->clone(); | ||
| 332 | BOOST_CHECK(*convexHullTri == *convexHullTriCopy); | ||
| 333 | } | ||
| 334 | |||
| 335 | #endif | ||
| 336 |