From a4036ae36d36e8f1b0f8a10d1fa4198a15d31710 Mon Sep 17 00:00:00 2001 From: Persson-dev Date: Tue, 14 May 2024 22:39:15 +0200 Subject: [PATCH] add linear system test --- test/test_vect.cpp | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/test/test_vect.cpp b/test/test_vect.cpp index a857555..62cb789 100644 --- a/test/test_vect.cpp +++ b/test/test_vect.cpp @@ -1,6 +1,25 @@ #include "Vect.h" #include "test_assert.h" +const static int EXECUTION_COUNT = 100000; +static constexpr int MATRIX_MAX_SIZE = 7; + +static int GetRandomSize() { + return rand() % MATRIX_MAX_SIZE + 1; +} + +static int GetRandomInt() { + return GetRandomSize(); +} + +static Matrix GetRandomMatrix(std::size_t a_Raw, std::size_t a_Column) { + Matrix matrix {a_Raw, a_Column}; + + std::generate(matrix.GetLineIterator(0), matrix.GetLineIterator(a_Raw), []() { return GetRandomInt(); }); + + return matrix; +} + void TestVect() { Vect vect1 {{3, 2, { 1, 2, @@ -41,8 +60,22 @@ void TestVectAffine() { test_assert(!aff.IsElementOf(Matrix::ColumnVector({1, 2, 3}))); } +void TestLinearSystem() { + for (std::size_t i = 0; i < EXECUTION_COUNT; i++) { + Vect vect = GetRandomMatrix(GetRandomSize(), GetRandomSize()); + + Matrix systeme = vect.GetLinearSystem(); + + for (std::size_t j = 0; j < vect.GetCardinal(); j++) { + Matrix nullMatrix {systeme.GetColumnCount(), 1}; + test_assert(systeme * vect.GetVector(j) == nullMatrix); + } + } +} + int main() { TestVect(); TestVectAffine(); + TestLinearSystem(); return 0; } \ No newline at end of file