Browse Source

Fix resource leaks in unit tests.

Kim Kulling 9 years ago
parent
commit
7c63208515

+ 1 - 23
test/unit/UnitTestPCH.h

@@ -7,31 +7,9 @@
 // We need to be sure to have the same STL settings as Assimp
 
 #include <assimp/cimport.h>
-
 #include <gtest/gtest.h>
-
+#include <memory>
 #include <math.h>
 
-template<class T>
-struct TDataArray {
-    size_t m_numItems;
-    T *m_items;
-
-    TDataArray( size_t numItems )
-    : m_numItems( numItems )
-    , m_items( nullptr ) {
-        m_items = new T[ numItems ];
-    }
-
-    ~TDataArray() {
-        delete [] m_items;
-    }
-
-    T operator [] ( size_t index ) const {
-        EXPECT_TRUE( index < m_numItems );
-        return m_items[ index ];
-    }
-};
-
 #undef min
 #undef max

+ 10 - 11
test/unit/utColladaExportCamera.cpp

@@ -79,21 +79,20 @@ TEST_F(ColladaExportCamera, testExportCamera)
 
     EXPECT_EQ(AI_SUCCESS,ex->Export(pTest,"collada",file));
     const unsigned int origNumCams( pTest->mNumCameras );
-    //float *origFOV = new float[ origNumCams ];
-    TDataArray<float> origFOV( origNumCams );
-    TDataArray<float> orifClipPlaneNear( origNumCams );
-    TDataArray<float> orifClipPlaneFar( origNumCams );
-    TDataArray<aiString> names( origNumCams );
-    TDataArray<aiVector3D> pos( origNumCams );
+    std::unique_ptr<float[]> origFOV( new float[ origNumCams ] );
+    std::unique_ptr<float[]> orifClipPlaneNear( new float[ origNumCams ] );
+    std::unique_ptr<float[]> orifClipPlaneFar( new float[ origNumCams ] );
+    std::unique_ptr<aiString[]> names( new aiString[ origNumCams ] );
+    std::unique_ptr<aiVector3D[]> pos( new aiVector3D[ origNumCams ] );
     for (size_t i = 0; i < origNumCams; i++) {
         const aiCamera *orig = pTest->mCameras[ i ];
         ASSERT_TRUE( orig != nullptr );
 
-        origFOV.m_items[ i ] = orig->mHorizontalFOV;
-        orifClipPlaneNear.m_items[ i ] = orig->mClipPlaneNear;
-        orifClipPlaneFar.m_items[ i ] = orig->mClipPlaneFar;
-        names.m_items[ i ] = orig->mName;
-        pos.m_items[ i ] = orig->mPosition;
+        origFOV[ i ] = orig->mHorizontalFOV;
+        orifClipPlaneNear[ i ] = orig->mClipPlaneNear;
+        orifClipPlaneFar[ i ] = orig->mClipPlaneFar;
+        names[ i ] = orig->mName;
+        pos[ i ] = orig->mPosition;
     }
     const aiScene* imported = im->ReadFile(file,0);
 

+ 5 - 17
test/unit/utColladaExportLight.cpp

@@ -49,7 +49,6 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
 class ColladaExportLight : public ::testing::Test {
 public:
-
     virtual void SetUp()
     {
         ex = new Assimp::Exporter();
@@ -63,8 +62,6 @@ public:
     }
 
 protected:
-
-
     Assimp::Exporter* ex;
     Assimp::Importer* im;
 };
@@ -79,7 +76,7 @@ TEST_F(ColladaExportLight, testExportLight)
     ASSERT_TRUE(pTest->HasLights());
 
     const unsigned int origNumLights( pTest->mNumLights );
-    aiLight *origLights = new aiLight[ origNumLights ];
+    std::unique_ptr<aiLight[]> origLights( new aiLight[ origNumLights ] );
     std::vector<std::string> origNames;
     for (size_t i = 0; i < origNumLights; i++) {
         origNames.push_back( pTest->mLights[ i ]->mName.C_Str() );
@@ -94,14 +91,11 @@ TEST_F(ColladaExportLight, testExportLight)
 
     EXPECT_TRUE(imported->HasLights());
     EXPECT_EQ( origNumLights,imported->mNumLights );
-    for(size_t i=0; i< origNumLights; i++){
-
+    for(size_t i=0; i< origNumLights; i++) {
         const aiLight *orig = &origLights[ i ];
-        
         const aiLight *read = imported->mLights[i];
-
-        EXPECT_EQ(0,strncmp(origNames[ i ].c_str(),read->mName.C_Str(), origNames[ i ].size() ) );
-        EXPECT_EQ(orig->mType,read->mType);
+        EXPECT_EQ( 0,strncmp(origNames[ i ].c_str(),read->mName.C_Str(), origNames[ i ].size() ) );
+        EXPECT_EQ( orig->mType,read->mType);
         EXPECT_FLOAT_EQ(orig->mAttenuationConstant,read->mAttenuationConstant);
         EXPECT_FLOAT_EQ(orig->mAttenuationLinear,read->mAttenuationLinear);
         EXPECT_NEAR(orig->mAttenuationQuadratic,read->mAttenuationQuadratic, 0.001f);
@@ -121,12 +115,6 @@ TEST_F(ColladaExportLight, testExportLight)
         EXPECT_NEAR(orig->mAngleInnerCone,read->mAngleInnerCone,0.001);
         EXPECT_NEAR(orig->mAngleOuterCone,read->mAngleOuterCone,0.001);
     }
-
-    delete [] origLights;
-
 }
 
-
-#endif
-
-
+#endif // ASSIMP_BUILD_NO_EXPORT

+ 1 - 4
test/unit/utFindDegenerates.cpp

@@ -46,15 +46,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 using namespace std;
 using namespace Assimp;
 
-class FindDegeneratesProcessTest : public ::testing::Test
-{
+class FindDegeneratesProcessTest : public ::testing::Test {
 public:
-
     virtual void SetUp();
     virtual void TearDown();
 
 protected:
-
     aiMesh* mesh;
     FindDegeneratesProcess* process;
 };

+ 0 - 2
test/unit/utFindInvalidData.cpp

@@ -50,12 +50,10 @@ using namespace Assimp;
 class FindInvalidDataProcessTest : public ::testing::Test
 {
 public:
-
     virtual void SetUp();
     virtual void TearDown();
 
 protected:
-
     aiMesh* pcMesh;
     FindInvalidDataProcess* piProcess;
 };

+ 2 - 4
test/unit/utGenNormals.cpp

@@ -41,14 +41,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include "UnitTestPCH.h"
 #include <GenVertexNormalsProcess.h>
 
-
-using namespace std;
-using namespace Assimp;
+using namespace ::std;
+using namespace ::Assimp;
 
 class GenNormalsTest : public ::testing::Test
 {
 public:
-
     virtual void SetUp();
     virtual void TearDown();
 

+ 9 - 8
test/unit/utImporter.cpp

@@ -46,15 +46,19 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <BaseImporter.h>
 
 
-using namespace std;
-using namespace Assimp;
+using namespace ::std;
+using namespace ::Assimp;
 
 class ImporterTest : public ::testing::Test
 {
 public:
-
-    virtual void SetUp() { pImp = new Importer(); }
-    virtual void TearDown() { delete pImp; }
+    virtual void SetUp() { 
+        pImp = new Importer(); 
+    }
+    
+    virtual void TearDown() { 
+        delete pImp; 
+    }
 
 protected:
     Importer* pImp;
@@ -109,7 +113,6 @@ static unsigned char InputData_abRawBlock[1310] = {
 
 #define AIUT_DEF_ERROR_TEXT "sorry, this is a test"
 
-
 static const aiImporterDesc desc = {
     "UNIT TEST - IMPORTER",
     "",
@@ -123,11 +126,9 @@ static const aiImporterDesc desc = {
     "apple mac linux windows"
 };
 
-
 class TestPlugin : public BaseImporter
 {
 public:
-
     virtual bool CanRead(
         const std::string& pFile, IOSystem* /*pIOHandler*/, bool /*test*/) const
     {

+ 0 - 2
test/unit/utJoinVertices.cpp

@@ -50,12 +50,10 @@ using namespace Assimp;
 class JoinVerticesTest : public ::testing::Test
 {
 public:
-
     virtual void SetUp();
     virtual void TearDown();
 
 protected:
-
     JoinVerticesProcess* piProcess;
     aiMesh* pcMesh;
 };