GCC Code Coverage Report


Directory: ./
File: openvdb/openvdb/unittest/TestMetadataIO.cc
Date: 2022-07-25 17:40:05
Exec Total Coverage
Lines: 35 35 100.0%
Functions: 33 33 100.0%
Branches: 34 103 33.0%

Line Branch Exec Source
1 // Copyright Contributors to the OpenVDB Project
2 // SPDX-License-Identifier: MPL-2.0
3
4 #include <openvdb/Metadata.h>
5 #include <openvdb/Types.h>
6
7 #include <gtest/gtest.h>
8
9 #include <iostream>
10 #include <sstream>
11
12 16 class TestMetadataIO: public ::testing::Test
13 {
14 public:
15 template <typename T>
16 void test();
17 template <typename T>
18 void testMultiple();
19 };
20
21
22 namespace {
23
24 template<typename T> struct Value { static T create(int i) { return T(i); } };
25
26 template<> struct Value<std::string> {
27
1/2
✓ Branch 2 taken 3 times.
✗ Branch 3 not taken.
6 static std::string create(int i) { return "test" + std::to_string(i); }
28 };
29
30 template<typename T> struct Value<openvdb::math::Vec2<T>> {
31 using ValueType = openvdb::math::Vec2<T>;
32 2 static ValueType create(int i) { return ValueType(i, i+1); }
33 };
34 template<typename T> struct Value<openvdb::math::Vec3<T>> {
35 using ValueType = openvdb::math::Vec3<T>;
36 static ValueType create(int i) { return ValueType(i, i+1, i+2); }
37 };
38 template<typename T> struct Value<openvdb::math::Vec4<T>> {
39 using ValueType = openvdb::math::Vec4<T>;
40 static ValueType create(int i) { return ValueType(i, i+1, i+2, i+3); }
41 };
42
43 }
44
45
46 template <typename T>
47 void
48
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
16 TestMetadataIO::test()
49 {
50 using namespace openvdb;
51
52
1/2
✓ Branch 1 taken 4 times.
✗ Branch 2 not taken.
12 const T val = Value<T>::create(1);
53 TypedMetadata<T> m(val);
54
55
1/2
✓ Branch 1 taken 6 times.
✗ Branch 2 not taken.
32 std::ostringstream ostr(std::ios_base::binary);
56
57 m.write(ostr);
58
59
2/4
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
48 std::istringstream istr(ostr.str(), std::ios_base::binary);
60
61 TypedMetadata<T> tm;
62
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
16 tm.read(istr);
63
64 OPENVDB_NO_FP_EQUALITY_WARNING_BEGIN
65
66
1/14
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
16 EXPECT_EQ(val, tm.value());
67
68 OPENVDB_NO_FP_EQUALITY_WARNING_END
69 16 }
70
71 template <typename T>
72 void
73
1/2
✓ Branch 1 taken 3 times.
✗ Branch 2 not taken.
16 TestMetadataIO::testMultiple()
74 {
75 using namespace openvdb;
76
77
2/3
✓ Branch 1 taken 5 times.
✓ Branch 2 taken 1 times.
✗ Branch 3 not taken.
12 const T val1 = Value<T>::create(1), val2 = Value<T>::create(2);
78 TypedMetadata<T> m1(val1);
79 TypedMetadata<T> m2(val2);
80
81
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
32 std::ostringstream ostr(std::ios_base::binary);
82
83 m1.write(ostr);
84 m2.write(ostr);
85
86
2/4
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
✓ Branch 4 taken 5 times.
✗ Branch 5 not taken.
48 std::istringstream istr(ostr.str(), std::ios_base::binary);
87
88 TypedMetadata<T> tm1, tm2;
89
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
16 tm1.read(istr);
90
1/2
✓ Branch 1 taken 8 times.
✗ Branch 2 not taken.
16 tm2.read(istr);
91
92 OPENVDB_NO_FP_EQUALITY_WARNING_BEGIN
93
94
1/14
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
16 EXPECT_EQ(val1, tm1.value());
95
1/14
✗ Branch 0 not taken.
✓ Branch 1 taken 8 times.
✗ Branch 3 not taken.
✗ Branch 4 not taken.
✗ Branch 6 not taken.
✗ Branch 7 not taken.
✗ Branch 9 not taken.
✗ Branch 10 not taken.
✗ Branch 12 not taken.
✗ Branch 13 not taken.
✗ Branch 15 not taken.
✗ Branch 16 not taken.
✗ Branch 17 not taken.
✗ Branch 18 not taken.
16 EXPECT_EQ(val2, tm2.value());
96
97 OPENVDB_NO_FP_EQUALITY_WARNING_END
98 16 }
99
100
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testInt) { test<int>(); }
101
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleInt) { testMultiple<int>(); }
102
103
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testInt64) { test<int64_t>(); }
104
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleInt64) { testMultiple<int64_t>(); }
105
106
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testFloat) { test<float>(); }
107
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleFloat) { testMultiple<float>(); }
108
109
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testDouble) { test<double>(); }
110
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleDouble) { testMultiple<double>(); }
111
112
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testString) { test<std::string>(); }
113
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleString) { testMultiple<std::string>(); }
114
115
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testVec3R) { test<openvdb::Vec3R>(); }
116
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleVec3R) { testMultiple<openvdb::Vec3R>(); }
117
118
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testVec2i) { test<openvdb::Vec2i>(); }
119
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleVec2i) { testMultiple<openvdb::Vec2i>(); }
120
121
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testVec4d) { test<openvdb::Vec4d>(); }
122
1/2
✓ Branch 1 taken 1 times.
✗ Branch 2 not taken.
2 TEST_F(TestMetadataIO, testMultipleVec4d) { testMultiple<openvdb::Vec4d>(); }
123