Skip to content
Snippets Groups Projects
Select Git revision
  • 4fd66922b5e4aec35e07fbd9e448f72e51268e71
  • 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

test_generic_material_loader.cpp

  • test_generic_material_loader.cpp 3.98 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 "catch/catch.hpp"
    
    #include "phx/resources/resource_utils.hpp"
    #include "phx/resources/types/material.hpp"
    
    SCENARIO("The Generic Material Loader can create Generic materials.",
             "[phx][phx::GenericMaterialLoader]") {
      GIVEN("A plain Generic Material Loader") {
        WHEN("We load a red material") {
          auto materialResource = phx::ResourceUtils::LoadGenericMaterial(
              "generic_material", glm::vec3(1.f, 0.f, 0.f));
    
          THEN("We have a material with the given name") {
            REQUIRE(materialResource != nullptr);
            REQUIRE(materialResource->GetName() == "generic_material");
          }
    
          THEN(
              "The material is red, and specular color, ambient color and "
              "shininess are set to default values.") {
            auto diffuseColor = materialResource->GetDiffuseColor();
            REQUIRE(diffuseColor[0] == 1.0f);
            REQUIRE(diffuseColor[1] == 0.f);
            REQUIRE(diffuseColor[2] == 0.f);
    
            auto specularColor = materialResource->GetSpecularColor();
            auto specularColorDefault =
                phx::Material::GetDefault()->GetSpecularColor();
            REQUIRE(specularColor[0] == specularColorDefault[0]);
            REQUIRE(specularColor[1] == specularColorDefault[1]);
            REQUIRE(specularColor[2] == specularColorDefault[2]);
    
            auto ambientColor = materialResource->GetAmbientColor();
            auto ambientColorDefault =
                phx::Material::GetDefault()->GetAmbientColor();
            REQUIRE(ambientColor[0] == ambientColorDefault[0]);
            REQUIRE(ambientColor[1] == ambientColorDefault[1]);
            REQUIRE(ambientColor[2] == ambientColorDefault[2]);
    
            float shininess = materialResource->GetShininess();
            REQUIRE(shininess == phx::Material::GetDefault()->GetShininess());
          }
        }
    
        WHEN(
            "We load a different, more exotic material with some arbitrary "
            "values") {
          auto secondMaterial = phx::ResourceUtils::LoadGenericMaterial(
              "generic_material_2", glm::vec3(0.4f, 0.3f, 0.55f),
              glm::vec3(0.48f, 0.42f, 0.88f), glm::vec3(0.11f, 0.94f, 0.73f), 40.f);
    
          THEN("We still get a material with the given name") {
            REQUIRE(secondMaterial != nullptr);
            REQUIRE(secondMaterial->GetName() == "generic_material_2");
          }
    
          THEN("All the values in the material are set to the right value.") {
            auto diffuseColor = secondMaterial->GetDiffuseColor();
            REQUIRE(diffuseColor[0] == 0.4f);
            REQUIRE(diffuseColor[1] == 0.3f);
            REQUIRE(diffuseColor[2] == 0.55f);
    
            auto specularColor = secondMaterial->GetSpecularColor();
            REQUIRE(specularColor[0] == 0.48f);
            REQUIRE(specularColor[1] == 0.42f);
            REQUIRE(specularColor[2] == 0.88f);
    
            auto ambientColor = secondMaterial->GetAmbientColor();
            REQUIRE(ambientColor[0] == 0.11f);
            REQUIRE(ambientColor[1] == 0.94f);
            REQUIRE(ambientColor[2] == 0.73f);
    
            float shininess = secondMaterial->GetShininess();
            REQUIRE(shininess == 40.f);
          }
        }
      }
    }