Skip to content
Snippets Groups Projects
Select Git revision
  • 82d8f4470380fafb77b01bcac911a353bc38a0ff
  • main default protected
2 results

fine_tune.py

Blame
  • test_model.cpp 3.06 KiB
    //------------------------------------------------------------------------------
    // Project Phoenix
    //
    // Copyright (c) 2017-2018 RWTH Aachen University, Germany,
    // Virtual Reality & Immersive Visualization Group.
    //------------------------------------------------------------------------------
    //                                 License
    //
    // Licensed under the 3-Clause BSD License (the "License");
    // you may not use this file except in compliance with the License.
    // See the file LICENSE for the full text.
    // You may obtain a copy of the License at
    //
    //     https://opensource.org/licenses/BSD-3-Clause
    //
    // Unless required by applicable law or agreed to in writing, software
    // distributed under the License is distributed on an "AS IS" BASIS,
    // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    // See the License for the specific language governing permissions and
    // limitations under the License.
    //------------------------------------------------------------------------------
    
    #include <string>
    
    #include "catch/catch.hpp"
    
    #include "phx/resources/loaders/assimp_model_loader.hpp"
    #include "phx/resources/resource_manager.hpp"
    #include "phx/resources/resource_utils.hpp"
    #include "phx/resources/types/model.hpp"
    
    #include "mocks/opengl_mock.hpp"
    #include "trompeloeil.hpp"
    
    extern template struct trompeloeil::reporter<trompeloeil::specialized>;
    
    SCENARIO("A Model can be loaded that contains multiple meshes",
             "[phx][phx::Model]") {
      OPENGL_MOCK_ALLOW_ANY_CALL
      GIVEN("A fresh resource manager...") {
        GIVEN("A file name of an .obj file...") {
          std::string model_file_name{"models/2MeshTest/2meshTest.obj"};
          WHEN("A model resource is declared and loaded") {
            auto model = phx::ResourceUtils::LoadResourceFromFile<phx::Model>(
                model_file_name);
            THEN("the returned model contains 2 meshes") {
              REQUIRE(model->GetMeshes().size() == 2u);
            }
            THEN(
                "the returned model contains 3 materials - 2 from the file, plus "
                "one default material") {
              REQUIRE(model->GetMaterials().size() == 3u);
            }
            THEN(
                "Mesh no. 0 is connected to material no. 2, and mesh no. 1 to "
                "material no. 1") {
              REQUIRE(model->GetMaterialForMesh(model->GetMeshes()[0]) ==
                      model->GetMaterials()[2]);
              REQUIRE(model->GetMaterialForMesh(model->GetMeshes()[1]) ==
                      model->GetMaterials()[1]);
            }
            THEN("Texture coords are loaded and can be accessed.") {
              auto mesh = model->GetMesh("Cube_Cube.001");
              auto textureCoords = mesh->GetTextureCoords();
              REQUIRE(textureCoords[0][0] == Approx(1));
              REQUIRE(textureCoords[0][1] == Approx(0));
              REQUIRE(textureCoords[0][2] == Approx(1));
              REQUIRE(textureCoords[0][3] == Approx(1));
              REQUIRE(textureCoords[0][4] == Approx(0));
              REQUIRE(textureCoords[0][5] == Approx(1));
              REQUIRE(textureCoords[0][6] == Approx(0));
              REQUIRE(textureCoords[0][7] == Approx(0));
            }
          }
        }
      }
    }