VirtualFluids
0.2.0
Parallel CFD LBM Solver
Loading...
Searching...
No Matches
GbVector3DTest.cpp
Go to the documentation of this file.
1
//=======================================================================================
2
// ____ ____ __ ______ __________ __ __ __ __
3
// \ \ | | | | | _ \ |___ ___| | | | | / \ | |
4
// \ \ | | | | | |_) | | | | | | | / \ | |
5
// \ \ | | | | | _ / | | | | | | / /\ \ | |
6
// \ \ | | | | | | \ \ | | | \__/ | / ____ \ | |____
7
// \ \ | | |__| |__| \__\ |__| \________/ /__/ \__\ |_______|
8
// \ \ | | ________________________________________________________________
9
// \ \ | | | ______________________________________________________________|
10
// \ \| | | | __ __ __ __ ______ _______
11
// \ | | |_____ | | | | | | | | | _ \ / _____)
12
// \ | | _____| | | | | | | | | | | \ \ \_______
13
// \ | | | | |_____ | \_/ | | | | |_/ / _____ |
14
// \ _____| |__| |________| \_______/ |__| |______/ (_______/
15
//
16
// This file is part of VirtualFluids. VirtualFluids is free software: you can
17
// redistribute it and/or modify it under the terms of the GNU General Public
18
// License as published by the Free Software Foundation, either version 3 of
19
// the License, or (at your option) any later version.
20
//
21
// VirtualFluids is distributed in the hope that it will be useful, but WITHOUT
22
// ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
23
// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
24
// for more details.
25
//
26
// SPDX-License-Identifier: GPL-3.0-or-later
27
// SPDX-FileCopyrightText: Copyright © VirtualFluids Project contributors, see AUTHORS.md in root folder
28
//
33
//=======================================================================================
34
#include <gmock/gmock.h>
35
36
#include <cmath>
37
38
#include <
basics/geometry3d/GbVector3D.h
>
39
40
using namespace
testing
;
41
42
class
Vector3DTest
:
public
Test
43
{
44
public
:
45
GbVector3D
vec1
;
46
GbVector3D
vec2
;
47
48
void
SetUp
()
override
49
{
50
vec1
[0] =
vec1
[1] =
vec1
[2] = 4.0f;
51
vec2
[0] = 0.0f;
52
vec2
[0] = 2.4f;
53
vec2
[0] = -1.3f;
54
}
55
};
56
57
TEST_F
(
Vector3DTest
,
overloadMinusOperator
)
58
{
59
GbVector3D
vec3
;
60
vec3
[0] = vec2[0] - vec1[0];
61
vec3
[1] = vec2[1] - vec1[1];
62
vec3
[2] = vec2[2] - vec1[2];
63
64
GbVector3D
v4
= vec2 - vec1;
65
ASSERT_THAT
((
double
)
v4
[0],
DoubleEq
(
vec3
[0]));
66
ASSERT_THAT
((
double
)
v4
[1],
DoubleEq
(
vec3
[1]));
67
ASSERT_THAT
((
double
)
v4
[2],
DoubleEq
(
vec3
[2]));
68
}
69
70
TEST_F
(
Vector3DTest
,
overloadPlusOperator
)
71
{
72
GbVector3D
vec3
;
73
vec3
[0] = vec2[0] + vec1[0];
74
vec3
[1] = vec2[1] + vec1[1];
75
vec3
[2] = vec2[2] + vec1[2];
76
77
GbVector3D
v4
= vec2 + vec1;
78
ASSERT_THAT
((
double
)
v4
[0],
DoubleEq
(
vec3
[0]));
79
ASSERT_THAT
((
double
)
v4
[1],
DoubleEq
(
vec3
[1]));
80
ASSERT_THAT
((
double
)
v4
[2],
DoubleEq
(
vec3
[2]));
81
}
82
83
TEST_F
(
Vector3DTest
,
overloadTimesOperatorWithSkalarProduct
)
84
{
85
double
skalar
= vec1[0] * vec2[0] + vec1[1] * vec2[1] + vec1[2] * vec2[2];
86
ASSERT_THAT
(vec1.Dot(vec2),
DoubleEq
(
skalar
));
87
}
88
89
TEST_F
(
Vector3DTest
,
overloadTimesOperatorWithSkalarMultiplication
)
90
{
91
double
skalar
= 1.0f / 3.0f;
92
GbVector3D
vec3
;
93
vec3
[0] =
skalar
* vec1[0];
94
vec3
[1] =
skalar
* vec1[1];
95
vec3
[2] =
skalar
* vec1[2];
96
97
GbVector3D
v4
= vec1 *
skalar
;
98
99
ASSERT_THAT
((
double
)
v4
[0],
DoubleEq
(
vec3
[0]));
100
ASSERT_THAT
((
double
)
v4
[1],
DoubleEq
(
vec3
[1]));
101
ASSERT_THAT
((
double
)
v4
[2],
DoubleEq
(
vec3
[2]));
102
}
103
104
TEST_F
(
Vector3DTest
,
getLengthFromVector
)
105
{
106
GbVector3D
v;
107
v[0] = 4.0;
108
v[1] = 3.0;
109
v[2] = -1.0;
110
111
double
expected
= std::sqrt(16.0 + 9.0 + 1.0);
112
ASSERT_THAT
(v.
Length
(), testing::DoubleEq(
expected
));
113
}
114
115
TEST_F
(
Vector3DTest
,
compareTwoVectors
)
116
{
117
GbVector3D
v;
118
v[0] = vec1[0];
119
v[1] = vec1[1];
120
v[2] = vec1[2];
121
ASSERT_TRUE
(v == vec1);
122
}
123
//
124
// TEST_F(Vector3DTest, checkEuclideanDistance)
125
//{
126
// Vector3D v = Vector3D(3, 3, 3);
127
//
128
// ASSERT_FLOAT_EQ(v.getEuclideanDistanceTo(vec1), (float)sqrt(3));
129
//}
130
//
131
// TEST_F(Vector3DTest, checkEuclideanDistanceWithNullVector_ExpectNull)
132
//{
133
// Vector3D v1 = Vector3D(0.0, 0.0, 0.0);
134
// Vector3D v2 = Vector3D(0.0, 0.0, 0.0);
135
//
136
// ASSERT_THAT((double)v1.getEuclideanDistanceTo(v2), DoubleEq(0.0));
137
//}
138
//
139
// TEST(Vector3DAngleTest, checkInnerAngleBetweenToVectors_ExpectRightAngle)
140
//{
141
// Vector3D v1 = Vector3D(1.0, 4.0, -2.0);
142
// Vector3D v2 = Vector3D(-3.0, 3.0, 1);
143
//
144
// ASSERT_THAT((int)floor(v1.getInnerAngle(v2)), Eq(69));
145
//}
146
//
147
// TEST(Vector3DAngleTest, checkInnerAngleBetweenSameVectors_ExpectNull)
148
//{
149
// Vector3D v1 = Vector3D(1.0, 4.0, -2.0);
150
// Vector3D v2 = Vector3D(1.0, 4.0, -2.0);
151
//
152
// ASSERT_THAT((int)floor(v1.getInnerAngle(v2)), Eq(0.0));
153
//}
154
//
155
// TEST(Vector3DAngleTest, checkInnerAngleBetweenNullVectors_ExpectNull)
156
//{
157
// Vector3D v1 = Vector3D(0.0, 0.0, 0.0);
158
// Vector3D v2 = Vector3D(0.0, 0.0, 0.0);
159
//
160
// ASSERT_THAT((int)floor(v1.getInnerAngle(v2)), Eq(0.0));
161
//}
162
//
163
//
164
// TEST(Vector3DAngleTest, checkInnerAngleBetweenSecondNullVectors_ExpectNull)
165
//{
166
// Vector3D v1 = Vector3D(1.0, 0.0, 0.0);
167
// Vector3D v2 = Vector3D(0.0, 0.0, 0.0);
168
//
169
// ASSERT_THAT((int)floor(v1.getInnerAngle(v2)), Eq(0.0));
170
//}
171
//
172
// TEST(Vector3DAngleTest, checkInnerAngleBetweenFirstNullVectors_ExpectNull)
173
//{
174
// Vector3D v1 = Vector3D(0.0, 0.0, 0.0);
175
// Vector3D v2 = Vector3D(2.0, 0.0, 0.0);
176
//
177
// ASSERT_THAT((int)floor(v1.getInnerAngle(v2)), Eq(0.0));
178
//}
179
180
TEST_F
(
Vector3DTest
,
crossProductBetweenTwoVectors
)
181
{
182
GbVector3D
v1 =
GbVector3D
(-5.0, -5.0, 0.0);
183
GbVector3D
v2 =
GbVector3D
(5.0, 0.0, 10);
184
185
GbVector3D
crossProd
=
GbVector3D
(-50.0, 50.0, 25.0);
186
GbVector3D
testCrossProduct
= v1.
Cross
(v2);
187
188
EXPECT_THAT
(
testCrossProduct
[0],
DoubleEq
(
crossProd
[0]));
189
EXPECT_THAT
(
testCrossProduct
[1],
DoubleEq
(
crossProd
[1]));
190
EXPECT_THAT
(
testCrossProduct
[2],
DoubleEq
(
crossProd
[2]));
191
}
192
GbVector3D.h
GbVector3D
This Class provides basic 3D vector objects.
Definition
GbVector3D.h:47
Vector3DTest
Definition
GbVector3DTest.cpp:43
Vector3DTest::vec2
GbVector3D vec2
Definition
GbVector3DTest.cpp:46
Vector3DTest::SetUp
void SetUp() override
Definition
GbVector3DTest.cpp:48
Vector3DTest::vec1
GbVector3D vec1
Definition
GbVector3DTest.cpp:45
SPtr
std::shared_ptr< T > SPtr
Definition
PointerDefinitions.h:39
GbVector3D::Cross
GbVector3D Cross(const GbVector3D &rkV) const
Definition
GbVector3D.cpp:291
GbVector3D::Length
double Length() const
Definition
GbVector3D.cpp:257
TEST_F
TEST_F(Vector3DTest, overloadMinusOperator)
Definition
GbVector3DTest.cpp:57
testing
Definition
LogRedirector.cpp:39
tests
unit-tests
basics
geometry3d
GbVector3DTest.cpp
Generated on Sat Sep 12 2026 02:03:21 for VirtualFluids by
1.9.8