Updated ozz-animation to version 0.14.1 @35b2efd4
This commit is contained in:
@@ -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")
|
||||
|
||||
+46
-5
@@ -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;
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user