Skip to content

Commit 0407c65

Browse files
committed
Added and improved TypeList unit tests
Signed-off-by: Nick Avramoussis <[email protected]>
1 parent 7175c6c commit 0407c65

File tree

1 file changed

+60
-0
lines changed

1 file changed

+60
-0
lines changed

openvdb/openvdb/unittest/TestTypes.cc

Lines changed: 60 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -486,6 +486,7 @@ TEST_F(TestTypes, testTypeList)
486486

487487
// Unique
488488
STATIC_ASSERT((std::is_same<IntTypes::Unique<>, IntTypes>::value));
489+
STATIC_ASSERT((std::is_same<IntTypes::Unique<IntTypes>, IntTypes>::value));
489490
STATIC_ASSERT((std::is_same<EmptyList::Unique<>, EmptyList>::value));
490491

491492
// Front/Back
@@ -526,11 +527,14 @@ TEST_F(TestTypes, testTypeList)
526527
// Test some methods on lists with duplicate types
527528
using DuplicateIntTypes = TypeList<Int32, Int16, Int64, Int16>;
528529
using DuplicateRealTypes = TypeList<float, float, float, float>;
530+
529531
STATIC_ASSERT((DuplicateIntTypes::Size == 4));
530532
STATIC_ASSERT((DuplicateRealTypes::Size == 4));
531533
STATIC_ASSERT((DuplicateIntTypes::Index<Int16> == 1));
532534
STATIC_ASSERT((std::is_same<DuplicateIntTypes::Unique<>, TypeList<Int32, Int16, Int64>>::value));
533535
STATIC_ASSERT((std::is_same<DuplicateRealTypes::Unique<>, TypeList<float>>::value));
536+
STATIC_ASSERT((std::is_same<DuplicateRealTypes::Unique<DuplicateIntTypes>,
537+
TypeList<float, Int32, Int16, Int64>>::value));
534538

535539
//
536540

@@ -773,3 +777,59 @@ TEST_F(TestTypes, testPromoteType)
773777
CHECK_PROMOTED_DOUBLE_MATH_TYPE(Mat3)
774778
CHECK_PROMOTED_DOUBLE_MATH_TYPE(Mat4)
775779
}
780+
781+
template <typename T> struct IsRegistered { inline void operator()() { EXPECT_TRUE(T::isRegistered()); } };
782+
template <typename T> struct IsRegisteredType { inline void operator()() { EXPECT_TRUE(T::isRegisteredType()); } };
783+
template <typename GridT> struct GridListContains { inline void operator()() { STATIC_ASSERT((GridTypes::Contains<GridT>)); } };
784+
template <typename GridT> struct AttrListContains { inline void operator()() { STATIC_ASSERT((AttributeTypes::Contains<GridT>)); } };
785+
786+
787+
TEST_F(TestTypes, testOpenVDBTypeLists)
788+
{
789+
openvdb::initialize();
790+
791+
#define CHECK_TYPE_LIST_IS_VALID(LIST_T) \
792+
STATIC_ASSERT((LIST_T::Size > 0)); \
793+
STATIC_ASSERT((std::is_same<LIST_T::Unique<>, LIST_T>::value));
794+
795+
CHECK_TYPE_LIST_IS_VALID(GridTypes)
796+
CHECK_TYPE_LIST_IS_VALID(FloatGridTypes)
797+
CHECK_TYPE_LIST_IS_VALID(IntegerGridTypes)
798+
CHECK_TYPE_LIST_IS_VALID(ScalarGridTypes)
799+
CHECK_TYPE_LIST_IS_VALID(Vec3GridTypes)
800+
801+
GridTypes::foreach<IsRegistered>();
802+
803+
FloatGridTypes::foreach<GridListContains>();
804+
IntegerGridTypes::foreach<GridListContains>();
805+
ScalarGridTypes::foreach<GridListContains>();
806+
Vec3GridTypes::foreach<GridListContains>();
807+
808+
CHECK_TYPE_LIST_IS_VALID(AttributeTypes)
809+
CHECK_TYPE_LIST_IS_VALID(IntegerAttributeTypes)
810+
CHECK_TYPE_LIST_IS_VALID(ScalarAttributeTypes)
811+
CHECK_TYPE_LIST_IS_VALID(Vec3AttributeTypes)
812+
CHECK_TYPE_LIST_IS_VALID(Mat3AttributeTypes)
813+
CHECK_TYPE_LIST_IS_VALID(Mat4AttributeTypes)
814+
CHECK_TYPE_LIST_IS_VALID(QuatAttributeTypes)
815+
816+
AttributeTypes::foreach<IsRegistered>();
817+
818+
FloatAttributeTypes::foreach<AttrListContains>();
819+
IntegerAttributeTypes::foreach<AttrListContains>();
820+
ScalarAttributeTypes::foreach<AttrListContains>();
821+
Vec3AttributeTypes::foreach<AttrListContains>();
822+
Mat3AttributeTypes::foreach<AttrListContains>();
823+
Mat4AttributeTypes::foreach<AttrListContains>();
824+
QuatAttributeTypes::foreach<AttrListContains>();
825+
826+
CHECK_TYPE_LIST_IS_VALID(MapTypes)
827+
828+
MapTypes::foreach<IsRegistered>();
829+
830+
CHECK_TYPE_LIST_IS_VALID(MetaTypes)
831+
832+
MetaTypes::foreach<IsRegisteredType>();
833+
834+
openvdb::uninitialize();
835+
}

0 commit comments

Comments
 (0)