Rendering Engine 0.2.17
Modular Graphics Rendering Engine | v0.2.17
Loading...
Searching...
No Matches
material_types_tests.cpp File Reference
#include "material_types.hpp"
#include "glm_test_helpers.hpp"
#include <algorithm>
#include <cstring>

Go to the source code of this file.

Functions

 TEST (PackedMaterialData, FloatWritesOnlyItsLayoutSlot)
 
 TEST (PackedMaterialData, Vec2WritesOnlyItsLayoutSlot)
 
 TEST (PackedMaterialData, Vec3WritesOnlyItsLayoutSlot)
 
 TEST (PackedMaterialData, Vec4WritesOnlyItsLayoutSlot)
 
 TEST (PackedMaterialData, UnknownNamesAndWrongTypesLeaveBufferUnchanged)
 
 TEST (MaterialLayouts, Font2DProtectsShaderPackingContract)
 
 TEST (MaterialLayouts, Rectangle2DProtectsShaderPackingContract)
 

Function Documentation

◆ TEST() [1/7]

TEST ( MaterialLayouts  ,
Font2DProtectsShaderPackingContract   
)

Definition at line 127 of file material_types_tests.cpp.

128{
129 ExpectLayout(Font2DLayout, {
130 {"FontColor", 0, 16, Type::Vec4},
131 {"OutlineColor", 16, 16, Type::Vec4},
132 {"OutlineThicknessPx", 32, 4, Type::Float},
133 {"InvAtlasSizeWidth", 36, 4, Type::Float},
134 {"InvAtlasSizeHeight", 40, 4, Type::Float}
135 });
136}
static const std::vector< MaterialParameterLayoutEntry > Font2DLayout

◆ TEST() [2/7]

TEST ( MaterialLayouts  ,
Rectangle2DProtectsShaderPackingContract   
)

Definition at line 138 of file material_types_tests.cpp.

139{
140 ExpectLayout(Rectangle2DLayout, {{"Color", 0, 16, Type::Vec4}});
141}
static const std::vector< MaterialParameterLayoutEntry > Rectangle2DLayout

◆ TEST() [3/7]

TEST ( PackedMaterialData  ,
FloatWritesOnlyItsLayoutSlot   
)

Definition at line 69 of file material_types_tests.cpp.

70{
71 auto material = MakeMaterial();
72 const auto before = material.buffer;
73 material.SetMaterialFloat("Scalar", 1.25f);
74 EXPECT_FLOAT_EQ(ReadValue<float>(material, 4), 1.25f);
75 ExpectUnchangedOutside(material, before, 4, sizeof(float));
76}

◆ TEST() [4/7]

TEST ( PackedMaterialData  ,
UnknownNamesAndWrongTypesLeaveBufferUnchanged   
)

Definition at line 105 of file material_types_tests.cpp.

106{
107 auto material = MakeMaterial();
108 const auto before = material.buffer;
109 material.SetMaterialFloat("Missing", 1);
110 EXPECT_EQ(material.buffer, before);
111 material.SetMaterialVec2("Missing", glm::vec2(2));
112 EXPECT_EQ(material.buffer, before);
113 material.SetMaterialVec3("Missing", glm::vec3(3));
114 EXPECT_EQ(material.buffer, before);
115 material.SetMaterialVec4("Missing", glm::vec4(4));
116 EXPECT_EQ(material.buffer, before);
117 material.SetMaterialFloat("Color", 1);
118 EXPECT_EQ(material.buffer, before);
119 material.SetMaterialVec2("Triple", glm::vec2(2));
120 EXPECT_EQ(material.buffer, before);
121 material.SetMaterialVec3("Pair", glm::vec3(3));
122 EXPECT_EQ(material.buffer, before);
123 material.SetMaterialVec4("Scalar", glm::vec4(4));
124 EXPECT_EQ(material.buffer, before);
125}

◆ TEST() [5/7]

TEST ( PackedMaterialData  ,
Vec2WritesOnlyItsLayoutSlot   
)

Definition at line 78 of file material_types_tests.cpp.

79{
80 auto material = MakeMaterial();
81 const auto before = material.buffer;
82 material.SetMaterialVec2("Pair", glm::vec2(1.25f, -2.5f));
83 ExpectNear(ReadValue<glm::vec2>(material, 16), glm::vec2(1.25f, -2.5f));
84 ExpectUnchangedOutside(material, before, 16, sizeof(glm::vec2));
85}
void ExpectNear(const glm::vec< N, T, Q > &actual, const glm::vec< N, T, Q > &expected, float tolerance=1e-5f)

◆ TEST() [6/7]

TEST ( PackedMaterialData  ,
Vec3WritesOnlyItsLayoutSlot   
)

Definition at line 87 of file material_types_tests.cpp.

88{
89 auto material = MakeMaterial();
90 const auto before = material.buffer;
91 material.SetMaterialVec3("Triple", glm::vec3(1.25f, -2.5f, 3.75f));
92 ExpectNear(ReadValue<glm::vec3>(material, 32), glm::vec3(1.25f, -2.5f, 3.75f));
93 ExpectUnchangedOutside(material, before, 32, sizeof(glm::vec3));
94}

◆ TEST() [7/7]

TEST ( PackedMaterialData  ,
Vec4WritesOnlyItsLayoutSlot   
)

Definition at line 96 of file material_types_tests.cpp.

97{
98 auto material = MakeMaterial();
99 const auto before = material.buffer;
100 material.SetMaterialVec4("Color", glm::vec4(1.25f, -2.5f, 3.75f, 0.5f));
101 ExpectNear(ReadValue<glm::vec4>(material, 64), glm::vec4(1.25f, -2.5f, 3.75f, 0.5f));
102 ExpectUnchangedOutside(material, before, 64, sizeof(glm::vec4));
103}