libcamera: Copy Vector class files from libipa
Prepare the move of the Vector class from libipa to libcamera by copying the relevant files into the corresponding libcamera directories. The files are copied without modification. Signed-off-by: Stefan Klug <stefan.klug@ideasonboard.com> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com>
This commit is contained in:
parent
bea2db5e61
commit
e506b45822
3 changed files with 821 additions and 0 deletions
100
test/vector.cpp
Normal file
100
test/vector.cpp
Normal file
|
@ -0,0 +1,100 @@
|
|||
/* SPDX-License-Identifier: GPL-2.0-or-later */
|
||||
/*
|
||||
* Copyright (C) 2024, Ideas on Board Oy
|
||||
*
|
||||
* Vector tests
|
||||
*/
|
||||
|
||||
#include "../src/ipa/libipa/vector.h"
|
||||
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
|
||||
#include "test.h"
|
||||
|
||||
using namespace libcamera::ipa;
|
||||
|
||||
#define ASSERT_EQ(a, b) \
|
||||
if ((a) != (b)) { \
|
||||
std::cout << #a " != " #b << " (line " << __LINE__ << ")" \
|
||||
<< std::endl; \
|
||||
return TestFail; \
|
||||
}
|
||||
|
||||
class VectorTest : public Test
|
||||
{
|
||||
protected:
|
||||
int run()
|
||||
{
|
||||
Vector<double, 3> v1{ 0.0 };
|
||||
|
||||
ASSERT_EQ(v1[0], 0.0);
|
||||
ASSERT_EQ(v1[1], 0.0);
|
||||
ASSERT_EQ(v1[2], 0.0);
|
||||
|
||||
ASSERT_EQ(v1.length(), 0.0);
|
||||
ASSERT_EQ(v1.length2(), 0.0);
|
||||
|
||||
Vector<double, 3> v2{{ 1.0, 4.0, 8.0 }};
|
||||
|
||||
ASSERT_EQ(v2[0], 1.0);
|
||||
ASSERT_EQ(v2[1], 4.0);
|
||||
ASSERT_EQ(v2[2], 8.0);
|
||||
|
||||
ASSERT_EQ(v2.x(), 1.0);
|
||||
ASSERT_EQ(v2.y(), 4.0);
|
||||
ASSERT_EQ(v2.z(), 8.0);
|
||||
|
||||
ASSERT_EQ(v2.r(), 1.0);
|
||||
ASSERT_EQ(v2.g(), 4.0);
|
||||
ASSERT_EQ(v2.b(), 8.0);
|
||||
|
||||
ASSERT_EQ(v2.length2(), 81.0);
|
||||
ASSERT_EQ(v2.length(), 9.0);
|
||||
ASSERT_EQ(v2.sum(), 13.0);
|
||||
|
||||
Vector<double, 3> v3{ v2 };
|
||||
|
||||
ASSERT_EQ(v2, v3);
|
||||
|
||||
v3 = Vector<double, 3>{{ 4.0, 4.0, 4.0 }};
|
||||
|
||||
ASSERT_EQ(v2 + v3, (Vector<double, 3>{{ 5.0, 8.0, 12.0 }}));
|
||||
ASSERT_EQ(v2 + 4.0, (Vector<double, 3>{{ 5.0, 8.0, 12.0 }}));
|
||||
ASSERT_EQ(v2 - v3, (Vector<double, 3>{{ -3.0, 0.0, 4.0 }}));
|
||||
ASSERT_EQ(v2 - 4.0, (Vector<double, 3>{{ -3.0, 0.0, 4.0 }}));
|
||||
ASSERT_EQ(v2 * v3, (Vector<double, 3>{{ 4.0, 16.0, 32.0 }}));
|
||||
ASSERT_EQ(v2 * 4.0, (Vector<double, 3>{{ 4.0, 16.0, 32.0 }}));
|
||||
ASSERT_EQ(v2 / v3, (Vector<double, 3>{{ 0.25, 1.0, 2.0 }}));
|
||||
ASSERT_EQ(v2 / 4.0, (Vector<double, 3>{{ 0.25, 1.0, 2.0 }}));
|
||||
|
||||
ASSERT_EQ(v2.min(v3), (Vector<double, 3>{{ 1.0, 4.0, 4.0 }}));
|
||||
ASSERT_EQ(v2.min(4.0), (Vector<double, 3>{{ 1.0, 4.0, 4.0 }}));
|
||||
ASSERT_EQ(v2.max(v3), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));
|
||||
ASSERT_EQ(v2.max(4.0), (Vector<double, 3>{{ 4.0, 4.0, 8.0 }}));
|
||||
|
||||
ASSERT_EQ(v2.dot(v3), 52.0);
|
||||
|
||||
v2 += v3;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 5.0, 8.0, 12.0 }}));
|
||||
v2 -= v3;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 1.0, 4.0, 8.0 }}));
|
||||
v2 *= v3;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 4.0, 16.0, 32.0 }}));
|
||||
v2 /= v3;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 1.0, 4.0, 8.0 }}));
|
||||
|
||||
v2 += 4.0;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 5.0, 8.0, 12.0 }}));
|
||||
v2 -= 4.0;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 1.0, 4.0, 8.0 }}));
|
||||
v2 *= 4.0;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 4.0, 16.0, 32.0 }}));
|
||||
v2 /= 4.0;
|
||||
ASSERT_EQ(v2, (Vector<double, 3>{{ 1.0, 4.0, 8.0 }}));
|
||||
|
||||
return TestPass;
|
||||
}
|
||||
};
|
||||
|
||||
TEST_REGISTER(VectorTest)
|
Loading…
Add table
Add a link
Reference in a new issue