Jelajahi Sumber

Merge branch 'enable_vs_warning_all' of https://github.com/assimp/assimp into enable_vs_warning_all

Kim Kulling 5 tahun lalu
induk
melakukan
378c87ccf4

+ 22 - 0
.github/workflows/ccpp.yml

@@ -0,0 +1,22 @@
+name: C/C++ CI
+
+on:
+  push:
+    branches: [ master ]
+  pull_request:
+    branches: [ master ]
+
+jobs:
+  build-ubuntu:
+
+    runs-on: ubuntu-latest
+    
+    steps:
+    - uses: actions/checkout@v1
+    - name: configure
+      run: cmake CMakeLists.txt
+    - name: build
+      run: cmake --build .
+    - name: test
+      run: cd bin && ./unit
+      

+ 1 - 0
Readme.md

@@ -2,6 +2,7 @@ Open Asset Import Library (assimp)
 ==================================
 ==================================
 A library to import and export various 3d-model-formats including scene-post-processing to generate missing render data.
 A library to import and export various 3d-model-formats including scene-post-processing to generate missing render data.
 ### Current project status ###
 ### Current project status ###
+![C/C++ CI](https://github.com/assimp/assimp/workflows/C/C++%20CI/badge.svg)
 [![Linux Build Status](https://travis-ci.org/assimp/assimp.svg)](https://travis-ci.org/assimp/assimp)
 [![Linux Build Status](https://travis-ci.org/assimp/assimp.svg)](https://travis-ci.org/assimp/assimp)
 [![Windows Build Status](https://ci.appveyor.com/api/projects/status/tmo433wax6u6cjp4?svg=true)](https://ci.appveyor.com/project/kimkulling/assimp)
 [![Windows Build Status](https://ci.appveyor.com/api/projects/status/tmo433wax6u6cjp4?svg=true)](https://ci.appveyor.com/project/kimkulling/assimp)
 <a href="https://scan.coverity.com/projects/5607">
 <a href="https://scan.coverity.com/projects/5607">

+ 9 - 9
code/3DS/3DSHelper.h

@@ -358,15 +358,15 @@ struct Texture {
     }
     }
 
 
     Texture(Texture &&other) AI_NO_EXCEPT : mTextureBlend(std::move(other.mTextureBlend)),
     Texture(Texture &&other) AI_NO_EXCEPT : mTextureBlend(std::move(other.mTextureBlend)),
-                                            mMapName(std::move(mMapName)),
-                                            mOffsetU(std::move(mOffsetU)),
-                                            mOffsetV(std::move(mOffsetV)),
-                                            mScaleU(std::move(mScaleU)),
-                                            mScaleV(std::move(mScaleV)),
-                                            mRotation(std::move(mRotation)),
-                                            mMapMode(std::move(mMapMode)),
-                                            bPrivate(std::move(bPrivate)),
-                                            iUVSrc(std::move(iUVSrc)) {
+                                            mMapName(std::move(other.mMapName)),
+                                            mOffsetU(std::move(other.mOffsetU)),
+                                            mOffsetV(std::move(other.mOffsetV)),
+                                            mScaleU(std::move(other.mScaleU)),
+                                            mScaleV(std::move(other.mScaleV)),
+                                            mRotation(std::move(other.mRotation)),
+                                            mMapMode(std::move(other.mMapMode)),
+                                            bPrivate(std::move(other.bPrivate)),
+                                            iUVSrc(std::move(other.iUVSrc)) {
         // empty
         // empty
     }
     }
 
 

+ 14 - 3
code/ASE/ASEParser.h

@@ -80,7 +80,18 @@ struct Material : public D3DS::Material
     }
     }
 
 
     Material(const Material &other)            = default;
     Material(const Material &other)            = default;
-    Material &operator=(const Material &other) = default;
+
+    Material &operator=(const Material &other) {
+        if (this == &other) {
+            return *this;
+        }
+
+        avSubMaterials = other.avSubMaterials;
+        pcInstance = other.pcInstance;
+        bNeed = other.bNeed;
+
+        return *this;
+    }
 
 
 
 
     //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it
     //! Move constructor. This is explicitly written because MSVC doesn't support defaulting it
@@ -94,12 +105,12 @@ struct Material : public D3DS::Material
     }
     }
 
 
 
 
-    Material &operator=(Material &&other) AI_NO_EXCEPT {
+    Material &operator=( Material &&other) AI_NO_EXCEPT {
         if (this == &other) {
         if (this == &other) {
             return *this;
             return *this;
         }
         }
 
 
-        D3DS::Material::operator=(std::move(other));
+        //D3DS::Material::operator=(std::move(other));
 
 
         avSubMaterials = std::move(other.avSubMaterials);
         avSubMaterials = std::move(other.avSubMaterials);
         pcInstance = std::move(other.pcInstance);
         pcInstance = std::move(other.pcInstance);

+ 4 - 0
code/Assjson/cencode.h

@@ -8,6 +8,10 @@ For details, see http://sourceforge.net/projects/libb64
 #ifndef BASE64_CENCODE_H
 #ifndef BASE64_CENCODE_H
 #define BASE64_CENCODE_H
 #define BASE64_CENCODE_H
 
 
+#ifdef _WIN32
+#pragma warning(disable : 4127 )
+#endif // _WIN32
+
 typedef enum
 typedef enum
 {
 {
 	step_A, step_B, step_C
 	step_A, step_B, step_C

+ 2 - 2
code/B3D/B3DImporter.cpp

@@ -364,7 +364,7 @@ void B3DImporter::ReadVRTS(){
     int v0=static_cast<int>(_vertices.size());
     int v0=static_cast<int>(_vertices.size());
     _vertices.resize( v0+n_verts );
     _vertices.resize( v0+n_verts );
 
 
-    for( int i=0;i<n_verts;++i ){
+    for( unsigned int i=0;i<n_verts;++i ){
         Vertex &v=_vertices[v0+i];
         Vertex &v=_vertices[v0+i];
 
 
         memset( v.bones,0,sizeof(v.bones) );
         memset( v.bones,0,sizeof(v.bones) );
@@ -414,7 +414,7 @@ void B3DImporter::ReadTRIS(int v0) {
 	size_t n_tris = ChunkSize() / 12;
 	size_t n_tris = ChunkSize() / 12;
 	aiFace *face = mesh->mFaces = new aiFace[n_tris];
 	aiFace *face = mesh->mFaces = new aiFace[n_tris];
 
 
-	for (int i = 0; i < n_tris; ++i) {
+    for (unsigned int i = 0; i < n_tris; ++i) {
 		int i0 = ReadInt() + v0;
 		int i0 = ReadInt() + v0;
 		int i1 = ReadInt() + v0;
 		int i1 = ReadInt() + v0;
 		int i2 = ReadInt() + v0;
 		int i2 = ReadInt() + v0;

+ 1 - 1
code/FBX/FBXConverter.cpp

@@ -2715,7 +2715,7 @@ void FBXConverter::GenerateNodeAnimations(std::vector<aiNodeAnim *> &node_anims,
             // check if this curves contains redundant information by looking
             // check if this curves contains redundant information by looking
             // up the corresponding node's transformation chain.
             // up the corresponding node's transformation chain.
             if (doc.Settings().optimizeEmptyAnimationCurves &&
             if (doc.Settings().optimizeEmptyAnimationCurves &&
-                    IsRedundantAnimationData(target, comp, (*chain[i]).second)) {
+                    IsRedundantAnimationData(target, comp, (chain[i]->second))) {
 
 
                 FBXImporter::LogDebug("dropping redundant animation channel for node " + target.Name());
                 FBXImporter::LogDebug("dropping redundant animation channel for node " + target.Name());
                 continue;
                 continue;

+ 0 - 2
code/MDL/MDLMaterialLoader.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 
 Copyright (c) 2006-2020, assimp team
 Copyright (c) 2006-2020, assimp team
 
 
-
-
 All rights reserved.
 All rights reserved.
 
 
 Redistribution and use of this software in source and binary forms,
 Redistribution and use of this software in source and binary forms,

+ 94 - 87
code/Obj/ObjFileParser.cpp

@@ -59,8 +59,15 @@ namespace Assimp {
 const std::string ObjFileParser::DEFAULT_MATERIAL = AI_DEFAULT_MATERIAL_NAME;
 const std::string ObjFileParser::DEFAULT_MATERIAL = AI_DEFAULT_MATERIAL_NAME;
 
 
 ObjFileParser::ObjFileParser() :
 ObjFileParser::ObjFileParser() :
-        m_DataIt(), m_DataItEnd(), m_pModel(nullptr), m_uiLine(0), m_pIO(nullptr), m_progress(nullptr), m_originalObjFileName() {
-    // empty
+        m_DataIt(),
+        m_DataItEnd(),
+        m_pModel(nullptr),
+        m_uiLine(0),
+        m_buffer(),
+        m_pIO(nullptr),
+        m_progress(nullptr),
+        m_originalObjFileName() {
+    std::fill_n(m_buffer, Buffersize, '\0');
 }
 }
 
 
 ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::string &modelName,
 ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::string &modelName,
@@ -70,6 +77,7 @@ ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::stri
         m_DataItEnd(),
         m_DataItEnd(),
         m_pModel(nullptr),
         m_pModel(nullptr),
         m_uiLine(0),
         m_uiLine(0),
+        m_buffer(),
         m_pIO(io),
         m_pIO(io),
         m_progress(progress),
         m_progress(progress),
         m_originalObjFileName(originalObjFileName) {
         m_originalObjFileName(originalObjFileName) {
@@ -89,8 +97,7 @@ ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::stri
     parseFile(streamBuffer);
     parseFile(streamBuffer);
 }
 }
 
 
-ObjFileParser::~ObjFileParser()
-{
+ObjFileParser::~ObjFileParser() {
 }
 }
 
 
 void ObjFileParser::setBuffer(std::vector<char> &buffer) {
 void ObjFileParser::setBuffer(std::vector<char> &buffer) {
@@ -127,96 +134,96 @@ void ObjFileParser::parseFile(IOStreamBuffer<char> &streamBuffer) {
 
 
         // parse line
         // parse line
         switch (*m_DataIt) {
         switch (*m_DataIt) {
-            case 'v': // Parse a vertex texture coordinate
-            {
-                ++m_DataIt;
-                if (*m_DataIt == ' ' || *m_DataIt == '\t') {
-                    size_t numComponents = getNumComponentsInDataDefinition();
-                    if (numComponents == 3) {
-                        // read in vertex definition
-                        getVector3(m_pModel->m_Vertices);
-                    } else if (numComponents == 4) {
-                        // read in vertex definition (homogeneous coords)
-                        getHomogeneousVector3(m_pModel->m_Vertices);
-                    } else if (numComponents == 6) {
-                        // read vertex and vertex-color
-                        getTwoVectors3(m_pModel->m_Vertices, m_pModel->m_VertexColors);
-                    }
-                } else if (*m_DataIt == 't') {
-                    // read in texture coordinate ( 2D or 3D )
-                    ++m_DataIt;
-                    size_t dim = getTexCoordVector(m_pModel->m_TextureCoord);
-                    m_pModel->m_TextureCoordDim = std::max(m_pModel->m_TextureCoordDim, (unsigned int)dim);
-                } else if (*m_DataIt == 'n') {
-                    // Read in normal vector definition
-                    ++m_DataIt;
-                    getVector3(m_pModel->m_Normals);
+        case 'v': // Parse a vertex texture coordinate
+        {
+            ++m_DataIt;
+            if (*m_DataIt == ' ' || *m_DataIt == '\t') {
+                size_t numComponents = getNumComponentsInDataDefinition();
+                if (numComponents == 3) {
+                    // read in vertex definition
+                    getVector3(m_pModel->m_Vertices);
+                } else if (numComponents == 4) {
+                    // read in vertex definition (homogeneous coords)
+                    getHomogeneousVector3(m_pModel->m_Vertices);
+                } else if (numComponents == 6) {
+                    // read vertex and vertex-color
+                    getTwoVectors3(m_pModel->m_Vertices, m_pModel->m_VertexColors);
                 }
                 }
-            } break;
+            } else if (*m_DataIt == 't') {
+                // read in texture coordinate ( 2D or 3D )
+                ++m_DataIt;
+                size_t dim = getTexCoordVector(m_pModel->m_TextureCoord);
+                m_pModel->m_TextureCoordDim = std::max(m_pModel->m_TextureCoordDim, (unsigned int)dim);
+            } else if (*m_DataIt == 'n') {
+                // Read in normal vector definition
+                ++m_DataIt;
+                getVector3(m_pModel->m_Normals);
+            }
+        } break;
 
 
-            case 'p': // Parse a face, line or point statement
-            case 'l':
-            case 'f': {
-                getFace(*m_DataIt == 'f' ? aiPrimitiveType_POLYGON : (*m_DataIt == 'l' ? aiPrimitiveType_LINE : aiPrimitiveType_POINT));
-            } break;
+        case 'p': // Parse a face, line or point statement
+        case 'l':
+        case 'f': {
+            getFace(*m_DataIt == 'f' ? aiPrimitiveType_POLYGON : (*m_DataIt == 'l' ? aiPrimitiveType_LINE : aiPrimitiveType_POINT));
+        } break;
 
 
-            case '#': // Parse a comment
-            {
-                getComment();
-            } break;
+        case '#': // Parse a comment
+        {
+            getComment();
+        } break;
 
 
-            case 'u': // Parse a material desc. setter
-            {
-                std::string name;
+        case 'u': // Parse a material desc. setter
+        {
+            std::string name;
 
 
-                getNameNoSpace(m_DataIt, m_DataItEnd, name);
+            getNameNoSpace(m_DataIt, m_DataItEnd, name);
 
 
-                size_t nextSpace = name.find(' ');
-                if (nextSpace != std::string::npos)
-                    name = name.substr(0, nextSpace);
+            size_t nextSpace = name.find(' ');
+            if (nextSpace != std::string::npos)
+                name = name.substr(0, nextSpace);
 
 
-                if (name == "usemtl") {
-                    getMaterialDesc();
-                }
-            } break;
-
-            case 'm': // Parse a material library or merging group ('mg')
-            {
-                std::string name;
-
-                getNameNoSpace(m_DataIt, m_DataItEnd, name);
-
-                size_t nextSpace = name.find(' ');
-                if (nextSpace != std::string::npos)
-                    name = name.substr(0, nextSpace);
-
-                if (name == "mg")
-                    getGroupNumberAndResolution();
-                else if (name == "mtllib")
-                    getMaterialLib();
-                else
-                    goto pf_skip_line;
-            } break;
-
-            case 'g': // Parse group name
-            {
-                getGroupName();
-            } break;
-
-            case 's': // Parse group number
-            {
-                getGroupNumber();
-            } break;
-
-            case 'o': // Parse object name
-            {
-                getObjectName();
-            } break;
-
-            default: {
-            pf_skip_line:
-                m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
-            } break;
+            if (name == "usemtl") {
+                getMaterialDesc();
+            }
+        } break;
+
+        case 'm': // Parse a material library or merging group ('mg')
+        {
+            std::string name;
+
+            getNameNoSpace(m_DataIt, m_DataItEnd, name);
+
+            size_t nextSpace = name.find(' ');
+            if (nextSpace != std::string::npos)
+                name = name.substr(0, nextSpace);
+
+            if (name == "mg")
+                getGroupNumberAndResolution();
+            else if (name == "mtllib")
+                getMaterialLib();
+            else
+                goto pf_skip_line;
+        } break;
+
+        case 'g': // Parse group name
+        {
+            getGroupName();
+        } break;
+
+        case 's': // Parse group number
+        {
+            getGroupNumber();
+        } break;
+
+        case 'o': // Parse object name
+        {
+            getObjectName();
+        } break;
+
+        default: {
+        pf_skip_line:
+            m_DataIt = skipLine<DataArrayIt>(m_DataIt, m_DataItEnd, m_uiLine);
+        } break;
         }
         }
     }
     }
 }
 }

+ 3 - 2
code/Obj/ObjFileParser.h

@@ -85,6 +85,9 @@ public:
     /// @brief  Model getter.
     /// @brief  Model getter.
     ObjFile::Model *GetModel() const;
     ObjFile::Model *GetModel() const;
 
 
+    ObjFileParser(const ObjFileParser&) = delete;
+    ObjFileParser &operator=(const ObjFileParser& ) = delete;
+
 protected:
 protected:
     /// Parse the loaded file
     /// Parse the loaded file
     void parseFile(IOStreamBuffer<char> &streamBuffer);
     void parseFile(IOStreamBuffer<char> &streamBuffer);
@@ -136,8 +139,6 @@ protected:
 private:
 private:
     // Copy and assignment constructor should be private
     // Copy and assignment constructor should be private
     // because the class contains pointer to allocated memory
     // because the class contains pointer to allocated memory
-    ObjFileParser(const ObjFileParser &rhs);
-    ObjFileParser &operator=(const ObjFileParser &rhs);
 
 
     /// Default material name
     /// Default material name
     static const std::string DEFAULT_MATERIAL;
     static const std::string DEFAULT_MATERIAL;

+ 6 - 2
code/Ply/PlyLoader.cpp

@@ -105,11 +105,15 @@ bool PLYImporter::CanRead(const std::string &pFile, IOSystem *pIOHandler, bool c
 
 
     if (extension == "ply") {
     if (extension == "ply") {
         return true;
         return true;
-    } else if (!extension.length() || checkSig) {
+    }
+
+    if (!extension.length() || checkSig) {
         if (!pIOHandler) {
         if (!pIOHandler) {
             return true;
             return true;
         }
         }
-        static const char *tokens[] = { "ply" };
+        static const char *tokens[] = {
+            "ply"
+        };
         return SearchFileHeaderForToken(pIOHandler, pFile, tokens, 1);
         return SearchFileHeaderForToken(pIOHandler, pFile, tokens, 1);
     }
     }
 
 

+ 5 - 2
code/Step/STEPFile.h

@@ -727,8 +727,11 @@ struct InternGenericConvert<Maybe<T>> {
     }
     }
 };
 };
 
 
+#ifdef _WIN32
 #pragma warning(push)
 #pragma warning(push)
 #pragma warning(disable : 4127)
 #pragma warning(disable : 4127)
+#endif // _WIN32
+
 template <typename T, uint64_t min_cnt, uint64_t max_cnt>
 template <typename T, uint64_t min_cnt, uint64_t max_cnt>
 struct InternGenericConvertList {
 struct InternGenericConvertList {
     void operator()(ListOf<T, min_cnt, max_cnt> &out, const std::shared_ptr<const EXPRESS::DataType> &inp_base, const STEP::DB &db) {
     void operator()(ListOf<T, min_cnt, max_cnt> &out, const std::shared_ptr<const EXPRESS::DataType> &inp_base, const STEP::DB &db) {
@@ -759,8 +762,6 @@ struct InternGenericConvertList {
     }
     }
 };
 };
 
 
-#pragma warning(pop)
-
 template <typename T>
 template <typename T>
 struct InternGenericConvert<Lazy<T>> {
 struct InternGenericConvert<Lazy<T>> {
     void operator()(Lazy<T> &out, const std::shared_ptr<const EXPRESS::DataType> &in_base, const STEP::DB &db) {
     void operator()(Lazy<T> &out, const std::shared_ptr<const EXPRESS::DataType> &in_base, const STEP::DB &db) {
@@ -959,7 +960,9 @@ private:
     const EXPRESS::ConversionSchema *schema;
     const EXPRESS::ConversionSchema *schema;
 };
 };
 
 
+#ifdef _WIN32
 #pragma warning(pop)
 #pragma warning(pop)
+#endif // _WIN32
 
 
 } // namespace STEP
 } // namespace STEP
 
 

+ 1 - 1
code/X3D/X3DExporter.hpp

@@ -57,7 +57,7 @@ class X3DExporter {
                 Value() {
                 Value() {
             // empty
             // empty
         }
         }
-        SAttribute(std::string name, std::string value) :
+        SAttribute(const std::string &name, const std::string &value) :
                 Name(name),
                 Name(name),
                 Value(value) {
                 Value(value) {
             // empty
             // empty

+ 10 - 3
contrib/zip/src/zip.c

@@ -701,7 +701,10 @@ ssize_t zip_entry_noallocread(struct zip_t *zip, void *buf, size_t bufsize) {
 int zip_entry_fread(struct zip_t *zip, const char *filename) {
 int zip_entry_fread(struct zip_t *zip, const char *filename) {
   mz_zip_archive *pzip = NULL;
   mz_zip_archive *pzip = NULL;
   mz_uint idx;
   mz_uint idx;
-  //mz_uint32 xattr = 0;
+#if defined(_MSC_VER)
+#else
+  mz_uint32 xattr = 0;
+#endif
   mz_zip_archive_file_stat info;
   mz_zip_archive_file_stat info;
 
 
   if (!zip) {
   if (!zip) {
@@ -844,7 +847,11 @@ int zip_extract(const char *zipname, const char *dir,
   mz_zip_archive zip_archive;
   mz_zip_archive zip_archive;
   mz_zip_archive_file_stat info;
   mz_zip_archive_file_stat info;
   size_t dirlen = 0;
   size_t dirlen = 0;
-  //mz_uint32 xattr = 0;
+#if defined(_MSC_VER)
+#else
+  mz_uint32 xattr = 0;
+#endif
+
 
 
   memset(path, 0, sizeof(path));
   memset(path, 0, sizeof(path));
   memset(symlink_to, 0, sizeof(symlink_to));
   memset(symlink_to, 0, sizeof(symlink_to));
@@ -961,4 +968,4 @@ out:
   return status;
   return status;
 }
 }
 
 
-#pragma warning(pop)
+#pragma warning(pop)

+ 4 - 0
contrib/zip/src/zip.h

@@ -15,6 +15,10 @@
 #include <string.h>
 #include <string.h>
 #include <sys/types.h>
 #include <sys/types.h>
 
 
+#ifdef _WIN32
+#pragma warning(disable : 4127 )
+#endif //_WIN32
+
 #ifdef __cplusplus
 #ifdef __cplusplus
 extern "C" {
 extern "C" {
 #endif
 #endif

+ 4 - 4
include/assimp/types.h

@@ -61,12 +61,12 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 #include <assimp/defs.h>
 #include <assimp/defs.h>
 
 
 // Some types moved to separate header due to size of operators
 // Some types moved to separate header due to size of operators
+#include <assimp/vector2.h>
+#include <assimp/vector3.h>
 #include <assimp/color4.h>
 #include <assimp/color4.h>
 #include <assimp/matrix3x3.h>
 #include <assimp/matrix3x3.h>
 #include <assimp/matrix4x4.h>
 #include <assimp/matrix4x4.h>
 #include <assimp/quaternion.h>
 #include <assimp/quaternion.h>
-#include <assimp/vector2.h>
-#include <assimp/vector3.h>
 
 
 typedef int32_t ai_int32;
 typedef int32_t ai_int32;
 typedef uint32_t ai_uint32;
 typedef uint32_t ai_uint32;
@@ -525,11 +525,11 @@ struct aiMemoryInfo {
 #endif //!  __cplusplus
 #endif //!  __cplusplus
 
 
 // Include implementation files
 // Include implementation files
+#include "vector2.inl"
+#include "vector3.inl"
 #include "color4.inl"
 #include "color4.inl"
 #include "matrix3x3.inl"
 #include "matrix3x3.inl"
 #include "matrix4x4.inl"
 #include "matrix4x4.inl"
 #include "quaternion.inl"
 #include "quaternion.inl"
-#include "vector2.inl"
-#include "vector3.inl"
 
 
 #endif // AI_TYPES_H_INC
 #endif // AI_TYPES_H_INC

File diff ditekan karena terlalu besar
+ 571 - 0
test/models/FBX/cubes_with_outofrange_float.fbx


+ 7 - 0
test/unit/utFBXImporterExporter.cpp

@@ -310,3 +310,10 @@ TEST_F(utFBXImporterExporter, sceneMetadata) {
         ASSERT_EQ(strncmp(generator.C_Str(), "Blender", 7), 0);
         ASSERT_EQ(strncmp(generator.C_Str(), "Blender", 7), 0);
     }
     }
 }
 }
+
+TEST_F(utFBXImporterExporter, importCubesWithOutOfRangeFloat) {
+    Assimp::Importer importer;
+    const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/FBX/cubes_with_outofrange_float.fbx", aiProcess_ValidateDataStructure);
+    ASSERT_NE(nullptr, scene);
+    ASSERT_TRUE(scene->mRootNode);
+}

+ 5 - 9
test/unit/utHMPImportExport.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 
 Copyright (c) 2006-2020, assimp team
 Copyright (c) 2006-2020, assimp team
 
 
-
-
 All rights reserved.
 All rights reserved.
 
 
 Redistribution and use of this software in source and binary forms,
 Redistribution and use of this software in source and binary forms,
@@ -40,11 +38,11 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ---------------------------------------------------------------------------
 ---------------------------------------------------------------------------
 */
 */
-#include "UnitTestPCH.h"
 #include "AbstractImportExportBase.h"
 #include "AbstractImportExportBase.h"
+#include "UnitTestPCH.h"
 
 
-#include <assimp/Importer.hpp>
 #include <assimp/postprocess.h>
 #include <assimp/postprocess.h>
+#include <assimp/Importer.hpp>
 
 
 using namespace Assimp;
 using namespace Assimp;
 
 
@@ -52,13 +50,11 @@ class utHMPImportExport : public AbstractImportExportBase {
 public:
 public:
     virtual bool importerTest() {
     virtual bool importerTest() {
         Assimp::Importer importer;
         Assimp::Importer importer;
-        const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/HMP/terrain.hmp", aiProcess_ValidateDataStructure );
+        const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/HMP/terrain.hmp", aiProcess_ValidateDataStructure);
         return nullptr != scene;
         return nullptr != scene;
-
-        return true;
     }
     }
 };
 };
 
 
-TEST_F( utHMPImportExport, importHMPFromFileTest ) {
-    EXPECT_TRUE( importerTest() );
+TEST_F(utHMPImportExport, importHMPFromFileTest) {
+    EXPECT_TRUE(importerTest());
 }
 }

+ 21 - 26
test/unit/utIFCImportExport.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 
 Copyright (c) 2006-2020, assimp team
 Copyright (c) 2006-2020, assimp team
 
 
-
-
 All rights reserved.
 All rights reserved.
 
 
 Redistribution and use of this software in source and binary forms,
 Redistribution and use of this software in source and binary forms,
@@ -40,11 +38,11 @@ THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 ---------------------------------------------------------------------------
 ---------------------------------------------------------------------------
 */
 */
-#include "UnitTestPCH.h"
 #include "AbstractImportExportBase.h"
 #include "AbstractImportExportBase.h"
+#include "UnitTestPCH.h"
 
 
-#include <assimp/Importer.hpp>
 #include <assimp/postprocess.h>
 #include <assimp/postprocess.h>
+#include <assimp/Importer.hpp>
 
 
 using namespace Assimp;
 using namespace Assimp;
 
 
@@ -52,34 +50,31 @@ class utIFCImportExport : public AbstractImportExportBase {
 public:
 public:
     virtual bool importerTest() {
     virtual bool importerTest() {
         Assimp::Importer importer;
         Assimp::Importer importer;
-        const aiScene *scene = importer.ReadFile( ASSIMP_TEST_MODELS_DIR "/IFC/AC14-FZK-Haus.ifc", aiProcess_ValidateDataStructure );
+        const aiScene *scene = importer.ReadFile(ASSIMP_TEST_MODELS_DIR "/IFC/AC14-FZK-Haus.ifc", aiProcess_ValidateDataStructure);
         return nullptr != scene;
         return nullptr != scene;
-
-        return true;
     }
     }
 };
 };
 
 
-TEST_F( utIFCImportExport, importIFCFromFileTest ) {
-    EXPECT_TRUE( importerTest() );
+TEST_F(utIFCImportExport, importIFCFromFileTest) {
+    EXPECT_TRUE(importerTest());
 }
 }
 
 
-TEST_F( utIFCImportExport, importComplextypeAsColor ) {
+TEST_F(utIFCImportExport, importComplextypeAsColor) {
     std::string asset =
     std::string asset =
-        "ISO-10303-21;\n"
-        "HEADER;\n"
-        "FILE_DESCRIPTION( ( 'ViewDefinition [CoordinationView, SpaceBoundary2ndLevelAddOnView]', 'Option [Filter: ]' ), '2;1' );\n"
-        "FILE_NAME( 'S:\\[IFC]\\[COMPLETE-BUILDINGS]\\FZK-MODELS\\FZK-Haus\\ArchiCAD-14\\AC14-FZK-Haus.ifc', '2010-10-07T13:40:52', ( 'Architect' ), ( 'Building Designer Office' ), 'PreProc - EDM 5.0', 'ArchiCAD 14.00 Release 1. Windows Build Number of the Ifc 2x3 interface: 3427', 'The authorising person' );\n"
-        "FILE_SCHEMA( ( 'IFC2X3' ) );\n"
-        "ENDSEC;\n"
-        "\n"
-        "DATA;\n"
-        "#1 = IFCORGANIZATION( 'GS', 'Graphisoft', 'Graphisoft', $, $ );\n"
-        "#2 = IFCPROPERTYSINGLEVALUE( 'Red', $, IFCINTEGER( 255 ), $ );\n"
-        "#3 = IFCPROPERTYSINGLEVALUE( 'Green', $, IFCINTEGER( 255 ), $ );\n"
-        "#4 = IFCPROPERTYSINGLEVALUE( 'Blue', $, IFCINTEGER( 255 ), $ );\n"
-        "#5 = IFCCOMPLEXPROPERTY( 'Color', $, 'Color', ( #19, #20, #21 ) );\n";
+            "ISO-10303-21;\n"
+            "HEADER;\n"
+            "FILE_DESCRIPTION( ( 'ViewDefinition [CoordinationView, SpaceBoundary2ndLevelAddOnView]', 'Option [Filter: ]' ), '2;1' );\n"
+            "FILE_NAME( 'S:\\[IFC]\\[COMPLETE-BUILDINGS]\\FZK-MODELS\\FZK-Haus\\ArchiCAD-14\\AC14-FZK-Haus.ifc', '2010-10-07T13:40:52', ( 'Architect' ), ( 'Building Designer Office' ), 'PreProc - EDM 5.0', 'ArchiCAD 14.00 Release 1. Windows Build Number of the Ifc 2x3 interface: 3427', 'The authorising person' );\n"
+            "FILE_SCHEMA( ( 'IFC2X3' ) );\n"
+            "ENDSEC;\n"
+            "\n"
+            "DATA;\n"
+            "#1 = IFCORGANIZATION( 'GS', 'Graphisoft', 'Graphisoft', $, $ );\n"
+            "#2 = IFCPROPERTYSINGLEVALUE( 'Red', $, IFCINTEGER( 255 ), $ );\n"
+            "#3 = IFCPROPERTYSINGLEVALUE( 'Green', $, IFCINTEGER( 255 ), $ );\n"
+            "#4 = IFCPROPERTYSINGLEVALUE( 'Blue', $, IFCINTEGER( 255 ), $ );\n"
+            "#5 = IFCCOMPLEXPROPERTY( 'Color', $, 'Color', ( #19, #20, #21 ) );\n";
     Assimp::Importer importer;
     Assimp::Importer importer;
-    const aiScene *scene = importer.ReadFileFromMemory( asset.c_str(), asset.size(), 0 );
-    EXPECT_EQ( nullptr, scene );
-
+    const aiScene *scene = importer.ReadFileFromMemory(asset.c_str(), asset.size(), 0);
+    EXPECT_EQ(nullptr, scene);
 }
 }

Beberapa file tidak ditampilkan karena terlalu banyak file yang berubah dalam diff ini