1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#include "test.h"
template <class T> class ConstructorTest : public VectorTypeTest<T> {};
TYPED_TEST_SUITE_P(ConstructorTest);
TYPED_TEST_P(ConstructorTest, Default) {
using Vector_t = typename TestFixture::Vector_t;
EXPECT_TRUE((std::is_constructible<Vector_t>::value));
}
TYPED_TEST_P(ConstructorTest, Copy) {
using Vector_t = typename TestFixture::Vector_t;
EXPECT_TRUE((std::is_copy_constructible<Vector_t>::value));
}
TYPED_TEST_P(ConstructorTest, Move) {
using Vector_t = typename TestFixture::Vector_t;
EXPECT_TRUE((std::is_move_constructible<Vector_t>::value));
}
TYPED_TEST_P(ConstructorTest, FromScalar) {
using Scalar_t = typename TestFixture::Scalar_t;
using Vector_t = typename TestFixture::Vector_t;
EXPECT_TRUE((std::is_constructible<Vector_t, Scalar_t>::value));
}
TYPED_TEST_P(ConstructorTest, FromRefToScalar) {
using Scalar_t = typename TestFixture::Scalar_t;
using Vector_t = typename TestFixture::Vector_t;
EXPECT_TRUE((std::is_constructible<Vector_t, const Scalar_t &>::value));
}
TYPED_TEST_P(ConstructorTest, FromPtrToScalar) {
using Scalar_t = typename TestFixture::Scalar_t;
using Vector_t = typename TestFixture::Vector_t;
Scalar_t tmp[vecCore::VectorSize<Vector_t>()];
Scalar_t *addr = &tmp[0];
for (size_t i = 0; i < vecCore::VectorSize<Vector_t>(); i++) {
tmp[i] = static_cast<Scalar_t>(i);
}
Vector_t x = vecCore::Load<Vector_t>(addr);
for (size_t i = 0; i < vecCore::VectorSize<Vector_t>(); i++)
EXPECT_TRUE(!vecCore::MaskEmpty(x == Vector_t(Scalar_t(i))));
}
REGISTER_TYPED_TEST_SUITE_P(ConstructorTest, Default, Copy, Move, FromScalar,
FromRefToScalar, FromPtrToScalar);
#define TEST_BACKEND_P(name, x) \
INSTANTIATE_TYPED_TEST_SUITE_P(name, ConstructorTest, \
VectorTypes<vecCore::backend::x>)
#define TEST_BACKEND(x) TEST_BACKEND_P(x, x)
#include "backends.h"
|