| Line | Branch | Exec | Source |
|---|---|---|---|
| 1 | // Copyright Contributors to the OpenVDB Project | ||
| 2 | // SPDX-License-Identifier: MPL-2.0 | ||
| 3 | |||
| 4 | #include "TestHarness.h" | ||
| 5 | |||
| 6 | #include "../util.h" | ||
| 7 | |||
| 8 | #include <cppunit/extensions/HelperMacros.h> | ||
| 9 | |||
| 10 | using namespace openvdb::points; | ||
| 11 | |||
| 12 | // Configuration values for binary code | ||
| 13 | |||
| 14 | static const unittest_util::ConfigMap integral = { | ||
| 15 | { "bool", { { "_L1_", "true" }, { "_L2_", "false" } } }, | ||
| 16 | { "int16", { { "_L1_", "2" }, { "_L2_", "3" } } }, | ||
| 17 | { "int32", { { "_L1_", "2" }, { "_L2_", "3" } } }, | ||
| 18 | { "int64", { { "_L1_", "2l" }, { "_L2_", "3l" } } } | ||
| 19 | }; | ||
| 20 | |||
| 21 | static const unittest_util::ConfigMap floating = { | ||
| 22 | { "float", { { "_L1_", "1.1f" }, { "_L2_", "2.3f" } } }, | ||
| 23 | { "double", { { "_L1_", "1.1" }, { "_L2_", "2.3" } } } | ||
| 24 | }; | ||
| 25 | |||
| 26 | static const unittest_util::ConfigMap vec2 = { | ||
| 27 | { "vec2i", { { "_L1_", "{1, 2}" }, { "_L2_", "{3, 4}" } } }, | ||
| 28 | { "vec2f", { { "_L1_", "{1.1f, 2.3f}" }, { "_L2_", "{4.1f, 5.3f}" } } }, | ||
| 29 | { "vec2d", { { "_L1_", "{1.1, 2.3}" }, { "_L2_", "{4.1, 5.3}" } } } | ||
| 30 | }; | ||
| 31 | |||
| 32 | static const unittest_util::ConfigMap vec3 = { | ||
| 33 | { "vec3i", { { "_L1_", "{1, 2, 3}" }, { "_L2_", "{4, 5, 6}" } } }, | ||
| 34 | { "vec3f", { { "_L1_", "{1.1f, 2.3f, 4.3f}" }, { "_L2_", "{4.1f, 5.3f, 6.3f}" } } }, | ||
| 35 | { "vec3d", { { "_L1_", "{1.1, 2.3 , 4.3}" }, { "_L2_", "{4.1, 5.3, 6.3}" } } } | ||
| 36 | }; | ||
| 37 | |||
| 38 | static const unittest_util::ConfigMap vec4 = { | ||
| 39 | { "vec4i", { { "_L1_", "{1, 2, 3, 4}" }, { "_L2_", "{5, 6, 7, 8}" } } }, | ||
| 40 | { "vec4f", { { "_L1_", "{1.1f, 2.3f, 4.3f, 5.4f}" }, { "_L2_", "{5.1f, 6.3f, 7.3f, 8.4f}" } } }, | ||
| 41 | { "vec4d", { { "_L1_", "{1.1, 2.3, 4.3, 5.4}" }, { "_L2_", "{5.1, 6.3, 7.3, 8.4}" } } } | ||
| 42 | }; | ||
| 43 | |||
| 44 | static const unittest_util::ConfigMap mat3 = { | ||
| 45 | { "mat3f", { { "_L1_", "{1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f }" }, | ||
| 46 | { "_L2_", "{9.1f, 7.3f, -1.3f, 4.4f, -6.7f, 0.8f, 9.1f,-0.5f, 8.2f }" } } | ||
| 47 | }, | ||
| 48 | { "mat3d", { { "_L1_", "{1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2 }" }, | ||
| 49 | { "_L2_", "{9.1, 7.3, -1.3, 4.4, -6.7, 0.8, 9.1,-0.5, 8.2 }" } } | ||
| 50 | } | ||
| 51 | }; | ||
| 52 | |||
| 53 | static const unittest_util::ConfigMap mat4 = { | ||
| 54 | { "mat4f", { { "_L1_", "{1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f, 3.3f, 2.9f, 5.9f, 0.1f, 0.3f, 5.1f, 1.9f}" }, | ||
| 55 | { "_L2_", "{0.1f, 2.3f,-9.3f, 4.5f, -1.7f, 7.8f, 2.1f, 3.3f, 3.3f,-3.3f,-0.3f, 2.5f, 5.1f, 0.5f, 8.1f,-1.7f}" } } | ||
| 56 | }, | ||
| 57 | { "mat4d", { { "_L1_", "{1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2, 3.3, 2.9, 5.9, 0.1, 0.3, 5.1, 1.9}" }, | ||
| 58 | { "_L2_", "{0.1, 2.3,-9.3, 4.5, -1.7, 7.8, 2.1, 3.3, 3.3,-3.3,-0.3, 2.5, 5.1, 0.5, 8.1,-1.7}" } } | ||
| 59 | } | ||
| 60 | }; | ||
| 61 | |||
| 62 | static const unittest_util::ConfigMap string = { | ||
| 63 | { "string", { { "_L1_", "\"foo\"" }, { "_L2_", "\"bar\"" } } } | ||
| 64 | }; | ||
| 65 | |||
| 66 | |||
| 67 |
2/4✓ Branch 1 taken 18 times.
✗ Branch 2 not taken.
✓ Branch 3 taken 18 times.
✗ Branch 4 not taken.
|
18 | class TestBinary : public unittest_util::AXTestCase |
| 68 | { | ||
| 69 | public: | ||
| 70 | |||
| 71 |
3/6✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 40 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 40 times.
✗ Branch 8 not taken.
|
120 | std::string dir() const override { return GET_TEST_DIRECTORY(); } |
| 72 | |||
| 73 |
3/6✓ Branch 0 taken 1 times.
✗ Branch 1 not taken.
✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
|
4 | CPPUNIT_TEST_SUITE(TestBinary); |
| 74 |
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.
|
6 | CPPUNIT_TEST(plus); |
| 75 |
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.
|
6 | CPPUNIT_TEST(minus); |
| 76 |
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.
|
6 | CPPUNIT_TEST(mult); |
| 77 |
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.
|
6 | CPPUNIT_TEST(div); |
| 78 |
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.
|
6 | CPPUNIT_TEST(mod); |
| 79 |
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.
|
6 | CPPUNIT_TEST(btand); |
| 80 |
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.
|
6 | CPPUNIT_TEST(btor); |
| 81 |
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.
|
6 | CPPUNIT_TEST(btxor); |
| 82 |
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.
|
6 | CPPUNIT_TEST(logicaland); |
| 83 |
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.
|
6 | CPPUNIT_TEST(logicalor); |
| 84 |
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.
|
6 | CPPUNIT_TEST(equalsequals); |
| 85 |
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.
|
6 | CPPUNIT_TEST(notequals); |
| 86 |
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.
|
6 | CPPUNIT_TEST(greaterthan); |
| 87 |
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.
|
6 | CPPUNIT_TEST(lessthan); |
| 88 |
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.
|
6 | CPPUNIT_TEST(greaterthanequals); |
| 89 |
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.
|
6 | CPPUNIT_TEST(lessthanequals); |
| 90 |
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.
|
6 | CPPUNIT_TEST(shiftleft); |
| 91 |
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.
|
6 | CPPUNIT_TEST(shiftright); |
| 92 |
4/8✓ Branch 3 taken 1 times.
✗ Branch 4 not taken.
✓ Branch 6 taken 1 times.
✗ Branch 7 not taken.
✓ Branch 9 taken 1 times.
✗ Branch 10 not taken.
✓ Branch 12 taken 1 times.
✗ Branch 13 not taken.
|
4 | CPPUNIT_TEST_SUITE_END(); |
| 93 | |||
| 94 | void plus(); | ||
| 95 | void minus(); | ||
| 96 | void mult(); | ||
| 97 | void div(); | ||
| 98 | void mod(); | ||
| 99 | void btand(); | ||
| 100 | void btor(); | ||
| 101 | void btxor(); | ||
| 102 | void logicaland(); | ||
| 103 | void logicalor(); | ||
| 104 | void equalsequals(); | ||
| 105 | void notequals(); | ||
| 106 | void greaterthan(); | ||
| 107 | void lessthan(); | ||
| 108 | void greaterthanequals(); | ||
| 109 | void lessthanequals(); | ||
| 110 | void shiftleft(); | ||
| 111 | void shiftright(); | ||
| 112 | }; | ||
| 113 | |||
| 114 | CPPUNIT_TEST_SUITE_REGISTRATION(TestBinary); | ||
| 115 | |||
| 116 | |||
| 117 | void | ||
| 118 | 1 | TestBinary::plus() | |
| 119 | { | ||
| 120 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 121 | _T1_@_A1_ = _L1_ + _L2_;)"; | ||
| 122 | |||
| 123 | std::string repl; | ||
| 124 | 8 | auto generate = [&](const auto& map) { | |
| 125 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 8 times.
|
28 | for (const auto& config : map) { |
| 126 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | std::string tmp = code; |
| 127 |
2/4✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
|
20 | unittest_util::replace(tmp, "_T1_", config.first); |
| 128 |
3/6✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 20 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 20 times.
✗ Branch 8 not taken.
|
40 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 129 |
2/2✓ Branch 0 taken 40 times.
✓ Branch 1 taken 20 times.
|
60 | for (const auto& settings : config.second) { |
| 130 |
1/2✓ Branch 1 taken 40 times.
✗ Branch 2 not taken.
|
40 | unittest_util::replace(tmp, settings.first, settings.second); |
| 131 | } | ||
| 132 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | repl += tmp; |
| 133 | } | ||
| 134 | 8 | }; | |
| 135 | |||
| 136 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 137 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 138 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 139 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 140 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 141 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat3); |
| 142 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat4); |
| 143 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(string); |
| 144 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_plus.ax"); |
| 145 | |||
| 146 | const std::map<std::string, std::function<void()>> expected = { | ||
| 147 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", true); } }, |
| 148 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 5); } }, |
| 149 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 5); } }, |
| 150 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 5); } }, |
| 151 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 1.1f + 2.3f); } }, |
| 152 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 1.1 + 2.3); } }, |
| 153 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2i", [&](){ mHarness.addAttribute<openvdb::math::Vec2<int32_t>>("testvec2i", openvdb::math::Vec2<int32_t>(4,6)); } }, |
| 154 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2f", [&](){ mHarness.addAttribute<openvdb::math::Vec2<float>>("testvec2f", openvdb::math::Vec2<float>(1.1f+4.1f, 2.3f+5.3f)); } }, |
| 155 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2d", [&](){ mHarness.addAttribute<openvdb::math::Vec2<double>>("testvec2d", openvdb::math::Vec2<double>(1.1+4.1, 2.3+5.3)); } }, |
| 156 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3i", [&](){ mHarness.addAttribute<openvdb::math::Vec3<int32_t>>("testvec3i", openvdb::math::Vec3<int32_t>(5,7,9)); } }, |
| 157 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3f", [&](){ mHarness.addAttribute<openvdb::math::Vec3<float>>("testvec3f", openvdb::math::Vec3<float>(1.1f+4.1f, 2.3f+5.3f, 4.3f+6.3f)); } }, |
| 158 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec3d", [&](){ mHarness.addAttribute<openvdb::math::Vec3<double>>("testvec3d", openvdb::math::Vec3<double>(1.1+4.1, 2.3+5.3, 4.3+6.3)); } }, |
| 159 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4i", [&](){ mHarness.addAttribute<openvdb::math::Vec4<int32_t>>("testvec4i", openvdb::math::Vec4<int32_t>(6,8,10,12)); } }, |
| 160 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4f", [&](){ mHarness.addAttribute<openvdb::math::Vec4<float>>("testvec4f", openvdb::math::Vec4<float>(1.1f+5.1f, 2.3f+6.3f, 4.3f+7.3f, 5.4f+8.4f)); } }, |
| 161 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec4d", [&](){ mHarness.addAttribute<openvdb::math::Vec4<double>>("testvec4d", openvdb::math::Vec4<double>(1.1+5.1, 2.3+6.3, 4.3+7.3, 5.4+8.4)); } }, |
| 162 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3f", [&](){ mHarness.addAttribute<openvdb::math::Mat3<float>>("testmat3f", |
| 163 | 1 | openvdb::math::Mat3<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f) + | |
| 164 | 2 | openvdb::math::Mat3<float>(9.1f, 7.3f,-1.3f, 4.4f,-6.7f, 0.8f, 9.1f,-0.5f, 8.2f)); } | |
| 165 | }, | ||
| 166 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3d", [&](){ mHarness.addAttribute<openvdb::math::Mat3<double>>("testmat3d", |
| 167 | 1 | openvdb::math::Mat3<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2) + | |
| 168 | 2 | openvdb::math::Mat3<double>(9.1, 7.3,-1.3, 4.4,-6.7, 0.8, 9.1,-0.5, 8.2)); } | |
| 169 | }, | ||
| 170 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4f", [&](){ mHarness.addAttribute<openvdb::math::Mat4<float>>("testmat4f", |
| 171 | 1 | openvdb::math::Mat4<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f, 3.3f, 2.9f, 5.9f, 0.1f, 0.3f, 5.1f, 1.9f) + | |
| 172 | 2 | openvdb::math::Mat4<float>(0.1f, 2.3f,-9.3f, 4.5f, -1.7f, 7.8f, 2.1f, 3.3f, 3.3f,-3.3f,-0.3f, 2.5f, 5.1f, 0.5f, 8.1f,-1.7f)); } | |
| 173 | }, | ||
| 174 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4d", [&](){ mHarness.addAttribute<openvdb::math::Mat4<double>>("testmat4d", |
| 175 | 1 | openvdb::math::Mat4<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2, 3.3, 2.9, 5.9, 0.1, 0.3, 5.1, 1.9) + | |
| 176 | 2 | openvdb::math::Mat4<double>(0.1, 2.3,-9.3, 4.5, -1.7, 7.8, 2.1, 3.3, 3.3,-3.3,-0.3, 2.5, 5.1, 0.5, 8.1,-1.7)); } | |
| 177 | }, | ||
| 178 |
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 | { "string", [&](){ mHarness.addAttribute<std::string>("teststring", "foobar"); } } |
| 179 |
21/44✓ 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.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 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 not taken.
✓ Branch 62 taken 1 times.
✗ Branch 64 not taken.
✗ Branch 65 not taken.
|
42 | }; |
| 180 | |||
| 181 |
2/2✓ Branch 0 taken 20 times.
✓ Branch 1 taken 1 times.
|
21 | for (const auto& expc : expected) { |
| 182 |
1/2✓ Branch 1 taken 20 times.
✗ Branch 2 not taken.
|
20 | expc.second.operator()(); |
| 183 | } | ||
| 184 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_plus.ax"); |
| 185 | 1 | } | |
| 186 | |||
| 187 | |||
| 188 | void | ||
| 189 | 1 | TestBinary::minus() | |
| 190 | { | ||
| 191 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 192 | _T1_@_A1_ = _L1_ - _L2_;)"; | ||
| 193 | |||
| 194 | std::string repl; | ||
| 195 | 7 | auto generate = [&](const auto& map) { | |
| 196 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 7 times.
|
26 | for (const auto& config : map) { |
| 197 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | std::string tmp = code; |
| 198 |
2/4✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
|
19 | unittest_util::replace(tmp, "_T1_", config.first); |
| 199 |
3/6✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
|
38 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 200 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 19 times.
|
57 | for (const auto& settings : config.second) { |
| 201 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | unittest_util::replace(tmp, settings.first, settings.second); |
| 202 | } | ||
| 203 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | repl += tmp; |
| 204 | } | ||
| 205 | 7 | }; | |
| 206 | |||
| 207 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 208 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 209 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 210 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 211 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 212 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat3); |
| 213 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat4); |
| 214 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_minus.ax"); |
| 215 | |||
| 216 | const std::map<std::string, std::function<void()>> expected = { | ||
| 217 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", true); } }, |
| 218 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", -1); } }, |
| 219 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", -1); } }, |
| 220 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", -1); } }, |
| 221 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 1.1f - 2.3f); } }, |
| 222 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 1.1 - 2.3); } }, |
| 223 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2i", [&](){ mHarness.addAttribute<openvdb::math::Vec2<int32_t>>("testvec2i", openvdb::math::Vec2<int32_t>(-2,-2)); } }, |
| 224 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2f", [&](){ mHarness.addAttribute<openvdb::math::Vec2<float>>("testvec2f", openvdb::math::Vec2<float>(1.1f-4.1f, 2.3f-5.3f)); } }, |
| 225 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2d", [&](){ mHarness.addAttribute<openvdb::math::Vec2<double>>("testvec2d", openvdb::math::Vec2<double>(1.1-4.1, 2.3-5.3)); } }, |
| 226 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3i", [&](){ mHarness.addAttribute<openvdb::math::Vec3<int32_t>>("testvec3i", openvdb::math::Vec3<int32_t>(-3,-3,-3)); } }, |
| 227 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3f", [&](){ mHarness.addAttribute<openvdb::math::Vec3<float>>("testvec3f", openvdb::math::Vec3<float>(1.1f-4.1f, 2.3f-5.3f, 4.3f-6.3f)); } }, |
| 228 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec3d", [&](){ mHarness.addAttribute<openvdb::math::Vec3<double>>("testvec3d", openvdb::math::Vec3<double>(1.1-4.1, 2.3-5.3, 4.3-6.3)); } }, |
| 229 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4i", [&](){ mHarness.addAttribute<openvdb::math::Vec4<int32_t>>("testvec4i", openvdb::math::Vec4<int32_t>(-4,-4,-4,-4)); } }, |
| 230 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4f", [&](){ mHarness.addAttribute<openvdb::math::Vec4<float>>("testvec4f", openvdb::math::Vec4<float>(1.1f-5.1f, 2.3f-6.3f, 4.3f-7.3f, 5.4f-8.4f)); } }, |
| 231 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec4d", [&](){ mHarness.addAttribute<openvdb::math::Vec4<double>>("testvec4d", openvdb::math::Vec4<double>(1.1-5.1, 2.3-6.3, 4.3-7.3, 5.4-8.4)); } }, |
| 232 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3f", [&](){ mHarness.addAttribute<openvdb::math::Mat3<float>>("testmat3f", |
| 233 | 1 | openvdb::math::Mat3<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f) - | |
| 234 | 2 | openvdb::math::Mat3<float>(9.1f, 7.3f,-1.3f, 4.4f,-6.7f, 0.8f, 9.1f,-0.5f, 8.2f)); } | |
| 235 | }, | ||
| 236 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3d", [&](){ mHarness.addAttribute<openvdb::math::Mat3<double>>("testmat3d", |
| 237 | 1 | openvdb::math::Mat3<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2) - | |
| 238 | 2 | openvdb::math::Mat3<double>(9.1, 7.3,-1.3, 4.4,-6.7, 0.8, 9.1,-0.5, 8.2)); } | |
| 239 | }, | ||
| 240 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4f", [&](){ mHarness.addAttribute<openvdb::math::Mat4<float>>("testmat4f", |
| 241 | 1 | openvdb::math::Mat4<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f, 3.3f, 2.9f, 5.9f, 0.1f, 0.3f, 5.1f, 1.9f) - | |
| 242 | 2 | openvdb::math::Mat4<float>(0.1f, 2.3f,-9.3f, 4.5f, -1.7f, 7.8f, 2.1f, 3.3f, 3.3f,-3.3f,-0.3f, 2.5f, 5.1f, 0.5f, 8.1f,-1.7f)); } | |
| 243 | }, | ||
| 244 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4d", [&](){ mHarness.addAttribute<openvdb::math::Mat4<double>>("testmat4d", |
| 245 | 1 | openvdb::math::Mat4<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2, 3.3, 2.9, 5.9, 0.1, 0.3, 5.1, 1.9) - | |
| 246 | 2 | openvdb::math::Mat4<double>(0.1, 2.3,-9.3, 4.5, -1.7, 7.8, 2.1, 3.3, 3.3,-3.3,-0.3, 2.5, 5.1, 0.5, 8.1,-1.7)); } | |
| 247 | }, | ||
| 248 |
20/42✓ 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.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
|
40 | }; |
| 249 | |||
| 250 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 1 times.
|
20 | for (const auto& expc : expected) { |
| 251 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | expc.second.operator()(); |
| 252 | } | ||
| 253 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_minus.ax"); |
| 254 | 1 | } | |
| 255 | |||
| 256 | void | ||
| 257 | 1 | TestBinary::mult() | |
| 258 | { | ||
| 259 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 260 | _T1_@_A1_ = _L1_ * _L2_;)"; | ||
| 261 | |||
| 262 | std::string repl; | ||
| 263 | 7 | auto generate = [&](const auto& map) { | |
| 264 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 7 times.
|
26 | for (const auto& config : map) { |
| 265 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | std::string tmp = code; |
| 266 |
2/4✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
|
19 | unittest_util::replace(tmp, "_T1_", config.first); |
| 267 |
3/6✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
|
38 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 268 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 19 times.
|
57 | for (const auto& settings : config.second) { |
| 269 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | unittest_util::replace(tmp, settings.first, settings.second); |
| 270 | } | ||
| 271 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | repl += tmp; |
| 272 | } | ||
| 273 | 7 | }; | |
| 274 | |||
| 275 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 276 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 277 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 278 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 279 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 280 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat3); |
| 281 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat4); |
| 282 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_mult.ax"); |
| 283 | |||
| 284 | const std::map<std::string, std::function<void()>> expected = { | ||
| 285 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", false); } }, |
| 286 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 6); } }, |
| 287 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 6); } }, |
| 288 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 6); } }, |
| 289 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 1.1f * 2.3f); } }, |
| 290 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 1.1 * 2.3); } }, |
| 291 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2i", [&](){ mHarness.addAttribute<openvdb::math::Vec2<int32_t>>("testvec2i", openvdb::math::Vec2<int32_t>(3,8)); } }, |
| 292 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2f", [&](){ mHarness.addAttribute<openvdb::math::Vec2<float>>("testvec2f", openvdb::math::Vec2<float>(1.1f*4.1f, 2.3f*5.3f)); } }, |
| 293 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2d", [&](){ mHarness.addAttribute<openvdb::math::Vec2<double>>("testvec2d", openvdb::math::Vec2<double>(1.1*4.1, 2.3*5.3)); } }, |
| 294 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3i", [&](){ mHarness.addAttribute<openvdb::math::Vec3<int32_t>>("testvec3i", openvdb::math::Vec3<int32_t>(4,10,18)); } }, |
| 295 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3f", [&](){ mHarness.addAttribute<openvdb::math::Vec3<float>>("testvec3f", openvdb::math::Vec3<float>(1.1f*4.1f, 2.3f*5.3f, 4.3f*6.3f)); } }, |
| 296 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec3d", [&](){ mHarness.addAttribute<openvdb::math::Vec3<double>>("testvec3d", openvdb::math::Vec3<double>(1.1*4.1, 2.3*5.3, 4.3*6.3)); } }, |
| 297 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4i", [&](){ mHarness.addAttribute<openvdb::math::Vec4<int32_t>>("testvec4i", openvdb::math::Vec4<int32_t>(5,12,21,32)); } }, |
| 298 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4f", [&](){ mHarness.addAttribute<openvdb::math::Vec4<float>>("testvec4f", openvdb::math::Vec4<float>(1.1f*5.1f, 2.3f*6.3f, 4.3f*7.3f, 5.4f*8.4f)); } }, |
| 299 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec4d", [&](){ mHarness.addAttribute<openvdb::math::Vec4<double>>("testvec4d", openvdb::math::Vec4<double>(1.1*5.1, 2.3*6.3, 4.3*7.3, 5.4*8.4)); } }, |
| 300 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3f", [&](){ mHarness.addAttribute<openvdb::math::Mat3<float>>("testmat3f", |
| 301 | 1 | openvdb::math::Mat3<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f) * | |
| 302 | 2 | openvdb::math::Mat3<float>(9.1f, 7.3f,-1.3f, 4.4f,-6.7f, 0.8f, 9.1f,-0.5f, 8.2f)); } | |
| 303 | }, | ||
| 304 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat3d", [&](){ mHarness.addAttribute<openvdb::math::Mat3<double>>("testmat3d", |
| 305 | 1 | openvdb::math::Mat3<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2) * | |
| 306 | 2 | openvdb::math::Mat3<double>(9.1, 7.3,-1.3, 4.4,-6.7, 0.8, 9.1,-0.5, 8.2)); } | |
| 307 | }, | ||
| 308 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4f", [&](){ mHarness.addAttribute<openvdb::math::Mat4<float>>("testmat4f", |
| 309 | 1 | openvdb::math::Mat4<float>(1.1f, 2.3f, 4.3f, 5.4f, 6.7f, 7.8f, 9.1f, 4.5f, 8.2f, 3.3f, 2.9f, 5.9f, 0.1f, 0.3f, 5.1f, 1.9f) * | |
| 310 | 2 | openvdb::math::Mat4<float>(0.1f, 2.3f,-9.3f, 4.5f, -1.7f, 7.8f, 2.1f, 3.3f, 3.3f,-3.3f,-0.3f, 2.5f, 5.1f, 0.5f, 8.1f,-1.7f)); } | |
| 311 | }, | ||
| 312 |
2/4✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
✓ Branch 5 taken 1 times.
✗ Branch 6 not taken.
|
1 | { "mat4d", [&](){ mHarness.addAttribute<openvdb::math::Mat4<double>>("testmat4d", |
| 313 | 1 | openvdb::math::Mat4<double>(1.1, 2.3, 4.3, 5.4, 6.7, 7.8, 9.1, 4.5, 8.2, 3.3, 2.9, 5.9, 0.1, 0.3, 5.1, 1.9) * | |
| 314 | 2 | openvdb::math::Mat4<double>(0.1, 2.3,-9.3, 4.5, -1.7, 7.8, 2.1, 3.3, 3.3,-3.3,-0.3, 2.5, 5.1, 0.5, 8.1,-1.7)); } | |
| 315 | } | ||
| 316 |
20/42✓ 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.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✓ Branch 46 taken 1 times.
✗ Branch 47 not taken.
✓ Branch 49 taken 1 times.
✗ Branch 50 not taken.
✓ Branch 52 taken 1 times.
✗ Branch 53 not taken.
✓ Branch 55 taken 1 times.
✗ Branch 56 not taken.
✗ Branch 58 not taken.
✓ Branch 59 taken 1 times.
✗ Branch 61 not taken.
✗ Branch 62 not taken.
|
40 | }; |
| 317 | |||
| 318 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 1 times.
|
20 | for (const auto& expc : expected) { |
| 319 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | expc.second.operator()(); |
| 320 | } | ||
| 321 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_mult.ax"); |
| 322 | 1 | } | |
| 323 | |||
| 324 | |||
| 325 | void | ||
| 326 | 1 | TestBinary::div() | |
| 327 | { | ||
| 328 | // @note reverses L1 and L2 as L2 is usually larger | ||
| 329 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 330 | _T1_@_A1_ = _L2_ / _L1_;)"; | ||
| 331 | |||
| 332 | std::string repl; | ||
| 333 | 5 | auto generate = [&](const auto& map) { | |
| 334 |
2/2✓ Branch 0 taken 15 times.
✓ Branch 1 taken 5 times.
|
20 | for (const auto& config : map) { |
| 335 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | std::string tmp = code; |
| 336 |
2/4✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
|
15 | unittest_util::replace(tmp, "_T1_", config.first); |
| 337 |
3/6✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 15 times.
✗ Branch 8 not taken.
|
30 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 338 |
2/2✓ Branch 0 taken 30 times.
✓ Branch 1 taken 15 times.
|
45 | for (const auto& settings : config.second) { |
| 339 |
1/2✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
|
30 | unittest_util::replace(tmp, settings.first, settings.second); |
| 340 | } | ||
| 341 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | repl += tmp; |
| 342 | } | ||
| 343 | 5 | }; | |
| 344 | |||
| 345 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 346 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 347 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 348 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 349 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 350 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_div.ax"); |
| 351 | |||
| 352 | const std::map<std::string, std::function<void()>> expected = { | ||
| 353 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", false); } }, |
| 354 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 1); } }, |
| 355 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 1); } }, |
| 356 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 1); } }, |
| 357 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 2.3f/1.1f); } }, |
| 358 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 2.3/1.1); } }, |
| 359 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2i", [&](){ mHarness.addAttribute<openvdb::math::Vec2<int32_t>>("testvec2i", openvdb::math::Vec2<int32_t>(3,2)); } }, |
| 360 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2f", [&](){ mHarness.addAttribute<openvdb::math::Vec2<float>>("testvec2f", openvdb::math::Vec2<float>(4.1f/1.1f, 5.3f/2.3f)); } }, |
| 361 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2d", [&](){ mHarness.addAttribute<openvdb::math::Vec2<double>>("testvec2d", openvdb::math::Vec2<double>(4.1/1.1, 5.3/2.3)); } }, |
| 362 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3i", [&](){ mHarness.addAttribute<openvdb::math::Vec3<int32_t>>("testvec3i", openvdb::math::Vec3<int32_t>(4,2,2)); } }, |
| 363 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3f", [&](){ mHarness.addAttribute<openvdb::math::Vec3<float>>("testvec3f", openvdb::math::Vec3<float>(4.1f/1.1f, 5.3f/2.3f, 6.3f/4.3f)); } }, |
| 364 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec3d", [&](){ mHarness.addAttribute<openvdb::math::Vec3<double>>("testvec3d", openvdb::math::Vec3<double>(4.1/1.1, 5.3/2.3, 6.3/4.3)); } }, |
| 365 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4i", [&](){ mHarness.addAttribute<openvdb::math::Vec4<int32_t>>("testvec4i", openvdb::math::Vec4<int32_t>(5,3,2,2)); } }, |
| 366 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4f", [&](){ mHarness.addAttribute<openvdb::math::Vec4<float>>("testvec4f", openvdb::math::Vec4<float>(5.1f/1.1f, 6.3f/2.3f, 7.3f/4.3f, 8.4f/5.4f)); } }, |
| 367 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec4d", [&](){ mHarness.addAttribute<openvdb::math::Vec4<double>>("testvec4d", openvdb::math::Vec4<double>(5.1/1.1, 6.3/2.3, 7.3/4.3, 8.4/5.4)); } }, |
| 368 |
16/34✓ 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.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 1 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
|
32 | }; |
| 369 | |||
| 370 |
2/2✓ Branch 0 taken 15 times.
✓ Branch 1 taken 1 times.
|
16 | for (const auto& expc : expected) { |
| 371 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | expc.second.operator()(); |
| 372 | } | ||
| 373 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_div.ax"); |
| 374 | 1 | } | |
| 375 | |||
| 376 | |||
| 377 | void | ||
| 378 | 1 | TestBinary::mod() | |
| 379 | { | ||
| 380 | // @note reverses L1 and L2 as L2 is usually larger | ||
| 381 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 382 | _T1_@_A1_ = _L2_ % _L1_;)"; | ||
| 383 | |||
| 384 | std::string repl; | ||
| 385 | 5 | auto generate = [&](const auto& map) { | |
| 386 |
2/2✓ Branch 0 taken 15 times.
✓ Branch 1 taken 5 times.
|
20 | for (const auto& config : map) { |
| 387 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | std::string tmp = code; |
| 388 |
2/4✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
|
15 | unittest_util::replace(tmp, "_T1_", config.first); |
| 389 |
3/6✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 15 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 15 times.
✗ Branch 8 not taken.
|
30 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 390 |
2/2✓ Branch 0 taken 30 times.
✓ Branch 1 taken 15 times.
|
45 | for (const auto& settings : config.second) { |
| 391 |
1/2✓ Branch 1 taken 30 times.
✗ Branch 2 not taken.
|
30 | unittest_util::replace(tmp, settings.first, settings.second); |
| 392 | } | ||
| 393 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | repl += tmp; |
| 394 | } | ||
| 395 | 5 | }; | |
| 396 | |||
| 397 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 398 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 399 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 400 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 401 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 402 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_mod.ax"); |
| 403 | |||
| 404 | const std::map<std::string, std::function<void()>> expected = { | ||
| 405 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", false); } }, |
| 406 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 1); } }, |
| 407 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 1); } }, |
| 408 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 1); } }, |
| 409 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", std::fmod(2.3f,1.1f)); } }, |
| 410 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", std::fmod(2.3,1.1)); } }, |
| 411 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2i", [&](){ mHarness.addAttribute<openvdb::math::Vec2<int32_t>>("testvec2i", openvdb::math::Vec2<int32_t>(0,0)); } }, |
| 412 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2f", [&](){ mHarness.addAttribute<openvdb::math::Vec2<float>>("testvec2f", openvdb::math::Vec2<float>(std::fmod(4.1f,1.1f), std::fmod(5.3f,2.3f))); } }, |
| 413 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec2d", [&](){ mHarness.addAttribute<openvdb::math::Vec2<double>>("testvec2d", openvdb::math::Vec2<double>(std::fmod(4.1,1.1), std::fmod(5.3,2.3))); } }, |
| 414 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3i", [&](){ mHarness.addAttribute<openvdb::math::Vec3<int32_t>>("testvec3i", openvdb::math::Vec3<int32_t>(0,1,0)); } }, |
| 415 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec3f", [&](){ mHarness.addAttribute<openvdb::math::Vec3<float>>("testvec3f", openvdb::math::Vec3<float>(std::fmod(4.1f,1.1f), std::fmod(5.3f,2.3f), std::fmod(6.3f,4.3f))); } }, |
| 416 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec3d", [&](){ mHarness.addAttribute<openvdb::math::Vec3<double>>("testvec3d", openvdb::math::Vec3<double>(std::fmod(4.1,1.1), std::fmod(5.3,2.3), std::fmod(6.3,4.3))); } }, |
| 417 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4i", [&](){ mHarness.addAttribute<openvdb::math::Vec4<int32_t>>("testvec4i", openvdb::math::Vec4<int32_t>(0,0,1,0)); } }, |
| 418 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | { "vec4f", [&](){ mHarness.addAttribute<openvdb::math::Vec4<float>>("testvec4f", openvdb::math::Vec4<float>(std::fmod(5.1f,1.1f), std::fmod(6.3f,2.3f), std::fmod(7.3f,4.3f), std::fmod(8.4f,5.4f))); } }, |
| 419 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "vec4d", [&](){ mHarness.addAttribute<openvdb::math::Vec4<double>>("testvec4d", openvdb::math::Vec4<double>(std::fmod(5.1,1.1), std::fmod(6.3,2.3), std::fmod(7.3,4.3), std::fmod(8.4,5.4))); } }, |
| 420 |
16/34✓ 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.
✓ Branch 22 taken 1 times.
✗ Branch 23 not taken.
✓ Branch 25 taken 1 times.
✗ Branch 26 not taken.
✓ Branch 28 taken 1 times.
✗ Branch 29 not taken.
✓ Branch 31 taken 1 times.
✗ Branch 32 not taken.
✓ Branch 34 taken 1 times.
✗ Branch 35 not taken.
✓ Branch 37 taken 1 times.
✗ Branch 38 not taken.
✓ Branch 40 taken 1 times.
✗ Branch 41 not taken.
✓ Branch 43 taken 1 times.
✗ Branch 44 not taken.
✗ Branch 46 not taken.
✓ Branch 47 taken 1 times.
✗ Branch 49 not taken.
✗ Branch 50 not taken.
|
32 | }; |
| 421 | |||
| 422 |
2/2✓ Branch 0 taken 15 times.
✓ Branch 1 taken 1 times.
|
16 | for (const auto& expc : expected) { |
| 423 |
1/2✓ Branch 1 taken 15 times.
✗ Branch 2 not taken.
|
15 | expc.second.operator()(); |
| 424 | } | ||
| 425 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_mod.ax"); |
| 426 | 1 | } | |
| 427 | |||
| 428 | |||
| 429 | void | ||
| 430 | 1 | TestBinary::btand() | |
| 431 | { | ||
| 432 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 433 | _T1_@_A1_ = _L1_ & _L2_;)"; | ||
| 434 | |||
| 435 | std::string repl; | ||
| 436 | 1 | auto generate = [&](const auto& map) { | |
| 437 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : map) { |
| 438 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | std::string tmp = code; |
| 439 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | unittest_util::replace(tmp, "_T1_", config.first); |
| 440 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
|
8 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 441 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 4 times.
|
12 | for (const auto& settings : config.second) { |
| 442 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | unittest_util::replace(tmp, settings.first, settings.second); |
| 443 | } | ||
| 444 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | repl += tmp; |
| 445 | } | ||
| 446 | 1 | }; | |
| 447 | |||
| 448 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 449 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_bitand.ax"); |
| 450 | |||
| 451 | const std::map<std::string, std::function<void()>> expected = { | ||
| 452 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", false); } }, |
| 453 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 2); } }, |
| 454 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 2); } }, |
| 455 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 2); } }, |
| 456 |
5/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 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
10 | }; |
| 457 | |||
| 458 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& expc : expected) { |
| 459 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | expc.second.operator()(); |
| 460 | } | ||
| 461 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_bitand.ax"); |
| 462 | 1 | } | |
| 463 | |||
| 464 | |||
| 465 | void | ||
| 466 | 1 | TestBinary::btor() | |
| 467 | { | ||
| 468 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 469 | _T1_@_A1_ = _L1_ | _L2_;)"; | ||
| 470 | |||
| 471 | std::string repl; | ||
| 472 | 1 | auto generate = [&](const auto& map) { | |
| 473 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : map) { |
| 474 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | std::string tmp = code; |
| 475 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | unittest_util::replace(tmp, "_T1_", config.first); |
| 476 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
|
8 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 477 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 4 times.
|
12 | for (const auto& settings : config.second) { |
| 478 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | unittest_util::replace(tmp, settings.first, settings.second); |
| 479 | } | ||
| 480 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | repl += tmp; |
| 481 | } | ||
| 482 | 1 | }; | |
| 483 | |||
| 484 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 485 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_bitor.ax"); |
| 486 | |||
| 487 | const std::map<std::string, std::function<void()>> expected = { | ||
| 488 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", true); } }, |
| 489 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 3); } }, |
| 490 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 3); } }, |
| 491 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 3); } }, |
| 492 |
5/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 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
10 | }; |
| 493 | |||
| 494 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& expc : expected) { |
| 495 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | expc.second.operator()(); |
| 496 | } | ||
| 497 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_bitor.ax"); |
| 498 | 1 | } | |
| 499 | |||
| 500 | |||
| 501 | void | ||
| 502 | 1 | TestBinary::btxor() | |
| 503 | { | ||
| 504 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 505 | _T1_@_A1_ = _L1_ ^ _L2_;)"; | ||
| 506 | |||
| 507 | std::string repl; | ||
| 508 | 1 | auto generate = [&](const auto& map) { | |
| 509 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : map) { |
| 510 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | std::string tmp = code; |
| 511 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | unittest_util::replace(tmp, "_T1_", config.first); |
| 512 |
3/6✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
|
8 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 513 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 4 times.
|
12 | for (const auto& settings : config.second) { |
| 514 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | unittest_util::replace(tmp, settings.first, settings.second); |
| 515 | } | ||
| 516 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | repl += tmp; |
| 517 | } | ||
| 518 | 1 | }; | |
| 519 | |||
| 520 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 521 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_bitxor.ax"); |
| 522 | |||
| 523 | const std::map<std::string, std::function<void()>> expected = { | ||
| 524 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", true); } }, |
| 525 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 1); } }, |
| 526 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 1); } }, |
| 527 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 1); } }, |
| 528 |
5/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 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
10 | }; |
| 529 | |||
| 530 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& expc : expected) { |
| 531 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | expc.second.operator()(); |
| 532 | } | ||
| 533 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_bitxor.ax"); |
| 534 | 1 | } | |
| 535 | |||
| 536 | |||
| 537 | void | ||
| 538 | 1 | TestBinary::logicaland() | |
| 539 | { | ||
| 540 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 541 | _T1_@_A1_ = _L1_ && _L2_;)"; | ||
| 542 | |||
| 543 | std::string repl; | ||
| 544 | 2 | auto generate = [&](const auto& map) { | |
| 545 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 546 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 547 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | unittest_util::replace(tmp, "_T1_", config.first); |
| 548 |
3/6✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 549 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 550 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 551 | } | ||
| 552 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 553 | } | ||
| 554 | 2 | }; | |
| 555 | |||
| 556 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 557 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 558 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_logicaland.ax"); |
| 559 | |||
| 560 | const std::map<std::string, std::function<void()>> expected = { | ||
| 561 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", false); } }, |
| 562 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 1); } }, |
| 563 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 1); } }, |
| 564 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 1); } }, |
| 565 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 1.0f); } }, |
| 566 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 1.0); } }, |
| 567 |
7/16✓ 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 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
14 | }; |
| 568 | |||
| 569 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 1 times.
|
7 | for (const auto& expc : expected) { |
| 570 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | expc.second.operator()(); |
| 571 | } | ||
| 572 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->execute("binary_logicaland.ax"); |
| 573 | |||
| 574 | // Also test short circuiting logical op for && | ||
| 575 | |||
| 576 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.reset(); |
| 577 |
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 | this->registerTest(R"( |
| 578 | int@scircuit1 = 0; | ||
| 579 | int@scircuit2 = 1; | ||
| 580 | int@scircuit3 = 2; | ||
| 581 | int@scircuit1++ && ++int@scircuit2; | ||
| 582 | ++int@scircuit1 && ++int@scircuit3; | ||
| 583 | int@scircuit4 = 1; | ||
| 584 | int@scircuit5 = 1; | ||
| 585 | true && int@scircuit4 = 2; | ||
| 586 | false && int@scircuit5 = 2;)", | ||
| 587 | "binary_logicaland_scircuit.ax"); | ||
| 588 | |||
| 589 |
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 14 taken 1 times.
✗ Branch 15 not taken.
|
1 | mHarness.addAttributes<int32_t>(unittest_util::nameSequence("scircuit", 5), { 2, 1, 3, 2, 1 }); |
| 590 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_logicaland_scircuit.ax"); |
| 591 | 1 | } | |
| 592 | |||
| 593 | |||
| 594 | void | ||
| 595 | 1 | TestBinary::logicalor() | |
| 596 | { | ||
| 597 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 598 | _T1_@_A1_ = _L1_ || _L2_;)"; | ||
| 599 | |||
| 600 | std::string repl; | ||
| 601 | 2 | auto generate = [&](const auto& map) { | |
| 602 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 603 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 604 |
2/4✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
|
6 | unittest_util::replace(tmp, "_T1_", config.first); |
| 605 |
3/6✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + config.first); |
| 606 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 607 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 608 | } | ||
| 609 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 610 | } | ||
| 611 | 2 | }; | |
| 612 | |||
| 613 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 614 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 615 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_logicalor.ax"); |
| 616 | |||
| 617 | const std::map<std::string, std::function<void()>> expected = { | ||
| 618 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "bool", [&](){ mHarness.addAttribute<bool>("testbool", true); } }, |
| 619 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int16", [&](){ mHarness.addAttribute<int16_t>("testint16", 1); } }, |
| 620 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int32", [&](){ mHarness.addAttribute<int32_t>("testint32", 1); } }, |
| 621 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "int64", [&](){ mHarness.addAttribute<int64_t>("testint64", 1); } }, |
| 622 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "float", [&](){ mHarness.addAttribute<float>("testfloat", 1.0f); } }, |
| 623 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
2 | { "double", [&](){ mHarness.addAttribute<double>("testdouble", 1.0); } }, |
| 624 |
7/16✓ 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 not taken.
✓ Branch 20 taken 1 times.
✗ Branch 22 not taken.
✗ Branch 23 not taken.
|
14 | }; |
| 625 | |||
| 626 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 1 times.
|
7 | for (const auto& expc : expected) { |
| 627 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | expc.second.operator()(); |
| 628 | } | ||
| 629 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->execute("binary_logicalor.ax"); |
| 630 | |||
| 631 | // Also test short circuiting logical op for || | ||
| 632 | |||
| 633 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.reset(); |
| 634 |
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 | this->registerTest(R"( |
| 635 | int@scircuit1 = 0; | ||
| 636 | int@scircuit2 = 1; | ||
| 637 | int@scircuit3 = 2; | ||
| 638 | int@scircuit1++ || ++int@scircuit2; | ||
| 639 | ++int@scircuit1 || ++int@scircuit3; | ||
| 640 | int@scircuit4 = 1; | ||
| 641 | int@scircuit5 = 1; | ||
| 642 | true || int@scircuit4 = 2; | ||
| 643 | false || int@scircuit5 = 2;)", | ||
| 644 | "binary_logicalor_scircuit.ax"); | ||
| 645 | |||
| 646 |
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 14 taken 1 times.
✗ Branch 15 not taken.
|
1 | mHarness.addAttributes<int32_t>(unittest_util::nameSequence("scircuit", 5), { 2, 2, 2, 1, 2 }); |
| 647 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_logicalor_scircuit.ax"); |
| 648 | 1 | } | |
| 649 | |||
| 650 | |||
| 651 | void | ||
| 652 | 1 | TestBinary::equalsequals() | |
| 653 | { | ||
| 654 | 1 | const std::string code = R"( | |
| 655 | bool@_A1_ = _L1_ == _L2_; | ||
| 656 | bool@_A2_ = _L2_ == _L2_;)"; | ||
| 657 | |||
| 658 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 659 | std::string repl; | ||
| 660 | 7 | auto generate = [&](const auto& map) { | |
| 661 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 7 times.
|
26 | for (const auto& config : map) { |
| 662 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | std::string tmp = code; |
| 663 |
4/8✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 19 times.
✗ Branch 11 not taken.
|
38 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 664 |
4/8✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 19 times.
✗ Branch 11 not taken.
|
38 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 665 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 19 times.
|
57 | for (const auto& settings : config.second) { |
| 666 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | unittest_util::replace(tmp, settings.first, settings.second); |
| 667 | } | ||
| 668 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | repl += tmp; |
| 669 | } | ||
| 670 | 7 | }; | |
| 671 | |||
| 672 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 673 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 674 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 675 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 676 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 677 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat3); |
| 678 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat4); |
| 679 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_equalsequals.ax"); |
| 680 | |||
| 681 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 682 | |||
| 683 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 684 | std::vector<bool> results; | ||
| 685 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 1 times.
|
39 | for (size_t i = 0; i < idx-1; ++i) { |
| 686 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | results.emplace_back((i % 2 == 0) ? false : true); |
| 687 | } | ||
| 688 | |||
| 689 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 690 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_equalsequals.ax"); |
| 691 | 1 | } | |
| 692 | |||
| 693 | |||
| 694 | void | ||
| 695 | 1 | TestBinary::notequals() | |
| 696 | { | ||
| 697 | 1 | const std::string code = R"( | |
| 698 | bool@_A1_ = _L1_ != _L2_; | ||
| 699 | bool@_A2_ = _L2_ != _L2_;)"; | ||
| 700 | |||
| 701 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 702 | std::string repl; | ||
| 703 | 7 | auto generate = [&](const auto& map) { | |
| 704 |
2/2✓ Branch 0 taken 19 times.
✓ Branch 1 taken 7 times.
|
26 | for (const auto& config : map) { |
| 705 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | std::string tmp = code; |
| 706 |
4/8✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 19 times.
✗ Branch 11 not taken.
|
38 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 707 |
4/8✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 19 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 19 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 19 times.
✗ Branch 11 not taken.
|
38 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 708 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 19 times.
|
57 | for (const auto& settings : config.second) { |
| 709 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | unittest_util::replace(tmp, settings.first, settings.second); |
| 710 | } | ||
| 711 |
1/2✓ Branch 1 taken 19 times.
✗ Branch 2 not taken.
|
19 | repl += tmp; |
| 712 | } | ||
| 713 | 7 | }; | |
| 714 | |||
| 715 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 716 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 717 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec2); |
| 718 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec3); |
| 719 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(vec4); |
| 720 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat3); |
| 721 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(mat4); |
| 722 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_notequals.ax"); |
| 723 | |||
| 724 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 725 | |||
| 726 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 727 | std::vector<bool> results; | ||
| 728 |
2/2✓ Branch 0 taken 38 times.
✓ Branch 1 taken 1 times.
|
39 | for (size_t i = 0; i < idx-1; ++i) { |
| 729 |
1/2✓ Branch 1 taken 38 times.
✗ Branch 2 not taken.
|
38 | results.emplace_back((i % 2 == 1) ? false : true); |
| 730 | } | ||
| 731 | |||
| 732 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 733 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_notequals.ax"); |
| 734 | 1 | } | |
| 735 | |||
| 736 | |||
| 737 | void | ||
| 738 | 1 | TestBinary::greaterthan() | |
| 739 | { | ||
| 740 | 1 | const std::string code = R"( | |
| 741 | bool@_A1_ = _L1_ > _L2_; | ||
| 742 | bool@_A2_ = _L2_ > _L1_; | ||
| 743 | bool@_A3_ = _L2_ > _L2_;)"; | ||
| 744 | |||
| 745 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 746 | std::string repl; | ||
| 747 | 2 | auto generate = [&](const auto& map) { | |
| 748 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 749 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 750 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 751 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 752 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A3_", "test" + std::to_string(idx++)); |
| 753 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 754 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 755 | } | ||
| 756 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 757 | } | ||
| 758 | 2 | }; | |
| 759 | |||
| 760 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 761 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 762 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_greaterthan.ax"); |
| 763 | |||
| 764 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 765 | |||
| 766 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 767 | |||
| 768 | std::vector<bool> results; | ||
| 769 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : integral) { |
| 770 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 3 times.
|
4 | if (config.first == "bool") { |
| 771 | // L1 and L2 for bools are swapped | ||
| 772 | results.emplace_back(true); | ||
| 773 | results.emplace_back(false); | ||
| 774 | results.emplace_back(false); | ||
| 775 | } | ||
| 776 | else { | ||
| 777 | results.emplace_back(false); | ||
| 778 | results.emplace_back(true); | ||
| 779 | results.emplace_back(false); | ||
| 780 | } | ||
| 781 | } | ||
| 782 | |||
| 783 | const size_t typecount = floating.size(); | ||
| 784 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (size_t i = 0; i < typecount; ++i) { |
| 785 | results.emplace_back(false); | ||
| 786 | results.emplace_back(true); | ||
| 787 | results.emplace_back(false); | ||
| 788 | } | ||
| 789 | |||
| 790 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 791 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_greaterthan.ax"); |
| 792 | 1 | } | |
| 793 | |||
| 794 | |||
| 795 | void | ||
| 796 | 1 | TestBinary::lessthan() | |
| 797 | { | ||
| 798 | 1 | const std::string code = R"( | |
| 799 | bool@_A1_ = _L1_ < _L2_; | ||
| 800 | bool@_A2_ = _L2_ < _L1_; | ||
| 801 | bool@_A3_ = _L2_ < _L2_;)"; | ||
| 802 | |||
| 803 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 804 | std::string repl; | ||
| 805 | 2 | auto generate = [&](const auto& map) { | |
| 806 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 807 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 808 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 809 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 810 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A3_", "test" + std::to_string(idx++)); |
| 811 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 812 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 813 | } | ||
| 814 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 815 | } | ||
| 816 | 2 | }; | |
| 817 | |||
| 818 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 819 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 820 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_lessthan.ax"); |
| 821 | |||
| 822 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 823 | |||
| 824 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 825 | |||
| 826 | std::vector<bool> results; | ||
| 827 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : integral) { |
| 828 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 3 times.
|
4 | if (config.first == "bool") { |
| 829 | // L1 and L2 for bools are swapped | ||
| 830 | results.emplace_back(false); | ||
| 831 | results.emplace_back(true); | ||
| 832 | results.emplace_back(false); | ||
| 833 | } | ||
| 834 | else { | ||
| 835 | results.emplace_back(true); | ||
| 836 | results.emplace_back(false); | ||
| 837 | results.emplace_back(false); | ||
| 838 | } | ||
| 839 | } | ||
| 840 | |||
| 841 | const size_t typecount = floating.size(); | ||
| 842 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (size_t i = 0; i < typecount; ++i) { |
| 843 | results.emplace_back(true); | ||
| 844 | results.emplace_back(false); | ||
| 845 | results.emplace_back(false); | ||
| 846 | } | ||
| 847 | |||
| 848 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 849 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_lessthan.ax"); |
| 850 | 1 | } | |
| 851 | |||
| 852 | |||
| 853 | |||
| 854 | void | ||
| 855 | 1 | TestBinary::greaterthanequals() | |
| 856 | { | ||
| 857 | 1 | const std::string code = R"( | |
| 858 | bool@_A1_ = _L1_ >= _L2_; | ||
| 859 | bool@_A2_ = _L2_ >= _L1_; | ||
| 860 | bool@_A3_ = _L2_ >= _L2_;)"; | ||
| 861 | |||
| 862 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 863 | std::string repl; | ||
| 864 | 2 | auto generate = [&](const auto& map) { | |
| 865 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 866 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 867 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 868 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 869 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A3_", "test" + std::to_string(idx++)); |
| 870 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 871 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 872 | } | ||
| 873 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 874 | } | ||
| 875 | 2 | }; | |
| 876 | |||
| 877 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 878 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 879 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_greaterthanequals.ax"); |
| 880 | |||
| 881 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 882 | |||
| 883 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 884 | |||
| 885 | std::vector<bool> results; | ||
| 886 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : integral) { |
| 887 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 3 times.
|
4 | if (config.first == "bool") { |
| 888 | // L1 and L2 for bools are swapped | ||
| 889 | results.emplace_back(true); | ||
| 890 | results.emplace_back(false); | ||
| 891 | results.emplace_back(true); | ||
| 892 | } | ||
| 893 | else { | ||
| 894 | results.emplace_back(false); | ||
| 895 | results.emplace_back(true); | ||
| 896 | results.emplace_back(true); | ||
| 897 | } | ||
| 898 | } | ||
| 899 | |||
| 900 | const size_t typecount = floating.size(); | ||
| 901 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (size_t i = 0; i < typecount; ++i) { |
| 902 | results.emplace_back(false); | ||
| 903 | results.emplace_back(true); | ||
| 904 | results.emplace_back(true); | ||
| 905 | } | ||
| 906 | |||
| 907 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 908 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_greaterthanequals.ax"); |
| 909 | 1 | } | |
| 910 | |||
| 911 | |||
| 912 | void | ||
| 913 | 1 | TestBinary::lessthanequals() | |
| 914 | { | ||
| 915 | 1 | const std::string code = R"( | |
| 916 | bool@_A1_ = _L1_ <= _L2_; | ||
| 917 | bool@_A2_ = _L2_ <= _L1_; | ||
| 918 | bool@_A3_ = _L2_ <= _L2_;)"; | ||
| 919 | |||
| 920 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | size_t idx = 1; |
| 921 | std::string repl; | ||
| 922 | 2 | auto generate = [&](const auto& map) { | |
| 923 |
2/2✓ Branch 0 taken 6 times.
✓ Branch 1 taken 2 times.
|
8 | for (const auto& config : map) { |
| 924 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | std::string tmp = code; |
| 925 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A1_", "test" + std::to_string(idx++)); |
| 926 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A2_", "test" + std::to_string(idx++)); |
| 927 |
4/8✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 6 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 6 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 6 times.
✗ Branch 11 not taken.
|
12 | unittest_util::replace(tmp, "_A3_", "test" + std::to_string(idx++)); |
| 928 |
2/2✓ Branch 0 taken 12 times.
✓ Branch 1 taken 6 times.
|
18 | for (const auto& settings : config.second) { |
| 929 |
1/2✓ Branch 1 taken 12 times.
✗ Branch 2 not taken.
|
12 | unittest_util::replace(tmp, settings.first, settings.second); |
| 930 | } | ||
| 931 |
1/2✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
|
6 | repl += tmp; |
| 932 | } | ||
| 933 | 2 | }; | |
| 934 | |||
| 935 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 936 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(floating); |
| 937 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_relational_lessthanequals.ax"); |
| 938 | |||
| 939 |
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.
|
1 | CPPUNIT_ASSERT(idx != 0); |
| 940 | |||
| 941 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
3 | const auto names = unittest_util::nameSequence("test", idx-1); |
| 942 | |||
| 943 | std::vector<bool> results; | ||
| 944 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : integral) { |
| 945 |
2/2✓ Branch 1 taken 1 times.
✓ Branch 2 taken 3 times.
|
4 | if (config.first == "bool") { |
| 946 | // L1 and L2 for bools are swapped | ||
| 947 | results.emplace_back(false); | ||
| 948 | results.emplace_back(true); | ||
| 949 | results.emplace_back(true); | ||
| 950 | } | ||
| 951 | else { | ||
| 952 | results.emplace_back(true); | ||
| 953 | results.emplace_back(false); | ||
| 954 | results.emplace_back(true); | ||
| 955 | } | ||
| 956 | } | ||
| 957 | |||
| 958 | const size_t typecount = floating.size(); | ||
| 959 |
2/2✓ Branch 0 taken 2 times.
✓ Branch 1 taken 1 times.
|
3 | for (size_t i = 0; i < typecount; ++i) { |
| 960 | results.emplace_back(true); | ||
| 961 | results.emplace_back(false); | ||
| 962 | results.emplace_back(true); | ||
| 963 | } | ||
| 964 | |||
| 965 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttributes<bool>(names, results); |
| 966 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_relational_lessthanequals.ax"); |
| 967 | 1 | } | |
| 968 | |||
| 969 | |||
| 970 | void | ||
| 971 | 1 | TestBinary::shiftleft() | |
| 972 | { | ||
| 973 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 974 | _T1_@_A1_ = _L1_ << _L2_; | ||
| 975 | _T1_@_A2_ = _L2_ << _L1_;)"; | ||
| 976 | |||
| 977 | std::string repl; | ||
| 978 | 1 | auto generate = [&](const auto& map) { | |
| 979 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : map) { |
| 980 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | std::string tmp = code; |
| 981 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | unittest_util::replace(tmp, "_T1_", config.first); |
| 982 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
8 | unittest_util::replace(tmp, "_A1_", "test" + config.first + "1"); |
| 983 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
8 | unittest_util::replace(tmp, "_A2_", "test" + config.first + "2"); |
| 984 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 4 times.
|
12 | for (const auto& settings : config.second) { |
| 985 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | unittest_util::replace(tmp, settings.first, settings.second); |
| 986 | } | ||
| 987 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | repl += tmp; |
| 988 | } | ||
| 989 | 1 | }; | |
| 990 | |||
| 991 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 992 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_shiftleft.ax"); |
| 993 | |||
| 994 | const std::map<std::string, std::function<void()>> expected = { | ||
| 995 | 1 | { "bool", [&](){ | |
| 996 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<bool>("testbool1", true); |
| 997 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<bool>("testbool2", false); |
| 998 | 1 | } | |
| 999 | }, | ||
| 1000 | 1 | { "int16", [&](){ | |
| 1001 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int16_t>("testint161", 16); |
| 1002 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int16_t>("testint162", 12); |
| 1003 | 1 | } | |
| 1004 | }, | ||
| 1005 | 1 | { "int32", [&](){ | |
| 1006 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int32_t>("testint321", 16); |
| 1007 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int32_t>("testint322", 12); |
| 1008 | 1 | } | |
| 1009 | }, | ||
| 1010 | 1 | { "int64", [&](){ | |
| 1011 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int64_t>("testint641", 16); |
| 1012 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int64_t>("testint642", 12); |
| 1013 | 1 | } | |
| 1014 | }, | ||
| 1015 |
5/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 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
10 | }; |
| 1016 | |||
| 1017 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& expc : expected) { |
| 1018 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | expc.second.operator()(); |
| 1019 | } | ||
| 1020 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_shiftleft.ax"); |
| 1021 | 1 | } | |
| 1022 | |||
| 1023 | |||
| 1024 | void | ||
| 1025 | 1 | TestBinary::shiftright() | |
| 1026 | { | ||
| 1027 |
1/2✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
|
1 | const std::string code = R"( |
| 1028 | _T1_@_A1_ = _L1_ >> _L2_; | ||
| 1029 | _T1_@_A2_ = _L2_ >> _L1_;)"; | ||
| 1030 | |||
| 1031 | std::string repl; | ||
| 1032 | 1 | auto generate = [&](const auto& map) { | |
| 1033 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& config : map) { |
| 1034 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | std::string tmp = code; |
| 1035 |
2/4✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
|
4 | unittest_util::replace(tmp, "_T1_", config.first); |
| 1036 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
8 | unittest_util::replace(tmp, "_A1_", "test" + config.first + "1"); |
| 1037 |
4/8✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 4 times.
✗ Branch 5 not taken.
✓ Branch 7 taken 4 times.
✗ Branch 8 not taken.
✓ Branch 10 taken 4 times.
✗ Branch 11 not taken.
|
8 | unittest_util::replace(tmp, "_A2_", "test" + config.first + "2"); |
| 1038 |
2/2✓ Branch 0 taken 8 times.
✓ Branch 1 taken 4 times.
|
12 | for (const auto& settings : config.second) { |
| 1039 |
1/2✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
|
8 | unittest_util::replace(tmp, settings.first, settings.second); |
| 1040 | } | ||
| 1041 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | repl += tmp; |
| 1042 | } | ||
| 1043 | 1 | }; | |
| 1044 | |||
| 1045 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | generate(integral); |
| 1046 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
1 | this->registerTest(repl, "binary_shiftright.ax"); |
| 1047 | |||
| 1048 | const std::map<std::string, std::function<void()>> expected = { | ||
| 1049 | 1 | { "bool", [&](){ | |
| 1050 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<bool>("testbool1", true); |
| 1051 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<bool>("testbool2", false); |
| 1052 | 1 | } | |
| 1053 | }, | ||
| 1054 | 1 | { "int16", [&](){ | |
| 1055 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int16_t>("testint161", 0); |
| 1056 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int16_t>("testint162", 0); |
| 1057 | 1 | } | |
| 1058 | }, | ||
| 1059 | 1 | { "int", [&](){ | |
| 1060 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int32_t>("testint321", 0); |
| 1061 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int32_t>("testint322", 0); |
| 1062 | 1 | } | |
| 1063 | }, | ||
| 1064 | 1 | { "int64", [&](){ | |
| 1065 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int64_t>("testint641", 0); |
| 1066 |
1/2✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
|
1 | mHarness.addAttribute<int64_t>("testint642", 0); |
| 1067 | 1 | } | |
| 1068 | }, | ||
| 1069 |
5/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 not taken.
✓ Branch 14 taken 1 times.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
|
10 | }; |
| 1070 | |||
| 1071 |
2/2✓ Branch 0 taken 4 times.
✓ Branch 1 taken 1 times.
|
5 | for (const auto& expc : expected) { |
| 1072 |
1/2✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
|
4 | expc.second.operator()(); |
| 1073 | } | ||
| 1074 |
2/4✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 1 times.
✗ Branch 5 not taken.
|
2 | this->execute("binary_shiftright.ax"); |
| 1075 | 1 | } | |
| 1076 | |||
| 1077 |