test_TxzSerializer.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. #include <fstream>
  2. #include <boost/test/unit_test.hpp>
  3. #include <Ogre.h>
  4. #include "common/TypeDefine.h"
  5. #include "data/worldmap/TxzFileSerializer.h"
  6. #include "data/worldmap/TxzFile.h"
  7. #include <functional>
  8. using namespace Ogre;
  9. static void createReferenceFileInstance(std::string filename, std::function<void(Ogre::DataStreamPtr& stream, QGears::TxzFile& file)> callBack)
  10. {
  11. class TestFile : public QGears::TxzFile
  12. {
  13. public:
  14. TestFile() : QGears::TxzFile( NULL, "", 0, "" ) {}
  15. };
  16. const char* file_name = filename.c_str();
  17. std::ifstream ifs( file_name, std::ifstream::binary );
  18. {
  19. BOOST_REQUIRE( ifs.is_open() );
  20. Ogre::DataStreamPtr stream( OGRE_NEW Ogre::FileStreamDataStream( &ifs, false ) );
  21. BOOST_REQUIRE( stream->isReadable() );
  22. Ogre::LogManager log;
  23. TestFile f;
  24. log.createLog( "Default Log", true, true, true );
  25. callBack(stream, f);
  26. log.destroyLog( "Default Log" );
  27. }
  28. }
  29. BOOST_AUTO_TEST_CASE( read_blocks )
  30. {
  31. createReferenceFileInstance( "/home/paul/qgears/data/cd1/world/wm0.txz", [&](Ogre::DataStreamPtr& stream, QGears::TxzFile& file)
  32. {
  33. QGears::TxzFileSerializer s;
  34. s.import( stream, file );
  35. });
  36. }