2009-01-12 22:06:54 +00:00
|
|
|
|
|
|
|
#include "UnitTestPCH.h"
|
2008-08-28 17:35:36 +00:00
|
|
|
#include "utImporter.h"
|
|
|
|
|
|
|
|
|
|
|
|
CPPUNIT_TEST_SUITE_REGISTRATION (ImporterTest);
|
|
|
|
|
|
|
|
#define AIUT_DEF_ERROR_TEXT "sorry, this is a test"
|
|
|
|
|
|
|
|
|
|
|
|
bool TestPlugin :: CanRead( const std::string& pFile,
|
General
- Added format auto-detection to most loaders
- Simplified BaseImporter::CanRead() with some utility methods
- improved fast_atof -> no overruns anymore. Fuck you, irrlicht.
- added assimp_cmd tool to allow command line model processing. Mainly adebugging tool for internal purposes, but others might find it useful, too.
- vc8/vc9: revision number is now written to DLL version header
- mkutil: some batch scripts to simplify tagging & building of release versions
- some API cleanup
- fixing some doxygen markup (+now explicit use of @file <filename>)
- Icon for assimp_view and assimp_cmd
3DS
- Normal vectors are not anymore inverted in some cases
- Improved pivot handling
- Improved handling of x-flipped meshes
Collada
- fixed a minor bug (visual_scene element)
LWS
- WIP implementation. No animations yet, some bugs and crashes.
- Animation system remains disabled, WIP code
- many test files for LWS, but most of them test the anim support, which is, read above, currently disabled.
STL
- fixing a log warning which appears for every model
- added binary&ascii test spider, exported from truespace
MD3
- Cleaning up output tags for automatically joined player models.
IRR
- Fixing coordinate system issues.
- Instance handling improved.
- Some of the reported crashes not yet fixed.
PretransformVertices
- Numerous performance improvements.
- Added config option to preserve the hierarchy during the step.
RemoveRedundantMaterials
- Added config option to specify a list of materials which are kept in every case.
UNREAL
- Added support for the old unreal data format (*.a,*.d,*.uc)
- tested only with exports from Milkshape
- more Unreal stuff to come soon
git-svn-id: https://assimp.svn.sourceforge.net/svnroot/assimp/trunk@356 67173fc5-114c-0410-ac8e-9d2fd5bffc1f
2009-03-05 22:32:13 +00:00
|
|
|
IOSystem* pIOHandler, bool test) const
|
2008-08-28 17:35:36 +00:00
|
|
|
{
|
|
|
|
std::string::size_type pos = pFile.find_last_of('.');
|
|
|
|
// no file extension - can't read
|
2009-04-27 19:58:34 +00:00
|
|
|
if( pos == std::string::npos)
|
|
|
|
return false;
|
2008-08-28 17:35:36 +00:00
|
|
|
std::string extension = pFile.substr( pos);
|
|
|
|
|
|
|
|
// todo ... make case-insensitive
|
|
|
|
return (extension == ".apple" || extension == ".mac" ||
|
|
|
|
extension == ".linux" || extension == ".windows" );
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestPlugin :: GetExtensionList(std::string& append)
|
|
|
|
{
|
|
|
|
append.append("*.apple;*.mac;*.linux;*.windows");
|
|
|
|
}
|
|
|
|
|
|
|
|
void TestPlugin :: InternReadFile( const std::string& pFile,
|
|
|
|
aiScene* pScene, IOSystem* pIOHandler)
|
|
|
|
{
|
|
|
|
throw new ImportErrorException(AIUT_DEF_ERROR_TEXT);
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void ImporterTest :: setUp (void)
|
|
|
|
{
|
|
|
|
pImp = new Importer();
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: tearDown (void)
|
|
|
|
{
|
|
|
|
delete pImp;
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: testIntProperty (void)
|
|
|
|
{
|
|
|
|
bool b;
|
|
|
|
pImp->SetPropertyInteger("quakquak",1503,&b);
|
|
|
|
CPPUNIT_ASSERT(!b);
|
|
|
|
CPPUNIT_ASSERT(1503 == pImp->GetPropertyInteger("quakquak",0));
|
|
|
|
CPPUNIT_ASSERT(314159 == pImp->GetPropertyInteger("not_there",314159));
|
|
|
|
|
|
|
|
pImp->SetPropertyInteger("quakquak",1504,&b);
|
|
|
|
CPPUNIT_ASSERT(b);
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: testFloatProperty (void)
|
|
|
|
{
|
|
|
|
bool b;
|
|
|
|
pImp->SetPropertyFloat("quakquak",1503.f,&b);
|
|
|
|
CPPUNIT_ASSERT(!b);
|
|
|
|
CPPUNIT_ASSERT(1503.f == pImp->GetPropertyFloat("quakquak",0.f));
|
|
|
|
CPPUNIT_ASSERT(314159.f == pImp->GetPropertyFloat("not_there",314159.f));
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: testStringProperty (void)
|
|
|
|
{
|
|
|
|
bool b;
|
|
|
|
pImp->SetPropertyString("quakquak","test",&b);
|
|
|
|
CPPUNIT_ASSERT(!b);
|
|
|
|
CPPUNIT_ASSERT("test" == pImp->GetPropertyString("quakquak","weghwekg"));
|
|
|
|
CPPUNIT_ASSERT("ILoveYou" == pImp->GetPropertyString("not_there","ILoveYou"));
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: testPluginInterface (void)
|
|
|
|
{
|
|
|
|
pImp->RegisterLoader(new TestPlugin());
|
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".apple"));
|
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".mac"));
|
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".linux"));
|
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".windows"));
|
2009-04-27 19:58:34 +00:00
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".x")); /* x and 3ds must be available of course */
|
|
|
|
CPPUNIT_ASSERT(pImp->IsExtensionSupported(".3ds"));
|
|
|
|
CPPUNIT_ASSERT(!pImp->IsExtensionSupported("."));
|
2008-08-28 17:35:36 +00:00
|
|
|
|
|
|
|
TestPlugin* p = (TestPlugin*) pImp->FindLoader(".windows");
|
|
|
|
CPPUNIT_ASSERT(NULL != p);
|
|
|
|
|
|
|
|
try {
|
|
|
|
p->InternReadFile("",0,NULL);
|
|
|
|
}
|
|
|
|
catch ( ImportErrorException* ex)
|
|
|
|
{
|
|
|
|
CPPUNIT_ASSERT(ex->GetErrorText() == AIUT_DEF_ERROR_TEXT);
|
|
|
|
|
|
|
|
// unregister the plugin and delete it
|
|
|
|
pImp->UnregisterLoader(p);
|
|
|
|
delete p;
|
|
|
|
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
CPPUNIT_ASSERT(false); // control shouldn't reach this point
|
|
|
|
}
|
|
|
|
|
|
|
|
void ImporterTest :: testExtensionCheck (void)
|
|
|
|
{
|
|
|
|
std::string s;
|
|
|
|
pImp->GetExtensionList(s);
|
|
|
|
|
|
|
|
// todo ..
|
|
|
|
}
|