Browse Source

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

Kim Kulling 5 years ago
parent
commit
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.
 ### 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)
 [![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">

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

@@ -358,15 +358,15 @@ struct Texture {
     }
 
     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
     }
 

+ 14 - 3
code/ASE/ASEParser.h

@@ -80,7 +80,18 @@ struct Material : public D3DS::Material
     }
 
     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
@@ -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) {
             return *this;
         }
 
-        D3DS::Material::operator=(std::move(other));
+        //D3DS::Material::operator=(std::move(other));
 
         avSubMaterials = std::move(other.avSubMaterials);
         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
 #define BASE64_CENCODE_H
 
+#ifdef _WIN32
+#pragma warning(disable : 4127 )
+#endif // _WIN32
+
 typedef enum
 {
 	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());
     _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];
 
         memset( v.bones,0,sizeof(v.bones) );
@@ -414,7 +414,7 @@ void B3DImporter::ReadTRIS(int v0) {
 	size_t n_tris = ChunkSize() / 12;
 	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 i1 = 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
             // up the corresponding node's transformation chain.
             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());
                 continue;

+ 0 - 2
code/MDL/MDLMaterialLoader.cpp

@@ -5,8 +5,6 @@ Open Asset Import Library (assimp)
 
 Copyright (c) 2006-2020, assimp team
 
-
-
 All rights reserved.
 
 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;
 
 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,
@@ -70,6 +77,7 @@ ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::stri
         m_DataItEnd(),
         m_pModel(nullptr),
         m_uiLine(0),
+        m_buffer(),
         m_pIO(io),
         m_progress(progress),
         m_originalObjFileName(originalObjFileName) {
@@ -89,8 +97,7 @@ ObjFileParser::ObjFileParser(IOStreamBuffer<char> &streamBuffer, const std::stri
     parseFile(streamBuffer);
 }
 
-ObjFileParser::~ObjFileParser()
-{
+ObjFileParser::~ObjFileParser() {
 }
 
 void ObjFileParser::setBuffer(std::vector<char> &buffer) {
@@ -127,96 +134,96 @@ void ObjFileParser::parseFile(IOStreamBuffer<char> &streamBuffer) {
 
         // parse line
         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.
     ObjFile::Model *GetModel() const;
 
+    ObjFileParser(const ObjFileParser&) = delete;
+    ObjFileParser &operator=(const ObjFileParser& ) = delete;
+
 protected:
     /// Parse the loaded file
     void parseFile(IOStreamBuffer<char> &streamBuffer);
@@ -136,8 +139,6 @@ protected:
 private:
     // Copy and assignment constructor should be private
     // because the class contains pointer to allocated memory
-    ObjFileParser(const ObjFileParser &rhs);
-    ObjFileParser &operator=(const ObjFileParser &rhs);
 
     /// Default material name
     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") {
         return true;
-    } else if (!extension.length() || checkSig) {
+    }
+
+    if (!extension.length() || checkSig) {
         if (!pIOHandler) {
             return true;
         }
-        static const char *tokens[] = { "ply" };
+        static const char *tokens[] = {
+            "ply"
+        };
         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(disable : 4127)
+#endif // _WIN32
+
 template <typename T, uint64_t min_cnt, uint64_t max_cnt>
 struct InternGenericConvertList {
     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>
 struct InternGenericConvert<Lazy<T>> {
     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;
 };
 
+#ifdef _WIN32
 #pragma warning(pop)
+#endif // _WIN32
 
 } // namespace STEP
 

+ 1 - 1
code/X3D/X3DExporter.hpp

@@ -57,7 +57,7 @@ class X3DExporter {
                 Value() {
             // empty
         }
-        SAttribute(std::string name, std::string value) :
+        SAttribute(const std::string &name, const std::string &value) :
                 Name(name),
                 Value(value) {
             // 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) {
   mz_zip_archive *pzip = NULL;
   mz_uint idx;
-  //mz_uint32 xattr = 0;
+#if defined(_MSC_VER)
+#else
+  mz_uint32 xattr = 0;
+#endif
   mz_zip_archive_file_stat info;
 
   if (!zip) {
@@ -844,7 +847,11 @@ int zip_extract(const char *zipname, const char *dir,
   mz_zip_archive zip_archive;
   mz_zip_archive_file_stat info;
   size_t dirlen = 0;
-  //mz_uint32 xattr = 0;
+#if defined(_MSC_VER)
+#else
+  mz_uint32 xattr = 0;
+#endif
+
 
   memset(path, 0, sizeof(path));
   memset(symlink_to, 0, sizeof(symlink_to));
@@ -961,4 +968,4 @@ out:
   return status;
 }
 
-#pragma warning(pop)
+#pragma warning(pop)

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

@@ -15,6 +15,10 @@
 #include <string.h>
 #include <sys/types.h>
 
+#ifdef _WIN32
+#pragma warning(disable : 4127 )
+#endif //_WIN32
+
 #ifdef __cplusplus
 extern "C" {
 #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>
 
 // 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/matrix3x3.h>
 #include <assimp/matrix4x4.h>
 #include <assimp/quaternion.h>
-#include <assimp/vector2.h>
-#include <assimp/vector3.h>
 
 typedef int32_t ai_int32;
 typedef uint32_t ai_uint32;
@@ -525,11 +525,11 @@ struct aiMemoryInfo {
 #endif //!  __cplusplus
 
 // Include implementation files
+#include "vector2.inl"
+#include "vector3.inl"
 #include "color4.inl"
 #include "matrix3x3.inl"
 #include "matrix4x4.inl"
 #include "quaternion.inl"
-#include "vector2.inl"
-#include "vector3.inl"
 
 #endif // AI_TYPES_H_INC

File diff suppressed because it is too large
+ 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);
     }
 }
+
+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
 
-
-
 All rights reserved.
 
 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.
 ---------------------------------------------------------------------------
 */
-#include "UnitTestPCH.h"
 #include "AbstractImportExportBase.h"
+#include "UnitTestPCH.h"
 
-#include <assimp/Importer.hpp>
 #include <assimp/postprocess.h>
+#include <assimp/Importer.hpp>
 
 using namespace Assimp;
 
@@ -52,13 +50,11 @@ class utHMPImportExport : public AbstractImportExportBase {
 public:
     virtual bool importerTest() {
         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 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
 
-
-
 All rights reserved.
 
 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.
 ---------------------------------------------------------------------------
 */
-#include "UnitTestPCH.h"
 #include "AbstractImportExportBase.h"
+#include "UnitTestPCH.h"
 
-#include <assimp/Importer.hpp>
 #include <assimp/postprocess.h>
+#include <assimp/Importer.hpp>
 
 using namespace Assimp;
 
@@ -52,34 +50,31 @@ class utIFCImportExport : public AbstractImportExportBase {
 public:
     virtual bool importerTest() {
         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 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 =
-        "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;
-    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);
 }

Some files were not shown because too many files changed in this diff