#include "UnitTestPCH.h"

#include <GenVertexNormalsProcess.h>


using namespace std;
using namespace Assimp;

class GenNormalsTest : public ::testing::Test
{
public:

	virtual void SetUp();
	virtual void TearDown();

protected:
	aiMesh* pcMesh;
	GenVertexNormalsProcess* piProcess;
};

// ------------------------------------------------------------------------------------------------
void GenNormalsTest::SetUp()
{
	piProcess = new GenVertexNormalsProcess();
	pcMesh = new aiMesh();
	pcMesh->mPrimitiveTypes = aiPrimitiveType_TRIANGLE;
	pcMesh->mNumFaces = 1;
	pcMesh->mFaces = new aiFace[1];
	pcMesh->mFaces[0].mIndices = new unsigned int[pcMesh->mFaces[0].mNumIndices = 3];
	pcMesh->mFaces[0].mIndices[0] = 0;
	pcMesh->mFaces[0].mIndices[1] = 1;
	pcMesh->mFaces[0].mIndices[2] = 1;
	pcMesh->mNumVertices = 3;
	pcMesh->mVertices = new aiVector3D[3];
	pcMesh->mVertices[0] = aiVector3D(0.0f,1.0f,6.0f);
	pcMesh->mVertices[1] = aiVector3D(2.0f,3.0f,1.0f);
	pcMesh->mVertices[2] = aiVector3D(3.0f,2.0f,4.0f);
}

// ------------------------------------------------------------------------------------------------
void GenNormalsTest::TearDown()
{
	delete this->pcMesh;
	delete this->piProcess;
}

// ------------------------------------------------------------------------------------------------
TEST_F(GenNormalsTest, testSimpleTriangle)
{
	piProcess->GenMeshVertexNormals(pcMesh, 0);
	EXPECT_TRUE(pcMesh->mNormals != NULL);
}