1
0
mirror of https://github.com/rwengine/openrw.git synced 2024-09-18 16:32:32 +02:00
openrw/tests/test_loaderdff.cpp

69 lines
1.4 KiB
C++
Raw Normal View History

2014-02-10 13:09:16 +01:00
#include <boost/test/unit_test.hpp>
#include "test_globals.hpp"
#include <data/Model.hpp>
#include <job/WorkContext.hpp>
#include <loaders/BackgroundLoader.hpp>
2014-02-10 13:09:16 +01:00
BOOST_AUTO_TEST_SUITE(LoaderDFFTests)
BOOST_AUTO_TEST_CASE(test_load_dff)
2014-02-10 13:09:16 +01:00
{
2014-06-04 12:53:11 +02:00
{
2015-04-18 02:11:17 +02:00
auto d = Global::get().e->data->openFile("landstal.dff");
2014-06-04 12:53:11 +02:00
LoaderDFF loader;
Model* m = loader.loadFromMemory(d);
2014-06-04 12:53:11 +02:00
BOOST_REQUIRE( m != nullptr );
BOOST_REQUIRE_EQUAL( m->frames.size(), 40 );
BOOST_REQUIRE_EQUAL( m->geometries.size(), 16 );
BOOST_REQUIRE_EQUAL( m->geometries[0]->subgeom.size(), 5 );
for(auto& g : m->geometries) {
BOOST_CHECK_GT( g->geometryBounds.radius, 0.f );
}
BOOST_REQUIRE( m->atomics.size() > 0 );
for(Model::Atomic& a : m->atomics) {
BOOST_CHECK( a.frame < m->frames.size() );
BOOST_CHECK( a.geometry < m->geometries.size() );
}
2014-06-04 12:53:11 +02:00
delete m;
}
}
BOOST_AUTO_TEST_CASE(test_loader_job)
2014-06-04 12:53:11 +02:00
{
{
WorkContext ctx;
ResourceHandle<Model>::Ref modelRef { new ResourceHandle<Model>("landstal.dff") };
2015-04-18 02:11:17 +02:00
auto index = &Global::get().e->data->index;
auto job = new BackgroundLoaderJob<Model, LoaderDFF>{ &ctx, index, "landstal.dff", modelRef };
2014-06-04 12:53:11 +02:00
ctx.queueJob(job);
2014-06-04 12:53:11 +02:00
while( modelRef->state == RW::Loading ) {
2014-06-04 12:53:11 +02:00
ctx.update();
std::this_thread::yield();
}
BOOST_REQUIRE( modelRef->resource != nullptr );
2014-06-04 12:53:11 +02:00
BOOST_CHECK( modelRef->resource->frames.size() > 0 );
delete modelRef->resource;
2014-06-04 12:53:11 +02:00
}
2014-02-10 13:09:16 +01:00
}
BOOST_AUTO_TEST_SUITE_END()