summaryrefslogtreecommitdiff
path: root/test/test-obj.cpp
blob: e6e725d259991639d8c9ce38e5b1a3e9d71345bd (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#define BOOST_TEST_MODULE test_obj

#include <boost/test/unit_test.hpp>

#include <gfx/models/obj.h>
#include <gfx/models/vertex.hpp>
#include <glm/glm.hpp>
#include <map>
#include <memory>
#include <utility>
#include <vector>

BOOST_AUTO_TEST_CASE(objparse)
{
	const ObjParser op {RESDIR "/brush47.obj"};
	BOOST_CHECK_EQUAL(75, op.vertices.size());
	BOOST_CHECK_EQUAL(112, op.texCoords.size());
	BOOST_CHECK_EQUAL(31, op.normals.size());
	BOOST_CHECK_EQUAL(3, op.objects.size());
	const auto & object {op.objects.front()};
	BOOST_CHECK_EQUAL("Body", object.first);
	BOOST_CHECK_EQUAL(21, object.second.size());
	BOOST_CHECK_EQUAL(8, object.second[0].size());
	BOOST_CHECK_EQUAL(8, object.second[1].size());
	BOOST_CHECK_EQUAL(4, object.second[12].size());
}

BOOST_AUTO_TEST_CASE(create_meshes)
{
	const ObjParser op {RESDIR "/brush47.obj"};
	const auto ms = op.createMeshData();
	BOOST_REQUIRE_EQUAL(3, ms.size());
	BOOST_REQUIRE_EQUAL("Body", ms.begin()->first);
	const auto & o = ms.at("Body");
	BOOST_REQUIRE_EQUAL(88, o.first.size());
	const auto & v = o.first.front();
	BOOST_REQUIRE_CLOSE(-1.345, v.pos.x, 1);
	BOOST_REQUIRE_EQUAL(138, o.second.size());
}