- Added More Documentation

- Added some more notes to the planning doc regarding shared libraries
 - Started adding unit tests for the C++ lang library.
This commit is contained in:
2025-06-19 15:16:29 -04:00
parent 909be55ed3
commit 4d8466851c
21 changed files with 400 additions and 176 deletions

View File

@@ -12,7 +12,8 @@ add_executable(fennec-test main.cpp
tests/test_memory.h
tests/test_math.h
tests/test_lang.h
tests/lang/conditional_types.h
tests/lang/test_conditional_types.h
tests/lang/test_bits.h
)
target_link_libraries(fennec-test PRIVATE

View File

@@ -31,6 +31,11 @@ int main(int, char **)
fennec_test_spacer(2);
fennec_test_header("c++ language library");
fennec_test_spacer(2);
fennec::test::fennec_test_lang();
fennec_test_spacer(3);
fennec_test_header("math library");
fennec_test_spacer(2);
fennec::test::fennec_test_math();

View File

@@ -22,7 +22,6 @@
#include <iostream>
#include <ostream>
#include <string>
#include <cassert>
#include <fennec/lang/limits.h>
#include <fennec/math/common.h>
@@ -68,7 +67,7 @@ inline bool operator<=(const vector<ScalarT, IndicesV...>& lhs, const vector<Sca
}
template<typename ResultT>
inline void __fennec_test_run(const std::string& expression, ResultT result, ResultT expected)
inline void __fennec_test_run(const std::string& expression, const ResultT result, const ResultT expected)
{
std::cout << std::boolalpha;
std::cout << '\t' << expression << " = " << result;

View File

@@ -0,0 +1,49 @@
// =====================================================================================================================
// fennec, a free and open source game engine
// Copyright © 2025 Medusa Slockbower
//
// This program is free software: you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation, either version 3 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program. If not, see <https://www.gnu.org/licenses/>.
// =====================================================================================================================
#ifndef FENNEC_TEST_LANG_BITS_H
#define FENNEC_TEST_LANG_BITS_H
#include <fennec/lang/assert.h>
#include <fennec/lang/bits.h>
#include "../../test.h"
namespace fennec
{
namespace test
{
void fennec_test_lang_bits()
{
int a = 0x48ef13ad;
int b = 0x23e5ab9c;
fennec_test_run(fennec::bit_cast<float>(0x3ee00000), 0.4375f);
fennec_test_run(*static_cast<int*>(fennec::bit_and(&a, &b, sizeof(int))), 0x48ef13ad & 0x23e5ab9c);
fennec_test_run(*static_cast<int*>(fennec::bit_or(&a, &b, sizeof(int))), (0x48ef13ad & 0x23e5ab9c) | 0x23e5ab9c);
fennec_test_run(*static_cast<int*>(fennec::bit_xor(&a, &b, sizeof(int))), ((0x48ef13ad & 0x23e5ab9c) | 0x23e5ab9c) ^ 0x23e5ab9c);
}
}
}
#endif // FENNEC_TEST_LANG_BITS_H

View File

@@ -19,6 +19,19 @@
#ifndef FENNEC_TEST_LANG_CONDITIONAL_TYPES_H
#define FENNEC_TEST_LANG_CONDITIONAL_TYPES_H
namespace fennec
{
namespace test
{
inline void fennec_test_lang_conditional_types()
{
}
}
}
#endif // FENNEC_TEST_LANG_CONDITIONAL_TYPES_H

View File

@@ -33,8 +33,6 @@ namespace test
inline void fennec_test_math_geometric()
{
/*
fennec_test_spacer(1);
fennec_test_run(fennec::dot(vec2(1, 2), vec2(1, 2)), 5.0f);
fennec_test_run(fennec::dot(vec3(1, 2, 3), vec3(1, 2, 3)), 14.0f);
@@ -69,7 +67,7 @@ inline void fennec_test_math_geometric()
fennec_test_run(fennec::normalize(vec2(1, 1)), vec2(sqrt(2.0f) / 2.0f, sqrt(2.0f) / 2.0f));
fennec_test_run(fennec::normalize(vec3(1, 1, 1)), vec3(sqrt(3.0f) / 3.0f, sqrt(3.0f) / 3.0f, sqrt(3.0f) / 3.0f));
fennec_test_run(fennec::normalize(vec4(1, 1, 1, 1)), vec4(0.5f, 0.5f, 0.5f, 0.5f));
*/
}
}

View File

@@ -19,4 +19,25 @@
#ifndef FENNEC_TEST_LANG_H
#define FENNEC_TEST_LANG_H
#include "lang/test_bits.h"
#include "lang/test_conditional_types.h"
namespace fennec
{
namespace test
{
inline void fennec_test_lang()
{
fennec_test_subheader("bit tests");
fennec_test_spacer(2);
fennec_test_lang_bits();
fennec_test_spacer(3);
}
}
}
#endif // FENNEC_TEST_LANG_H

View File

@@ -32,7 +32,6 @@ namespace test
inline void fennec_test_math()
{
fennec_test_subheader("scalar tests");
fennec_test_spacer(2);
fennec_test_math_scalar();