Issue #1776: Updated and fixed test in utBlenderIntermediate.cpp for Blender::ObjectCompare

pull/1777/head
Max Vollmer 2018-02-07 11:02:08 +01:00
parent 990dc983ed
commit b3d48d0e9a
1 changed files with 14 additions and 5 deletions

View File

@ -57,17 +57,26 @@ class BlenderIntermediateTest : public ::testing::Test {
#define NAME_1 "name1" #define NAME_1 "name1"
#define NAME_2 "name2" #define NAME_2 "name2"
// Updated this test after fixing #1776:
// A comparator in C++ is used for ordering and must implement strict weak ordering,
// which means it must return false for equal values.
// The C++ standard defines and expects this behavior: true if lhs < rhs, false otherwise.
TEST_F( BlenderIntermediateTest,ConversionData_ObjectCompareTest ) { TEST_F( BlenderIntermediateTest,ConversionData_ObjectCompareTest ) {
Object obj1, obj2; Object obj1, obj2;
strncpy( obj1.id.name, NAME_1, sizeof(NAME_1) ); strncpy( obj1.id.name, NAME_1, sizeof(NAME_1) );
strncpy( obj2.id.name, NAME_2, sizeof(NAME_2) ); strncpy( obj2.id.name, NAME_2, sizeof(NAME_2) );
Blender::ObjectCompare cmp_false;
bool res( cmp_false( &obj1, &obj2 ) ); Blender::ObjectCompare cmp_true_because_first_is_smaller_than_second;
bool res( cmp_true_because_first_is_smaller_than_second( &obj1, &obj2 ) );
EXPECT_TRUE( res );
Blender::ObjectCompare cmp_false_because_equal;
res = cmp_false_because_equal( &obj1, &obj1 );
EXPECT_FALSE( res ); EXPECT_FALSE( res );
Blender::ObjectCompare cmp_true; Blender::ObjectCompare cmp_false_because_first_is_greater_than_second;
res = cmp_true( &obj1, &obj1 ); res = cmp_false_because_first_is_greater_than_second( &obj2, &obj1 );
EXPECT_TRUE( res ); EXPECT_FALSE( res );
} }