OBJ: extend importer tests to test imported material expectations

Previously "which material got assigned to an object in the end"
was not covered by tests. This is preparation for fixing T101685.
This commit is contained in:
Aras Pranckevicius 2022-10-09 20:52:23 +03:00
parent af34c13da4
commit c2fb85282d
1 changed files with 63 additions and 7 deletions

View File

@ -8,6 +8,7 @@
#include "BKE_curve.h"
#include "BKE_customdata.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "BKE_mesh.h"
#include "BKE_object.h"
#include "BKE_scene.h"
@ -22,6 +23,7 @@
#include "DEG_depsgraph_query.h"
#include "DNA_curve_types.h"
#include "DNA_material_types.h"
#include "DNA_mesh_types.h"
#include "DNA_meshdata_types.h"
#include "DNA_scene_types.h"
@ -41,6 +43,7 @@ struct Expectation {
float3 normal_first;
float2 uv_first;
float4 color_first = {-1, -1, -1, -1};
std::string first_mat;
};
class obj_importer_test : public BlendfileLoadingBaseTest {
@ -132,6 +135,10 @@ class obj_importer_test : public BlendfileLoadingBaseTest {
// int cyclic = (nurb->flagu & CU_NURB_CYCLIC) ? 1 : 0;
// EXPECT_EQ(cyclic, exp.mesh_totloop_or_curve_cyclic);
}
if (!exp.first_mat.empty()) {
Material *mat = BKE_object_material_get(object, 1);
ASSERT_STREQ(mat ? mat->id.name : "<null>", exp.first_mat.c_str());
}
++object_index;
}
DEG_OBJECT_ITER_END;
@ -309,7 +316,42 @@ TEST_F(obj_importer_test, import_materials)
{
Expectation expect[] = {
{"OBCube", OB_MESH, 8, 12, 6, 24, float3(1, 1, -1), float3(-1, 1, 1)},
{"OBmaterials", OB_MESH, 8, 12, 6, 24, float3(-1, -1, 1), float3(1, -1, -1)},
{"OBmaterials",
OB_MESH,
8,
12,
6,
24,
float3(-1, -1, 1),
float3(1, -1, -1),
float3(0),
float2(0),
float4(-1),
"MAno_textures_red"},
{"OBObjMtlAfter",
OB_MESH,
3,
3,
1,
3,
float3(3, 0, 0),
float3(5, 0, 0),
float3(0),
float2(0),
float4(-1),
"MAno_textures_red"},
{"OBObjMtlBefore",
OB_MESH,
3,
3,
1,
3,
float3(6, 0, 0),
float3(8, 0, 0),
float3(0),
float2(0),
float4(-1),
"MAClay"},
};
import_and_check("materials.obj", expect, std::size(expect), 4, 8);
}
@ -327,7 +369,9 @@ TEST_F(obj_importer_test, import_cubes_with_textures_rel)
float3(1, 1, -1),
float3(-1, -1, 1),
float3(0, 1, 0),
float2(0.9935f, 0.0020f)},
float2(0.9935f, 0.0020f),
float4(-1),
"MAMat_BaseRoughEmissNormal10"},
{"OBCubeTexMul",
OB_MESH,
8,
@ -337,7 +381,9 @@ TEST_F(obj_importer_test, import_cubes_with_textures_rel)
float3(4, -2, -1),
float3(2, -4, 1),
float3(0, 1, 0),
float2(0.9935f, 0.0020f)},
float2(0.9935f, 0.0020f),
float4(-1),
"MAMat_BaseMul"},
{"OBCubeTiledTex",
OB_MESH,
8,
@ -347,7 +393,9 @@ TEST_F(obj_importer_test, import_cubes_with_textures_rel)
float3(4, 1, -1),
float3(2, -1, 1),
float3(0, 1, 0),
float2(0.9935f, 0.0020f)},
float2(0.9935f, 0.0020f),
float4(-1),
"MAMat_BaseTiled"},
{"OBCubeTiledTexFromAnotherFolder",
OB_MESH,
8,
@ -357,7 +405,9 @@ TEST_F(obj_importer_test, import_cubes_with_textures_rel)
float3(7, 1, -1),
float3(5, -1, 1),
float3(0, 1, 0),
float2(0.9935f, 0.0020f)},
float2(0.9935f, 0.0020f),
float4(-1),
"MAMat_EmissTiledAnotherFolder"},
};
import_and_check("cubes_with_textures_rel.obj", expect, std::size(expect), 4, 4);
}
@ -455,7 +505,10 @@ TEST_F(obj_importer_test, import_all_objects)
26,
float3(28, 1, -1),
float3(26, 1, 1),
float3(-1, 0, 0)},
float3(-1, 0, 0),
float2(0),
float4(-1),
"MARed"},
{"OBNurbsCircle",
OB_MESH,
96,
@ -491,7 +544,10 @@ TEST_F(obj_importer_test, import_all_objects)
26,
float3(4, 1, -1),
float3(2, 1, 1),
float3(0.5774f, 0.5773f, 0.5774f)},
float3(0.5774f, 0.5773f, 0.5774f),
float2(0),
float4(-1),
"MAMaterial"},
{"OBSurface",
OB_MESH,
256,