Adds new flm and flt migration test suites
This commit is contained in:
1 parent
501bd2b4b8
commit
4e29022c06
5 files changed
+300
No files matched your search
@@ -0,0 +1,75 @@
|
||||
/**
|
||||
* @file test_flm_db_impl_custom.cpp
|
||||
* @brief Tests für DatabaseInterfaceImplCustom (flm_db_impl_custom.cpp/.h)
|
||||
*
|
||||
* Die DB-Methoden selbst (updateStatus/setUsedBy) benötigen eine live
|
||||
* Datenbankverbindung und laufen daher nur im Integrationstest flmTests
|
||||
* (docker: make flmTests). Diese Unit-Tests sichern die Qt6-relevante Kopplung
|
||||
* an den generierten Basistyp flm_db_impl.h ab: Klassenhierarchie,
|
||||
* Override-Signaturen und die Enum-Konvertierung (static_cast<int>), die
|
||||
* flm_db_impl_custom.cpp für Status-Vergleich und SQL-Bind verwendet.
|
||||
*/
|
||||
|
||||
#include <FileManagement/flm_db_impl_custom.h>
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
#include <type_traits>
|
||||
|
||||
/**
|
||||
* @test DatabaseInterfaceImplCustom muss final sein und vom generierten
|
||||
* DatabaseInterfaceImpl (flm_db_impl.h) erben.
|
||||
*/
|
||||
TEST(flm_db_impl_custom, CustomClassIsFinalDerivedFromGeneratedBase)
|
||||
{
|
||||
static_assert(std::is_final<FileManagement::DatabaseInterfaceImplCustom>::value,
|
||||
"DatabaseInterfaceImplCustom muss final sein");
|
||||
static_assert(std::is_base_of<FileManagement::DatabaseInterfaceImpl,
|
||||
FileManagement::DatabaseInterfaceImplCustom>::value,
|
||||
"DatabaseInterfaceImplCustom muss von DatabaseInterfaceImpl erben");
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
/**
|
||||
* @test Die generierte Basis DatabaseInterfaceImpl ist abstrakt (sie
|
||||
* implementiert updateStatus/setUsedBy nicht); die Custom-Klasse muss
|
||||
* durch ihre beiden Overrides konkret sein.
|
||||
*/
|
||||
TEST(flm_db_impl_custom, OverridesAllPureVirtualMethodsOfGeneratedBase)
|
||||
{
|
||||
static_assert(std::is_abstract<FileManagement::DatabaseInterfaceImpl>::value,
|
||||
"generierte Basis muss abstrakt sein");
|
||||
static_assert(!std::is_abstract<FileManagement::DatabaseInterfaceImplCustom>::value,
|
||||
"Custom-Klasse muss alle pure-virtual Methoden überschreiben");
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
/**
|
||||
* @test Die Override-Signaturen müssen exakt den Deklarationen in der
|
||||
* generierten Basis flm_db.h entsprechen (const FileStatus&/const bool&).
|
||||
*/
|
||||
TEST(flm_db_impl_custom, OverrideSignaturesMatchGeneratedBase)
|
||||
{
|
||||
using UpdateStatus =
|
||||
bool (FileManagement::DatabaseInterfaceImplCustom::*)(int, const FileManagement::FileStatus &, int);
|
||||
using SetUsedBy =
|
||||
bool (FileManagement::DatabaseInterfaceImplCustom::*)(int, const bool &, int, int);
|
||||
|
||||
static_assert(std::is_same<UpdateStatus,
|
||||
decltype(&FileManagement::DatabaseInterfaceImplCustom::updateStatus)>::value,
|
||||
"updateStatus-Signatur muss (int, const FileStatus&, int) sein");
|
||||
static_assert(std::is_same<SetUsedBy,
|
||||
decltype(&FileManagement::DatabaseInterfaceImplCustom::setUsedBy)>::value,
|
||||
"setUsedBy-Signatur muss (int, const bool&, int, int) sein");
|
||||
SUCCEED();
|
||||
}
|
||||
|
||||
/**
|
||||
* @test flm_db_impl_custom.cpp vergleicht status gegen FileStatus::Deleted
|
||||
* bzw. FileStatus::Valid und bindet static_cast<int>(status) an :st —
|
||||
* die Enum-Werte sind der Vertrag der geänderten Logik.
|
||||
*/
|
||||
TEST(flm_db_impl_custom, StatusEnumValuesMatchSqlBindConversion)
|
||||
{
|
||||
EXPECT_EQ(static_cast<int>(FileManagement::FileStatus::Valid), 0);
|
||||
EXPECT_EQ(static_cast<int>(FileManagement::FileStatus::Deleted), 1);
|
||||
}
|
||||
Reference in new issue
Block a user