Updated ozz-animation to version 0.14.1 @35b2efd4

This commit is contained in:
Martin Felis
2023-03-26 13:28:12 +02:00
parent bf3189ff49
commit 15871f349c
194 changed files with 3495 additions and 1957 deletions
+4
View File
@@ -7,6 +7,7 @@ add_executable(test_endianness endianness_tests.cc)
target_link_libraries(test_endianness
ozz_base
gtest)
target_copy_shared_libraries(test_endianness)
add_test(NAME test_endianness COMMAND test_endianness)
set_target_properties(test_endianness PROPERTIES FOLDER "ozz/tests/base")
@@ -14,6 +15,7 @@ add_executable(test_log log_tests.cc)
target_link_libraries(test_log
ozz_base
gtest)
target_copy_shared_libraries(test_log)
add_test(NAME test_log COMMAND test_log)
set_target_properties(test_log PROPERTIES FOLDER "ozz/tests/base")
@@ -23,6 +25,7 @@ add_executable(test_platform
target_link_libraries(test_platform
ozz_base
gtest)
target_copy_shared_libraries(test_platform)
add_test(NAME test_platform COMMAND test_platform)
set_target_properties(test_platform PROPERTIES FOLDER "ozz/tests/base")
@@ -37,5 +40,6 @@ target_include_directories(test_fuse_base
PUBLIC "${PROJECT_SOURCE_DIR}/include")
target_link_libraries(test_fuse_base
gtest)
#target_copy_shared_libraries(test_fuse_base)
add_test(NAME test_fuse_base COMMAND test_fuse_base)
set_target_properties(test_fuse_base PROPERTIES FOLDER "ozz/tests/base")
@@ -3,6 +3,7 @@ target_include_directories(test_intrusive_list
PUBLIC "${PROJECT_SOURCE_DIR}/include")
target_link_libraries(test_intrusive_list
gtest)
target_copy_shared_libraries(test_intrusive_list)
add_test(NAME test_intrusive_list COMMAND test_intrusive_list)
set_target_properties(test_intrusive_list PROPERTIES FOLDER "ozz/tests/base")
@@ -10,6 +11,7 @@ add_executable(test_std_containers std_containers_tests.cc)
target_link_libraries(test_std_containers
ozz_base
gtest)
target_copy_shared_libraries(test_std_containers)
add_test(NAME test_std_containers COMMAND test_std_containers)
set_target_properties(test_std_containers PROPERTIES FOLDER "ozz/tests/base")
@@ -18,5 +20,6 @@ add_executable(test_std_containers_archive
target_link_libraries(test_std_containers_archive
ozz_base
gtest)
target_copy_shared_libraries(test_std_containers_archive)
add_test(NAME test_std_containers_archive COMMAND test_std_containers_archive)
set_target_properties(test_std_containers_archive PROPERTIES FOLDER "ozz/tests/base")
@@ -25,13 +25,12 @@
// //
//----------------------------------------------------------------------------//
#include "ozz/base/containers/string_archive.h"
#include "ozz/base/containers/vector_archive.h"
#include <algorithm>
#include "gtest/gtest.h"
#include "ozz/base/containers/array_archive.h"
#include "ozz/base/containers/string_archive.h"
#include "ozz/base/containers/vector_archive.h"
#include "ozz/base/io/archive.h"
TEST(string, Archive) {
@@ -123,7 +122,7 @@ TEST(Vector, Archive) {
ozz::vector<int> small_i;
i >> small_i;
EXPECT_EQ(small_o.size(), small_i.size());
for (size_t j = 0; j < empty_i.size(); ++j) {
for (size_t j = 0; j < small_i.size(); ++j) {
EXPECT_EQ(small_o[j], small_i[j]);
}
@@ -143,3 +142,45 @@ TEST(Vector, Archive) {
}
}
}
TEST(Array, Archive) {
for (int e = 0; e < 2; ++e) {
ozz::Endianness endianess = e == 0 ? ozz::kBigEndian : ozz::kLittleEndian;
ozz::io::MemoryStream stream;
ASSERT_TRUE(stream.opened());
// Writes.
ozz::io::OArchive o(&stream, endianess);
ozz::array<int, 0> empty_o;
o << empty_o;
ozz::array<int, 5> array_o{{0, 1, 2, 3, 4}};
o << array_o;
// Rewrite for the Vector reuse test.
ozz::array<int, 5> reuse_o{{5, 6, 7, 8, 9}};
o << reuse_o;
// Reads.
stream.Seek(0, ozz::io::Stream::kSet);
ozz::io::IArchive i(&stream);
ozz::array<int, 0> empty_i;
i >> empty_i;
EXPECT_EQ(empty_i.size(), 0u);
ozz::array<int, 5> array_i;
i >> array_i;
EXPECT_EQ(array_o.size(), array_i.size());
for (size_t j = 0; j < array_i.size(); ++j) {
EXPECT_EQ(array_o[j], array_i[j]);
}
i >> array_i;
EXPECT_EQ(reuse_o.size(), array_i.size());
for (size_t j = 0; j < array_i.size(); ++j) {
EXPECT_EQ(reuse_o[j], array_i[j]);
}
}
}
@@ -26,6 +26,7 @@
//----------------------------------------------------------------------------//
#include "gtest/gtest.h"
#include "ozz/base/containers/array.h"
#include "ozz/base/containers/deque.h"
#include "ozz/base/containers/list.h"
#include "ozz/base/containers/map.h"
@@ -39,6 +40,35 @@
#include "ozz/base/gtest_helper.h"
#include "ozz/base/span.h"
TEST(Allocator, Containers) {
ozz::StdAllocator<int> int_allocator;
int_allocator.deallocate(int_allocator.allocate(46), 46);
ozz::StdAllocator<float> other_allocator(int_allocator);
class Object {
public:
Object(int& _counter) : counter_(_counter) { ++counter_; }
~Object() { --counter_; }
private:
int& counter_;
};
int counter = 0;
ozz::StdAllocator<Object> ObjectAllocator;
Object* pointer = ObjectAllocator.allocate(1);
int_allocator.construct(pointer, counter);
EXPECT_EQ(counter, 1);
int_allocator.destroy(pointer);
EXPECT_EQ(counter, 0);
ObjectAllocator.deallocate(pointer, 1);
EXPECT_TRUE(int_allocator == other_allocator);
EXPECT_FALSE(int_allocator != other_allocator);
}
TEST(Vector, Containers) {
typedef ozz::vector<int> Container;
Container container;
@@ -54,6 +84,18 @@ TEST(Vector, Containers) {
Container container2 = std::move(container);
}
TEST(Array, Containers) {
typedef ozz::array<int, 4> Container;
Container container{{0, 1, 2, 3}};
EXPECT_EQ(container[0], 0);
EXPECT_EQ(container[1], 1);
EXPECT_EQ(container[2], 2);
EXPECT_EQ(container[3], 3);
Container container2 = std::move(container);
(void)container2;
}
TEST(VectorExtensions, Containers) {
typedef ozz::vector<int> Container;
Container container;
+2
View File
@@ -5,6 +5,7 @@ add_executable(test_archive
target_link_libraries(test_archive
ozz_base
gtest)
target_copy_shared_libraries(test_archive)
add_test(NAME test_archive COMMAND test_archive)
set_target_properties(test_archive PROPERTIES FOLDER "ozz/tests/base")
@@ -13,5 +14,6 @@ add_executable(test_stream
target_link_libraries(test_stream
ozz_base
gtest)
target_copy_shared_libraries(test_stream)
add_test(NAME test_stream COMMAND test_stream)
set_target_properties(test_stream PROPERTIES FOLDER "ozz/tests/base")
+4
View File
@@ -8,6 +8,7 @@ add_executable(test_math
target_link_libraries(test_math
ozz_base
gtest)
target_copy_shared_libraries(test_math)
add_test(NAME test_math COMMAND test_math)
set_target_properties(test_math PROPERTIES FOLDER "ozz/tests/base")
@@ -20,6 +21,7 @@ add_executable(test_simd_math
target_link_libraries(test_simd_math
ozz_base
gtest)
target_copy_shared_libraries(test_simd_math)
add_test(NAME test_simd_math COMMAND test_simd_math)
set_target_properties(test_simd_math PROPERTIES FOLDER "ozz/tests/base")
@@ -31,6 +33,7 @@ add_executable(test_soa_math
target_link_libraries(test_soa_math
ozz_base
gtest)
target_copy_shared_libraries(test_soa_math)
add_test(NAME test_soa_math COMMAND test_soa_math)
set_target_properties(test_soa_math PROPERTIES FOLDER "ozz/tests/base")
@@ -41,5 +44,6 @@ add_executable(test_archive_maths
target_link_libraries(test_archive_maths
ozz_base
gtest)
target_copy_shared_libraries(test_archive_maths)
add_test(NAME test_archive_maths COMMAND test_archive_maths)
set_target_properties(test_archive_maths PROPERTIES FOLDER "ozz/tests/base")
@@ -25,14 +25,12 @@
// //
//----------------------------------------------------------------------------//
#include "ozz/base/maths/simd_math.h"
#include "gtest/gtest.h"
#include "ozz/base/gtest_helper.h"
#include "ozz/base/maths/gtest_math_helper.h"
#include "ozz/base/maths/math_constant.h"
#include "ozz/base/maths/math_ex.h"
#include "ozz/base/maths/simd_math.h"
using ozz::math::Float4x4;
using ozz::math::SimdFloat4;
@@ -236,12 +234,26 @@ TEST(Float4x4Rotate, ozz_simd_math) {
EXPECT_FLOAT4x4_EQ(euler_identity, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f,
0.f, 0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f);
const Float4x4 euler = Float4x4::FromEuler(
const Float4x4 euler_yaw = Float4x4::FromEuler(
ozz::math::simd_float4::Load(ozz::math::kPi_2, 0.f, 0.f, 0.f));
EXPECT_FLOAT4x4_EQ(euler, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f, 0.f, 0.f, -1.f, 0.f,
0.f, 0.f, 0.f, 0.f, 0.f, 1.f);
EXPECT_TRUE(ozz::math::AreAllTrue3(IsNormalized(euler)));
EXPECT_TRUE(ozz::math::AreAllTrue1(IsOrthogonal(euler)));
EXPECT_FLOAT4x4_EQ(euler_yaw, 0.f, 0.f, -1.f, 0.f, 0.f, 1.f, 0.f, 0.f, 1.f,
0.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f);
EXPECT_TRUE(ozz::math::AreAllTrue3(IsNormalized(euler_yaw)));
EXPECT_TRUE(ozz::math::AreAllTrue1(IsOrthogonal(euler_yaw)));
const Float4x4 euler_pitch = Float4x4::FromEuler(
ozz::math::simd_float4::Load(0.f, ozz::math::kPi_2, 0.f, 0.f));
EXPECT_FLOAT4x4_EQ(euler_pitch, 1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f, 0.f, 0.f,
-1.f, 0.f, 0.f, 0.f, 0.f, 0.f, 1.f);
EXPECT_TRUE(ozz::math::AreAllTrue3(IsNormalized(euler_pitch)));
EXPECT_TRUE(ozz::math::AreAllTrue1(IsOrthogonal(euler_pitch)));
const Float4x4 euler_roll = Float4x4::FromEuler(
ozz::math::simd_float4::Load(0.f, 0.f, ozz::math::kPi_2, 0.f));
EXPECT_FLOAT4x4_EQ(euler_roll, 0.f, 1.f, 0.f, 0.f, -1.f, 0.f, 00.f, 0.f, 0.f,
0.f, 1.f, 0.f, 0.f, 0.f, 0.f, 1.f);
EXPECT_TRUE(ozz::math::AreAllTrue3(IsNormalized(euler_roll)));
EXPECT_TRUE(ozz::math::AreAllTrue1(IsOrthogonal(euler_roll)));
EXPECT_ASSERTION(Float4x4::FromQuaternion(
ozz::math::simd_float4::Load(1.f, 0.f, 0.f, 1.f)),
@@ -3,6 +3,7 @@ add_executable(test_memory
target_link_libraries(test_memory
ozz_base
gtest)
target_copy_shared_libraries(test_memory)
add_test(NAME test_memory COMMAND test_memory)
set_target_properties(test_memory PROPERTIES FOLDER "ozz/tests/base")
@@ -11,5 +12,6 @@ add_executable(test_unique_ptr
target_link_libraries(test_unique_ptr
ozz_base
gtest)
target_copy_shared_libraries(test_unique_ptr)
add_test(NAME test_unique_ptr COMMAND test_unique_ptr)
set_target_properties(test_unique_ptr PROPERTIES FOLDER "ozz/tests/base")
+2
View File
@@ -89,6 +89,7 @@ TEST(PointerAlignment, Platform) {
TEST(TypeSize, Platform) {
// Checks sizes.
static_assert(CHAR_BIT == 8, "Unexpected type size");
static_assert(sizeof(ozz::byte) == 1, "Unexpected type size");
static_assert(sizeof(int8_t) == 1, "Unexpected type size");
static_assert(sizeof(uint8_t) == 1, "Unexpected type size");
static_assert(sizeof(int16_t) == 2, "Unexpected type size");
@@ -107,6 +108,7 @@ TEST(TypeSize, Platform) {
static_assert((int16_t(-1) >> 1) == -1, "Unexpected type sign");
static_assert((int32_t(-1) >> 1) == -1, "Unexpected type sign");
static_assert((int64_t(-1) >> 1) == -1, "Unexpected type sign");
static_assert((ozz::byte(-1) >> 1) == 0x7f, "Unexpected type sign");
static_assert((uint8_t(-1) >> 1) == 0x7f, "Unexpected type sign");
static_assert((uint16_t(-1) >> 1) == 0x7fff, "Unexpected type sign");
static_assert((uint32_t(-1) >> 1) == 0x7fffffff, "Unexpected type sign");
+53 -9
View File
@@ -104,10 +104,10 @@ TEST(SpanAsBytes, Platform) {
ozz::span<int> si(ai);
EXPECT_EQ(si.size(), kSize);
ozz::span<const char> ab = as_bytes(si);
ozz::span<const ozz::byte> ab = as_bytes(si);
EXPECT_EQ(ab.size(), kSize * sizeof(int));
ozz::span<char> awb = as_writable_bytes(si);
ozz::span<ozz::byte> awb = as_writable_bytes(si);
EXPECT_EQ(awb.size(), kSize * sizeof(int));
}
@@ -116,17 +116,17 @@ TEST(SpanAsBytes, Platform) {
ozz::span<char> sc(ac);
EXPECT_EQ(sc.size(), kSize);
ozz::span<const char> ab = as_bytes(sc);
ozz::span<const ozz::byte> ab = as_bytes(sc);
EXPECT_EQ(ab.size(), sc.size());
ozz::span<char> awbc = as_writable_bytes(sc);
ozz::span<ozz::byte> awbc = as_writable_bytes(sc);
EXPECT_EQ(awbc.size(), sc.size());
}
{ // const
ozz::span<const int> si(ai);
EXPECT_EQ(si.size(), kSize);
ozz::span<const char> ab = as_bytes(si);
ozz::span<const ozz::byte> ab = as_bytes(si);
EXPECT_EQ(ab.size(), kSize * sizeof(int));
}
@@ -136,14 +136,14 @@ TEST(SpanAsBytes, Platform) {
ozz::span<const char> sc(ac);
EXPECT_EQ(sc.size(), kSize);
ozz::span<const char> ab = as_bytes(sc);
ozz::span<const ozz::byte> ab = as_bytes(sc);
EXPECT_EQ(ab.size(), sc.size());
}
}
TEST(SpanFill, Platform) {
alignas(alignof(int)) char abuffer[16];
ozz::span<char> src(abuffer);
alignas(alignof(int)) ozz::byte abuffer[16];
ozz::span<ozz::byte> src(abuffer);
ozz::span<int> ispan1 = ozz::fill_span<int>(src, 3);
EXPECT_EQ(ispan1.size(), 3u);
@@ -152,7 +152,7 @@ TEST(SpanFill, Platform) {
EXPECT_TRUE(src.empty());
EXPECT_ASSERTION(ozz::fill_span<int>(src, 1), "Invalid range.");
// Bad aligment
// Bad alignment
src = ozz::make_span(abuffer);
ozz::span<char> cspan = ozz::fill_span<char>(src, 1);
@@ -181,3 +181,47 @@ TEST(SpanRangeLoop, Platform) {
i++;
}
}
TEST(SpanSubSpan, Platform) {
const size_t kSize = 46;
size_t ai[kSize];
for (size_t i = 0; i < kSize; ++i) {
ai[i] = i;
}
{ // empty
ozz::span<size_t> eai;
ozz::span<size_t> seai = eai.subspan(0, 0);
EXPECT_EQ(seai.size(), 0u);
}
{ // subspan
ozz::span<size_t> ncai(ai);
EXPECT_ASSERTION(ncai.subspan(kSize, 1), " count out of range");
EXPECT_ASSERTION(ncai.subspan(1, kSize), " count out of range");
EXPECT_ASSERTION(ncai.subspan(kSize + 1, 0), "Offset out of range");
EXPECT_ASSERTION(ncai.subspan(0, kSize + 1), "Count out of range");
EXPECT_EQ(ncai.subspan(0, 0).size(), 0u);
EXPECT_EQ(ncai.subspan(0, kSize).size(), kSize);
EXPECT_EQ(ncai.subspan(0, kSize - 10)[0], 0u);
EXPECT_EQ(ncai.subspan(10, kSize - 10).size(), kSize - 10);
EXPECT_EQ(ncai.subspan(10, kSize - 10)[0], 10u);
EXPECT_EQ(ncai.subspan(0, kSize - 10).size(), kSize - 10);
}
{ // first - last
ozz::span<size_t> ncai(ai);
EXPECT_ASSERTION(ncai.first(kSize + 1), "Count out of range");
EXPECT_EQ(ncai.first(0).size(), 0u);
EXPECT_EQ(ncai.first(10).size(), 10u);
EXPECT_EQ(ncai.first(10)[0], 0u);
EXPECT_ASSERTION(ncai.last(kSize + 1), "Count out of range");
EXPECT_EQ(ncai.last(0).size(), 0u);
EXPECT_EQ(ncai.last(10).size(), 10u);
EXPECT_EQ(ncai.last(10)[0], kSize - 10);
}
}