Add unit test of valid and unique Exporter IDs, rename assjson id

"json" is a very vague exporter ID, change to "assjson"

Add a unit test to ensure all exporter have unique IDs
and that they all have an ID, description and extension
This commit is contained in:
RichardTea
2019-07-25 13:38:49 +01:00
parent 9880db8d4d
commit 7e8a3ec4cb
4 changed files with 33 additions and 13 deletions

View File

@@ -57,7 +57,7 @@ public:
const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/OBJ/spider.obj", aiProcess_ValidateDataStructure);
Exporter exporter;
aiReturn res = exporter.Export(scene, "json", "./spider_test.json");
aiReturn res = exporter.Export(scene, "assjson", "./spider_test.json");
return aiReturn_SUCCESS == res;
}
};

View File

@@ -71,3 +71,32 @@ TEST_F(ExporterTest, ProgressHandlerTest) {
TestProgressHandler *ph(new TestProgressHandler);
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(0, 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";
}