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
39
40using namespace testing;
41
42class Vector3DTest : public Test
43{
44public:
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
58{
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
71{
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
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
90{
91 double skalar = 1.0f / 3.0f;
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
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
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
192
This Class provides basic 3D vector objects.
Definition GbVector3D.h:47
GbVector3D vec2
void SetUp() override
GbVector3D vec1
std::shared_ptr< T > SPtr
GbVector3D Cross(const GbVector3D &rkV) const
double Length() const
TEST_F(Vector3DTest, overloadMinusOperator)