Skip to content
Snippets Groups Projects
Select Git revision
  • b3e7386bc9ebe9b8cdbdb118f1f019738cf01bb5
  • stable default protected
  • MA_Pape_2018
  • MA_2018_Lopatin
  • feature/mesh_viewer
  • feature/#468_access_isosurface_scalar
  • feature/#459_default_primitives
  • master protected
  • feature/#470_Create_a_color_lookup_table
  • feature/#473_resize_companion_window
  • feature/#462_do_not_use_arb_extensions
  • feature/#495_Provide_data_for_larger_isosurfaces
  • feature/#323_default_image
  • feature/#480_Create_a_smaller_test_mesh_for_combustion_demo
  • feature/#236_Get_Integration_tests_running_on_CI
  • feature/#447_Copy_standard_assets_to_build_folder
  • 447-copy-standard-assets-to-build-folder-and-remove-resource-path
  • feature/#445_mesh_render_settings_component
  • feature/#251_Make_sure_tests_cpp_is_compiled_once
  • feature/#455_Remove_navigation_and_improve_interaction_for_combustion_demo
  • feature/446_strange_txt_files
  • v18.06.0
  • v18.05.0
  • #251_bad
  • #251_good
  • v18.03.0
  • v18.02.0
  • v18.01.0
  • v17.12.0
  • v17.11.0
  • v17.10.0
  • v17.09.0
  • v17.07.0
33 results

selector.hpp

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));
            }
          }
        }
      }
    }