Merge pull request #2566 from RichardTea/test_exporter_ids
Test Exporter Descriptions and IDspull/2563/head^2
commit
1d565b0aab
|
@ -34,15 +34,6 @@ namespace Assimp {
|
||||||
|
|
||||||
void ExportAssimp2Json(const char*, Assimp::IOSystem*, const aiScene*, const Assimp::ExportProperties*);
|
void ExportAssimp2Json(const char*, Assimp::IOSystem*, const aiScene*, const Assimp::ExportProperties*);
|
||||||
|
|
||||||
Exporter::ExportFormatEntry Assimp2Json_desc = Assimp::Exporter::ExportFormatEntry(
|
|
||||||
"json",
|
|
||||||
"Plain JSON representation of the Assimp scene data structure",
|
|
||||||
"json",
|
|
||||||
&ExportAssimp2Json,
|
|
||||||
0u
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// small utility class to simplify serializing the aiScene to Json
|
// small utility class to simplify serializing the aiScene to Json
|
||||||
class JSONWriter {
|
class JSONWriter {
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -810,7 +810,7 @@ ADD_ASSIMP_IMPORTER( MMD
|
||||||
MMD/MMDVmdParser.h
|
MMD/MMDVmdParser.h
|
||||||
)
|
)
|
||||||
|
|
||||||
ADD_ASSIMP_EXPORTER( Assjson
|
ADD_ASSIMP_EXPORTER( ASSJSON
|
||||||
Assjson/cencode.c
|
Assjson/cencode.c
|
||||||
Assjson/cencode.h
|
Assjson/cencode.h
|
||||||
Assjson/json_exporter.cpp
|
Assjson/json_exporter.cpp
|
||||||
|
|
|
@ -163,11 +163,11 @@ Exporter::ExportFormatEntry gExporters[] =
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSBIN_EXPORTER
|
||||||
Exporter::ExportFormatEntry( "assbin", "Assimp Binary", "assbin" , &ExportSceneAssbin, 0 ),
|
Exporter::ExportFormatEntry( "assbin", "Assimp Binary File", "assbin" , &ExportSceneAssbin, 0 ),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSXML_EXPORTER
|
||||||
Exporter::ExportFormatEntry( "assxml", "Assxml Document", "assxml" , &ExportSceneAssxml, 0 ),
|
Exporter::ExportFormatEntry( "assxml", "Assimp XML Document", "assxml" , &ExportSceneAssxml, 0 ),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_X3D_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_X3D_EXPORTER
|
||||||
|
@ -183,8 +183,8 @@ Exporter::ExportFormatEntry gExporters[] =
|
||||||
Exporter::ExportFormatEntry( "3mf", "The 3MF-File-Format", "3mf", &ExportScene3MF, 0 ),
|
Exporter::ExportFormatEntry( "3mf", "The 3MF-File-Format", "3mf", &ExportScene3MF, 0 ),
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef ASSIMP_BUILD_NO_Assjson_EXPORTER
|
#ifndef ASSIMP_BUILD_NO_ASSJSON_EXPORTER
|
||||||
Exporter::ExportFormatEntry("json", "Plain JSON representation of the Assimp scene data structure", "json", &ExportAssimp2Json, 0)
|
Exporter::ExportFormatEntry( "assjson", "Assimp JSON Document", "json", &ExportAssimp2Json, 0)
|
||||||
#endif
|
#endif
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -57,7 +57,7 @@ public:
|
||||||
const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", aiProcess_ValidateDataStructure);
|
const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", aiProcess_ValidateDataStructure);
|
||||||
|
|
||||||
Exporter exporter;
|
Exporter exporter;
|
||||||
aiReturn res = exporter.Export(scene, "json", "./spider_test.json");
|
aiReturn res = exporter.Export(scene, "assjson", "./spider_test.json");
|
||||||
return aiReturn_SUCCESS == res;
|
return aiReturn_SUCCESS == res;
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -71,3 +71,32 @@ TEST_F(ExporterTest, ProgressHandlerTest) {
|
||||||
TestProgressHandler *ph(new TestProgressHandler);
|
TestProgressHandler *ph(new TestProgressHandler);
|
||||||
exporter.SetProgressHandler(ph);
|
exporter.SetProgressHandler(ph);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Make sure all the registered exporters have useful descriptions
|
||||||
|
TEST_F(ExporterTest, ExporterIdTest) {
|
||||||
|
Exporter exporter;
|
||||||
|
size_t exportFormatCount = exporter.GetExportFormatCount();
|
||||||
|
EXPECT_NE(0u, exportFormatCount) << "No registered exporters";
|
||||||
|
typedef std::map<std::string, const aiExportFormatDesc*> ExportIdMap;
|
||||||
|
ExportIdMap exporterMap;
|
||||||
|
for (size_t i = 0; i < exportFormatCount; ++i)
|
||||||
|
{
|
||||||
|
// Check that the exporter description exists and makes sense
|
||||||
|
const aiExportFormatDesc* desc = exporter.GetExportFormatDescription(i);
|
||||||
|
ASSERT_NE(nullptr, desc) << "Missing aiExportFormatDesc at index " << i;
|
||||||
|
EXPECT_NE(nullptr, desc->id) << "Null exporter ID at index " << i;
|
||||||
|
EXPECT_STRNE("", desc->id) << "Empty exporter ID at index " << i;
|
||||||
|
EXPECT_NE(nullptr, desc->description) << "Null exporter description at index " << i;
|
||||||
|
EXPECT_STRNE("", desc->description) << "Empty exporter description at index " << i;
|
||||||
|
EXPECT_NE(nullptr, desc->fileExtension) << "Null exporter file extension at index " << i;
|
||||||
|
EXPECT_STRNE("", desc->fileExtension) << "Empty exporter file extension at index " << i;
|
||||||
|
|
||||||
|
// Check the ID is unique
|
||||||
|
std::string key(desc->id);
|
||||||
|
std::pair<ExportIdMap::iterator, bool> result = exporterMap.emplace(key, desc);
|
||||||
|
EXPECT_TRUE(result.second) << "Duplicate exported id: '" << key << "' " << desc->description << " *." << desc->fileExtension << " at index " << i;
|
||||||
|
}
|
||||||
|
|
||||||
|
const aiExportFormatDesc* desc = exporter.GetExportFormatDescription(exportFormatCount);
|
||||||
|
EXPECT_EQ(nullptr, desc) << "More exporters than claimed";
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in New Issue