utFindInvalidData.cpp 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #include "utFindInvalidData.h"
  2. CPPUNIT_TEST_SUITE_REGISTRATION (FindInvalidDataProcessTest);
  3. void FindInvalidDataProcessTest :: setUp (void)
  4. {
  5. CPPUNIT_ASSERT( AI_MAX_NUMBER_OF_TEXTURECOORDS >= 3);
  6. piProcess = new FindInvalidDataProcess();
  7. pcMesh = new aiMesh();
  8. pcMesh->mNumVertices = 1000;
  9. pcMesh->mVertices = new aiVector3D[1000];
  10. for (unsigned int i = 0; i < 1000;++i)
  11. pcMesh->mVertices[i] = aiVector3D((float)i);
  12. pcMesh->mNormals = new aiVector3D[1000];
  13. for (unsigned int i = 0; i < 1000;++i)
  14. pcMesh->mNormals[i] = aiVector3D((float)i);
  15. pcMesh->mTangents = new aiVector3D[1000];
  16. for (unsigned int i = 0; i < 1000;++i)
  17. pcMesh->mTangents[i] = aiVector3D((float)i);
  18. pcMesh->mBitangents = new aiVector3D[1000];
  19. for (unsigned int i = 0; i < 1000;++i)
  20. pcMesh->mBitangents[i] = aiVector3D((float)i);
  21. for (unsigned int a = 0; a < AI_MAX_NUMBER_OF_TEXTURECOORDS;++a)
  22. {
  23. pcMesh->mTextureCoords[a] = new aiVector3D[1000];
  24. for (unsigned int i = 0; i < 1000;++i)
  25. pcMesh->mTextureCoords[a][i] = aiVector3D((float)i);
  26. }
  27. }
  28. void FindInvalidDataProcessTest :: tearDown (void)
  29. {
  30. delete piProcess;
  31. delete pcMesh;
  32. }
  33. void FindInvalidDataProcessTest :: testStepNegativeResult (void)
  34. {
  35. ::memset(pcMesh->mNormals,0,pcMesh->mNumVertices*sizeof(aiVector3D));
  36. ::memset(pcMesh->mBitangents,0,pcMesh->mNumVertices*sizeof(aiVector3D));
  37. pcMesh->mTextureCoords[2][455] = std::numeric_limits<float>::quiet_NaN();
  38. piProcess->ProcessMesh(pcMesh);
  39. CPPUNIT_ASSERT(NULL != pcMesh->mVertices);
  40. CPPUNIT_ASSERT(NULL == pcMesh->mNormals);
  41. CPPUNIT_ASSERT(NULL == pcMesh->mTangents);
  42. CPPUNIT_ASSERT(NULL == pcMesh->mBitangents);
  43. for (unsigned int i = 0; i < 2;++i)
  44. {
  45. CPPUNIT_ASSERT(NULL != pcMesh->mTextureCoords[i]);
  46. }
  47. for (unsigned int i = 2; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i)
  48. {
  49. CPPUNIT_ASSERT(NULL == pcMesh->mTextureCoords[i]);
  50. }
  51. }
  52. void FindInvalidDataProcessTest :: testStepPositiveResult (void)
  53. {
  54. piProcess->ProcessMesh(pcMesh);
  55. CPPUNIT_ASSERT(NULL != pcMesh->mVertices);
  56. CPPUNIT_ASSERT(NULL != pcMesh->mNormals);
  57. CPPUNIT_ASSERT(NULL != pcMesh->mTangents);
  58. CPPUNIT_ASSERT(NULL != pcMesh->mBitangents);
  59. for (unsigned int i = 0; i < AI_MAX_NUMBER_OF_TEXTURECOORDS;++i)
  60. {
  61. CPPUNIT_ASSERT(NULL != pcMesh->mTextureCoords[i]);
  62. }
  63. }