fixed test

This commit is contained in:
2026-01-04 22:23:57 +03:00
parent d56d05f01e
commit 8812abdf33
2 changed files with 14 additions and 12 deletions

View File

@@ -97,7 +97,7 @@ namespace omath::detail
namespace omath namespace omath
{ {
template<class T> template<class T>
class Anchor; class VarAnchor;
template<class T, std::size_t key_size, std::array<std::uint8_t, key_size> key> template<class T, std::size_t key_size, std::array<std::uint8_t, key_size> key>
class EncryptedVariable final class EncryptedVariable final
{ {
@@ -147,17 +147,22 @@ namespace omath
{ {
decrypt(); decrypt();
} }
[[nodiscard]]
OMATH_FORCEINLINE auto drop_anchor()
{
return VarAnchor{*this};
}
}; };
template<class EncryptedVarType> template<class EncryptedVarType>
class Anchor class VarAnchor
{ {
public: public:
// ReSharper disable once CppNonExplicitConvertingConstructor // ReSharper disable once CppNonExplicitConvertingConstructor
OMATH_FORCEINLINE constexpr Anchor(EncryptedVarType& var): m_var(var) // NOLINT(*-explicit-constructor) OMATH_FORCEINLINE constexpr VarAnchor(EncryptedVarType& var): m_var(var) // NOLINT(*-explicit-constructor)
{ {
m_var.decrypt(); m_var.decrypt();
} }
OMATH_FORCEINLINE constexpr ~Anchor() OMATH_FORCEINLINE constexpr ~VarAnchor()
{ {
m_var.encrypt(); m_var.encrypt();
} }

View File

@@ -6,15 +6,12 @@
#include <omath/containers/encrypted_variable.hpp> #include <omath/containers/encrypted_variable.hpp>
TEST(Enc, Test) TEST(Enc, Test)
{ {
OMATH_DEF_CRYPT_VAR(omath::Vector3<float>, 128) var{{1.f, 2.f, 3.f}}; constexpr omath::Vector3<float> original = {1.f, 2.f, 3.f};
OMATH_DEF_CRYPT_VAR(omath::Vector3<float>, 128) var2{{1.f, 2.f, 3.f}}; OMATH_DEF_CRYPT_VAR(omath::Vector3<float>, 128) var{original};
{ {
omath::Anchor _ = {var}; omath::VarAnchor _ = var.drop_anchor();
omath::Anchor __ = {var2};
std::println("Decrypted var1: {}", var.value()); EXPECT_EQ(original, var.value());
std::println("Decrypted var2: {}", var2.value());
} }
std::println("Encrypted var1: {}", var.value()); EXPECT_NE(original, var.value());
std::println("Encrypted var2: {}", var2.value());
} }